image
Недавно стало очевидно, что наш заббикс не справляется с нагрузкой. Появились частые ложные срабатывания, в графиках появились провалы. Причина оказалась простой, очередь в zabbix выросла до неприличных размеров и составляла порядка 2000. Было очевидное решение — увеличение инстансов, но ресурсы не позволяли сделать этого и как стало очевидно в дальнейшем это было бы плохим решением. О том как мы решили эту проблему ниже. Забегая вперед: проблема удачно решена и очередь сократилась до 30-40 в среднем.



image

Как видно на картинке было 3 переломных момента, собственно как и две проблемы. Вот о них подробнее:
1 проблема, это хосты которые уже давно не активны, но не удалены. Их опрос занимает время и ресурсы. Выявить их было несложно. У нас мониторятся хосты только с агентами. Все хосты у которых агент был недоступен, были помечены как проблемные. Дальше проведен анализ и удаленные хосты были удалены до конца, а для остальных исправлены правила firewall. Но оказалось не все так просто. В процессе поиска устаревших хостов было замечено несколько дублирующихся хостов. Под дублирующимися хостами мы понимаем, полностью идентичные хосты, с одним ID в базе. Причину дублирования так и не удалось выяснить, был создан баг в zabbix, но, к сожалению, реакции на момент написания статьи не последовало. А вот для поиска дублирующихся хостов был сделан запрос прямо в базу:
select host, Count(host) as Count  from hosts  group by host having count(host)>1;

Данный запрос возвращает список идентичных хостов, которых более одного.

2 проблема была из той же области. Она заключалась в большом количестве уже не актуальных items, оставшихся от старых шаблонов. Для решения этого момента, были проанализированы все items со статусом not supported и удалены лишние.

Ну и 3 финальный аккорд — это шаблон Linux. Типы проверок были настроены на использование zabbix active agent. Чем он отличается от обычных проверок хорошо описано в документации. Когда проверок очень много, они начинают потреблять ресурсы сервера. Для шаблона оперативно был изменен c zabbix agent (active) на zabbix agent.

В итоге этих трех простых действий очередь была сокращена с более чем 3 К до 30-40.

P.S.: Еще одним удобным инструментом анализа нагрузки на zabbix оказался встроенный в zabbix, анализатор времени получения данных. Посмотреть его можно: Администрирование -> Очередь. Логика простая: чем больше время получения данных, тем больше нагрузка на сервер.

В дальнейших планах есть изменение СУБД с mysql на postgresql. По результатам мы обязательно поделимся с вами, как мы это делали и какие результаты получили.

Автор: системный администратор компании Magvai69

Комментарии (14)


  1. martin74ua
    18.11.2015 12:38
    +4

    Если не секрет — в чем заключалась оптимизация то? Все что вы сделали — просто навели порядок в конфигурации забикса. Это как бы подразумевается ;)


  1. yosemity
    18.11.2015 13:14

    Вообще непонятно о чем статья. «zabbix agent» и так выставлен по умолчанию. Т.е. вы сознательно изменили настройку на отличную от дефолной, потом начало тормозить и вы вернули обратно? Далее. В заббиксе гибкие правила дискавери. У меня хосты добавляются автоматически и удаляются тоже автоматически, если их давно (месяц) не видно.
    Заббикс, как и любой инструмент нужно настраивать. В статье описаны очевидные вещи, которые выполняются в первую очередь. Про оптимизацию ни слова.


    1. akhaustov
      18.11.2015 15:58

      Да, заголовок слишком громкий, виноват.


  1. evg_krsk
    18.11.2015 15:05

    Какой номер бага про дубликаты, если не секрет?


    1. akhaustov
      18.11.2015 16:34

      1. evg_krsk
        18.11.2015 16:56

        Благодарю, интересно.


  1. evg_krsk
    18.11.2015 15:12

    Честно говоря, тоже немного разочарован. Ожидал увидеть, что вы проанализируете загрузку заббикса (данные внутренних проверок) и по результату расширите узкие места, а вы просто порядок навели. А заменой активного агента на пассивного, наоборот, как я понимаю, увеличили загрузку сервера.

    Сколько у вас NVPS?


    1. akhaustov
      18.11.2015 16:30

      Около 1.5 тыс.


  1. sohmstyle
    18.11.2015 15:52

    Хотелось бы услышать, чем вызвано желание сменить MySQL на PostgreSQL?


    1. akhaustov
      18.11.2015 16:08

      По опыту работы с веб проектами, postgesql стабильнее и быстрее. Хотим попробовать.


      1. evilbot
        18.11.2015 16:19

        А InnoDB на TokuDB поменять не хотите сначала?


        1. akhaustov
          18.11.2015 16:33

          Поможет?


          1. evilbot
            18.11.2015 17:49

            На больших объемах данных некоторым помогает.


  1. mobilesfinks
    20.11.2015 11:57

    Данный запрос возвращает список идентичных хостов, которых более одного.

    А как решили то проблему?
    У меня тоже есть 2 копии одного хоста. Переехал на постгрес. Удалить эти хосты не получается. Отсоединить и очистить шаблон так же не получается. У вас были подобные проблемы?