Производительность Zabbix

Схема работы забикс относительно сложна, как впрочем и у любой другой системы мониторинга. В самом простом случае заббикс включает в себя такие компоненты

  • Сервер

  • Клиент

  • База данных

  • Веб интерфейс

Самым уязвимым местом забикса является база данных, которая предъявляет достаточно серьезные требования к дисковой подсистеме и другим компонентам аппаратного обеспечения. С увеличением количества элементов мониторинга и уменьшением временных промежутков между сборами данных, количество оппераций ввода вывода увеличивается. Самая производительная и отказоустойчивая схема работы zabbix была найдена мной в интернете и включает в себя так же дублирующие серверы для увеличения отказоустойчивости, а так же заббикс прокси серверы, собирающие информацию с хостов в том случае, если один сервер не справляется. Схема изображена на рисунке:

Люди советуют так же не экономить на оперативной памяти, ее можно использовать для хренения кешированных объектов, чтобы снизить нагрузку на жесткий диск. Чтобы расчитать производительность нужно обладать реальными цифрами. Цифры можно взять из базы данных, но чтобы облегчить жизнь пользователям, в заббиксе придумали такую вот панель

Данная панель берет значения из БД и выводит их в понятном для администратора виде прямо на главной стартовой странице web интерфейса. Из панели на картинке видно, что всего у нас мониторится 274 устройства, для них создано аж 75 шаблонов. С этих устройств мы получаем почти 39 тысяч параметров которые затем записываем в базу данных, так же 299 параметров по какой-либо причине нам не нужны сейчас, мы их не считываем и не записыаем и 1200 параметров мы хотели бы иметь, но не можем их получить, потому что устройства почему-то их не отдают.

На все эти 359 устройства навешены триггеры (оповещения о проблемах и других событиях), и в самом плохом варианте, если они все сработают, админитсраторы получат 5638 писем и еще столько же о восстановлении в нормальное состояние.

Если количество элементов данных мы можем посмотреть в mysql таблице запросом select count(*) .... , то быстродействие сервера считается как-то по другому, я думаю нужно сопоставить все элементы и интервалы их обновления с помощью какой-то супер формулы. К счастью zabbix делает это за нас и выводит в поле Требуемое быстродействие сервера, новые значения в секунду. Данная цифра пишет, сколько значений заббикс сервер должен успевать получать и записывать, чтобы работать нормально. Взглянем на график производительности сервера, среднее значение 192, что достаточно близко к 200 но немного не дотягивает. Нужно учитывать, что 200 значений в секунду нужно записывать при любых обстоятельствах, иначе будут создаваться очереди параметров, которые сбрасываются в опперативную память, а если не помещаются в нее то записываются на диск. Итак, мы имеем замкнутый круг: пользователь заходит в web интерфейс и пытается просмотреть график, база данный и так не успевает записать все полученные значения на диск, а это ей еще приходится лезть в файлы размером over 10GB и делать из них выборку, разумеется операция не из дешевых даже при созданных индексах в бд (индексы занимают 1/3 базы). В это время zabbix сервер понимает, что база не справляется и откладывает данные для записи в опперативку, но система понимает что в оперативная память тоже заканчивается и принимает решение сбросить данные в swap, который обычно расположен на том же физическом диске, что и БД zabbix. В итоге мы имеем низкую производительность дисковой подсистемы из-за того, что данные не умещаются в оперативе и скидываются на диск, а не умещаются в опперативе они из-за низкой производительности дисковой подсистемы.

Когда кто-то смотрит графики, мы наблюдаем громадное увеличение очереди и сильнейшие тормоза. Но нужно отдать должное заббиксу, он все же записывает параметры, хоть и не реально тупит.

Что нужно для бесперебойной работы zabbix

Итак, что же нужно для работы zabbix без остановок:

  1. Постоянно включенный сервер

  2. Работающую сеть между zabbix сервером и опрашиваемым оборудованием

  3. Жесткий диск, способный вместить в себя все данные со всех узлов, находящихся на мониторинге

Что нужно для комфортной работы zabbix без тормозов

Чтобы работать без тормозов нужно следующее:

  1. Нужно чтобы зелененькая линия была больше цифры Требуемое быстродействие сервера, новые значения в секунду

    1. Нужно быстро работающую базу данных

      1. Нужно быструю дисковую подсистему, желательно с RAID 10

      2. Нужно быстрый процессор, желательно не с одним и не с двумя ядрами

    2. Нужно много оперативной памяти для возможности кеширования данных

  2. Нужно как можно реже опрашивать оборудование для снижения нагрузки на базу данных

Как выбрать сервер

Можно довериться данной таблице, с оффициального сервера, но могу так же оффициально заявить, что слишком мало памяти, мало памяти 2GB для 500 устройств. С другой стороны нужно так же учитывать сколько элементов данных находится в каждом узле сети.

Имя

Платформа

ЦПУ/Память

База данных

Количество контролируемых узлов сети

Маленькая

Ubuntu Linux

PII 350MHz 256MB

MySQL MyISAM

20

Средняя

Ubuntu Linux 64 bit

AMD Athlon 3200+ 2GB

MySQL InnoDB

500

Большая

Ubuntu Linux 64 bit

Intel Dual Core 6400 4GB

RAID10 MySQL InnoDB или PostgreSQL

>1000

Очень большая

RedHat Enterprise

Intel Xeon 2xCPU 8GB

Fast RAID10 MySQL InnoDB, PostgreSQL или Oracle

>10000

 

Категории: