FastNetMon

Saturday, 12 December 2009

Why Zabbix suxx?

Да, я уверен, что за регулярную критики всего и вся меня когда-нибудь поймают и повесют на площади, но увы, молчать не могу :) На всякий случай краткий дисклеймер - мониторинг мною используется исключительно для контроля за состоянием всевозможных хостинг-сервисов (Apache, Postfix, Nginx и проч.), а также для контроля здоровья самих серверов (la, свободное место, состояние рейдов и проч.). Да, критиковать я сейчас буду стандартный шаблон Заббикса 1.6 Template_Linux а также сам подход и прожорливость сервера Заббикса.

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

Ну а основная критика в сторону Заббикса будет по причине, что за два года использования толк от него, конечно, был, но в 99% проблемы, которые он обнаруживал были банальнейшие - закончилось место на диске либо заклинило процесс (бывало с Апачем либо Nginx). А все остальные проблемы более сложного плана - заклинило Postfix / переполнились очереди почтовика / развалился soft raid / hardware raid, началась DDOS атака на сервер / завис какой-либо процесс (но при этом он наличствует в памяти и отображается в ps aux) / кто-то перебирает пароли к серверу / произошел резкий всплеск подключений к серверу / потребляется слишком большой трафик и проч.

Негатива же еще больше - не считая огромной нагрузки на Zabbix сервер (простите, но 35 серверов на мониторинге складывали хорошую 4х головую машинку на SAS винтах, что не особенно гуд ) это - куча уведомлений от Заббикса (ага, кончилось место? Огребите 16 писем! И не важно, что у вас один раздел на весь диск, получите дубль для каждого раздела!). Перезапустили Апача и время перезапуска совпало с измерением Заббикса? Тоже письмо получите! А когда этих писем по сотне штук в день это начинает задалбливать дико, причем в почти все уведомления фактически ложны и только отвлекают как ненужный спам. Конечно, путем нехитрых телодвижений все критические сервисы добавляются, а лишний спам исключается.

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

Ну а далее, чтоб обсуждение не выглядело голословным предметная критика Заббиксового шаблона под Линукс.

Процессор
Template_Linux:CPU idle time (avg1)
Template_Linux:CPU nice time (avg1)
Template_Linux:CPU system time (avg1)
Template_Linux:CPU wait time (avg1)
Template_Linux:CPU user time (avg1)
Template_Linux:Processor load
Template_Linux:Processor load15
Template_Linux:Processor load5

Ну тут более-менее набор метрик полон, разве что текущей частоты процессора не хватает и той особенности, что процессоров в системе обычно (да да, 2009 год! обычно больше 2х, иногда больше четырех и (внимание!) и даже 8ми, что все же надо было бы учесть даже для оценки "масштабируемости" ПО на мультипроцессорные системы и эффективности утилизации процессоров).

Свободное место на диске в байтах
Template_Linux:Free disk space on /
Template_Linux:Free disk space on /home
Template_Linux:Free disk space on /opt
Template_Linux:Free disk space on /tmp
Template_Linux:Free disk space on /usr
Template_Linux:Free disk space on /var

Свбодное место на диске в процентах
Template_Linux:Free disk space on /home in %
Template_Linux:Free disk space on /opt in %
Template_Linux:Free disk space on / in %
Template_Linux:Free disk space on /tmp in %
Template_Linux:Free disk space on /usr in %
Template_Linux:Free disk space on /var in %

Суммарное место на диске в байтах
Template_Linux:Total disk space on /home
Template_Linux:Total disk space on /opt
Template_Linux:Total disk space on /tmp
Template_Linux:Total disk space on /
Template_Linux:Total disk space on /usr

Занятое место на диске в байтах
Template_Linux:Used disk space on /home
Template_Linux:Used disk space on /opt
Template_Linux:Used disk space on /tmp
Template_Linux:Used disk space on /
Template_Linux:Used disk space on /usr
Template_Linux:Used disk space on /var

Занятое место на диске в процентах
Template_Linux:Used disk space on /opt in %
Template_Linux:Used disk space on / in %
Template_Linux:Used disk space on /tmp in %
Template_Linux:Used disk space on /usr in %
Template_Linux:Used disk space on /var in %

Ну тут, простите, просто клиника. Может еще 64 поля с разными коэффициентами масштабирования ? Там в байтах, килобайтах, мегабайтах и под каждый датчик! Обязательно отдельный! Кому как, но в своей жизни я систем, у которых все до такой степени раскидано по разным дискам не видел ни разу. Даже ОЧЕНЬ редко отделен только /var и-то, если на сервере мощная СУБД либо крупный MTA (что само по себе намекает, что это далеко не стандартна конфигурация).

inodes
Template_Linux:Free number of inodes on /
Template_Linux:Free number of inodes on /home
Template_Linux:Free number of inodes on /opt
Template_Linux:Free number of inodes on /tmp
Template_Linux:Free number of inodes on /usr

inodes в %
Template_Linux:Free number of inodes on /home in %
Template_Linux:Free number of inodes on /opt in %
Template_Linux:Free number of inodes on / in %
Template_Linux:Free number of inodes on /tmp in %
Template_Linux:Free number of inodes on /usr

inodes общее число
Template_Linux:Total number of inodes on /home
Template_Linux:Total number of inodes on /opt
Template_Linux:Total number of inodes on /tmp
Template_Linux:Total number of inodes on /
Template_Linux:Total number of inodes on /usr

А иноды обделили, только суммарное число в шутках и свободные в штуках и процентах, так что непорядок, непорядок.

swap
Template_Linux:Free swap space
Template_Linux:Free swap space in %
Template_Linux:Total swap space

Докопаться не до чего, все нормально.


Трафик
Template_Linux:Incoming traffic on interface eth0
Template_Linux:Incoming traffic on interface eth1
Template_Linux:Incoming traffic on interface lo

Template_Linux:Outgoing traffic on interface eth0
Template_Linux:Outgoing traffic on interface eth1
Template_Linux:Outgoing traffic on interface lo

Ну тут тоже все более-менее, правда eth0 обычно veth зовут на всяких там виртуалках.

Память

Template_Linux:Buffers memory
Template_Linux:Cached memory
Template_Linux:Free memory
Template_Linux:Total memory
Template_Linux:Shared memory

Ей не повезло больше всех, из как минимум 30 полей в /proc/meminfo выжили только 4, что как бэ намекает.

Процессы
Template_Linux:Maximum number of processes
Template_Linux:Number of processes
Template_Linux:Number of running processes

Ну тоже ничего так в целом, правда случаев, когда система бы упиралась в "max number processes" я не видел ни разу (разве что на OpenVZ VE).

Число открытых файлов
Template_Linux:Maximum number of opened files

Это, конечно, круто, но вот почему нету числа открытых в данный (которое -nr в peroc fs) момент файлов и не учитываются метрики ulimit (хотя бы только для рута или system wide)?

Число подключенных пользователей
Template_Linux:Number of users connected

Это со времен мейнфреймов, ага? :) Хотя для тех, кто предоставляет SSH клиентам (что само по себе патология на Линуксе, а кто не согласен - идет читать про fork bomb) фича может и полезная.


Мониторинг состояния сервисов
Template_Linux:FTP server is running
Template_Linux:IMAP server is running
Template_Linux:News (NNTP) server is running
Template_Linux:Number of running processes zabbix_agentd
Template_Linux:Number of running processes zabbix_server
Template_Linux:Number of running processes apache
Template_Linux:Number of running processes inetd
Template_Linux:Number of running processes mysqld
Template_Linux:Number of running processes sshd
Template_Linux:Number of running processes syslogd
Template_Linux:POP3 server is running
Template_Linux:Email (SMTP) server is running
Template_Linux:WEB (HTTP) server is running
Template_Linux:SSH server is running

Тут была предпринята очень смелая попытка мониторинга сервисов на основе числа запущенных процессов сервиса либо на основе отклика по заданному порту. Идея хорошая, годная. Но вот NNTP я ни разу в своей жизини не видел на потребительских системах и нафига он сдался в default конфигурации - я понятия не имею.

Security in mind

Template_Linux:Checksum of /etc/inetd.conf
Template_Linux:Checksum of /etc/passwd
Template_Linux:Checksum of /etc/services
Template_Linux:Checksum of /usr/bin/ssh
Template_Linux:Checksum of /usr/sbin/sshd
Template_Linux:Checksum of /vmlinuz

Тут была попытка добавить системе безопасности путем контроля ключевых сумм критичных файлов. Но, к слову, современные Линуксы ядро не хранят в /vmlinuz, а используют архаичную папку /boot. Да и системы обычно не так ломают - случаи взлома через подмену ssh на взломанный единичны, но все же подход имеет право на жизнь.

Заботимся об окружающей среде
Template_Linux:Temperature of CPU 1of2
Template_Linux:Temperature of CPU 2of2
Template_Linux:Temperature of mainboard

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

Логи

Template_Linux:Size of /var/log/syslog

Юмора я тут не понял, сислог лежит по данному пути только у Debian, а у RHEL/CentOS он уложен в /var/log/messages.

Прочее
Template_Linux:Host boot time
Template_Linux:Host information
Template_Linux:Host local time
Template_Linux:Host name
Template_Linux:Host status
Template_Linux:Host uptime (in sec)
Template_Linux:Version of zabbix_agent(d) running
Template_Linux:Ping to the server (TCP)

Ну тут можно и не придираться, все так или иначе необходимо.

А чего не хватает собственно? По большей части "чистоты" (отсутствия кучи ненужных датчиков) и адаптируемости (тоже самое отдельные шаблоны для Дебияна и Центоса - сугубо по причине различного названия сервисов и путей), датчиков с булевскими ответами (цел ли рейд? нет ли проблем с диском?), датчиков с "расширенными подробностями", например - disk_info выдает инфу о всех дисках в системе, а не только о запрограммированных (/hda /sda). Также хочется service-oriented (у вас апач? Можно отобразить число одновременных соединений. У Вас мускул? Можно показать число обработанных коннектов. У Вас постфикс (ну или любой другой почтовик) ? Можно отобразить размеры очередей) датчиков. А также очень хочется эвристики в оценке состояния системы и системы предложения решений - например, если удаленная система Линукс и там закончились иноды, то можно показать вариант определить, где папка с кучей айнодово и как их удалить или что делать если кончилось место или что делать, если исчерпан лимит открытых файлов?

Также, в мониторинг обязан быть интегрирован парсер логов (не такой жручий как logwatch, но что-то в таком духе) для таких показателей как - число попыток входа по SSH, число писем принятых почтовиком и проч. Ну и еще - очень хотелось бы "легковесности" этого решения, ибо ни датчики Заббикса ни сервер не отличаются легкостью.

Тоже самое относится к "Service Discovery" (в миру - удаленными проверками, проверяющими доступности сервиса извне) - они не работают (число ложных срабатываний огромно просто) и почти не настраиваются.

Ну и резюмируя все выше сказанно могу сказать что в контексте мониторинга и Линукса, Заббикс - это очень крутое и удобное средство сбора и визуализации данных, но никак не система мониторинга серверов. А какое мое решение? Скорее всего, сейчас возьмусь рисовать свою простенькую систему мониторинга на Python+MySQL+RRD и Clickatell для sms уведомлений :)

27 comments :

  1. А я знал что кто-то это и напишет :)

    ReplyDelete
  2. А все остальные проблемы более сложного плана - заклинило Postfix
    / переполнились очереди почтовика

    mailq(postfix,exim,sendmail),exipick(exim), не слышали про такую команду?

    / развалился soft raid / hardware raid


    Для hardware ( у меня только LSI ), есть утилита megarc. Прикрутить ее 15 минут делов.


    началась DDOS атака на сервер / завис какой-либо процесс (но при этом он наличствует в памяти и отображается в ps aux) / кто-то перебирает пароли к серверу /
    произошел резкий всплеск подключений к серверу /

    Не проблема

    потребляется слишком большой трафик и проч.

    Немножечко мозгов и пишем тригер.


    (простите, но 35 серверов на мониторинге складывали хорошую 4х головую машинку на SAS винтах, что не особенно гуд )
    Простите, но про StartPollers, StartTrappers... мы не слышали? А про настройку/тюнинг БД мы тоже первый раз слышим?

    куча уведомлений от Заббикса (ага, кончилось место? Огребите 16 писем!
    А правильно настроить триггер+действия?

    Идеальный мониторинг, какой он?
    Таких не существует.

    Ну а далее, чтоб обсуждение не выглядело голословным предметная критика Заббиксового шаблона под Линукс.

    Шаблоны существуют для примера.

    ReplyDelete
  3. Со всем перечисленным согласен.

    Да, очереди Postfix мониторятся очень легко - самый удобный способ, который нашел получился примерно вот такой - http://phpsuxx.blogspot.com/2009/06/postfix.html

    Ну фактически, тут достаточно парсера /proc/mdstat, который опять же писать самому.

    "потребляется слишком большой трафик и проч"- при SYN флуде не будет трафика, при атаке на апача типа Slow Lori тоже да и при обычном MaxClient тоже особенно много трафика не нужно :) Ну а вообще, это почти неформализуемый пункт и его автоматизировать не обязательно, это я размечтался.

    Вообще, моя критика как таковая не к Заббиксу, как к системе, а к его "поставке". Те же mdstat, Postfix и проч уже много лет де-факто и де-юро есть во всех дистрибутивах и отсутствие плагина для них в стандартной поставке мягко говоря удручает и портит все впечатление от основного софта.

    Но так или иначе, время позволяет сделать свой целостный и угодный во всем веловипедомониторинг с поэтессами и преферансом :)

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete
  5. Вообще, моя критика как таковая не к Заббиксу, как к системе, а к его "поставке". Те же mdstat, Postfix и проч уже много лет де-факто и де-юро есть во всех дистрибутивах и отсутствие плагина для них в стандартной поставке мягко говоря удручает и портит все впечатление от основного софта.

    Я тестировал, порядка 20 систем мониторинга, но выбор все равно пал на zabbix. То что в стандартной поставке нету куча плагинов, в других системах все еще печальнее. Стандартные шаблоны - это пример, открыв мануал, мы увидим огромнейшее количеств способов сбора инфы. Стандартные шаблоны - это не главное, что должно быть в системе мониторинга. Таких постороений как, тригер+действия, я не встретил ни в одной системе.


    Но так или иначе, время позволяет сделать свой целостный и угодный во всем веловипедомониторинг с поэтессами и преферансом :)

    Я согласен, но в zabbix-е это делается очень просто и прозрачно.
    Плюс ко всему - заббикс очень хорошо себя показал, как распределенная система мониторинга

    ReplyDelete
  6. "Я тестировал, порядка 20 систем мониторинга, но выбор все равно пал на zabbix." - прошли почти тот же самый путь, из всей кучи мониторингов приглянулись только Nagios (который, впрочем, сразу же ушел в обратном направлении за свои конфиги и сложность инсталляции, хотя подход с nrpe/ncsa очень крут, но все портит подход в реализации плагинов отдельными аппликейшенами, что далеко не гуд + траблы с передачей списков / хешей на сервер) и munin.

    У второго мне идеология нравится и хороший набор стандартных плагинов, но не нравится дикая разношертность его "сторонних плагинов", которые написаны по большей части мягко говоря не лучшим образом (вопрос даже не в ЯП, а в то, что, например, данные доступные из /proc fs Линукса за каким-то лешим вытряхиваются из различного нестандартного софта).

    Так что как появится время представить в юзер-френдли виде мою поделку, обязательно выложу, а наднях буквально постараюсь аннонсировать список фич

    ReplyDelete
  7. Забавно.
    NNTP на пользовательских системах автор не видел, а вот зато рейд и виртуалки должны быть на каждом.

    Про производительность - смеялась. Заббикс вполне тянет уровень немаленького ISP.

    Если автор хотел решение "из коробки", то за него нужно платить. А чтобы и на халяву, и ничего не надо было настраивать - это нонсенс.

    ReplyDelete
  8. Забавно.
    NNTP на пользовательских системах автор не видел, а вот зато рейд и виртуалки должны быть на каждом.

    У нас специфика просто такая у хостеров :) Машины без рейда крайняя редкость.

    Про производительность - смеялась. Заббикс вполне тянет уровень немаленького ISP.

    У меня на 25 машинах с каждой по 50 метрик он почти целиком загружал исключительно базой данных SAS 15к в рейде зеркало. Настройки были "искаропки", но тем не менее это слишком. Такая нагрузка для неосновного, а лишь сопроводительного софта, имхо, крутовата.

    Если автор хотел решение "из коробки", то за него нужно платить. А чтобы и на халяву, и ничего не надо было настраивать - это нонсенс.

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

    ReplyDelete
  9. Т.е. заббикс оцтой потому что у автора не хватило рук чтобы убрать лишние уведомления? Или чтоб настроить мониторинг критических служб. завис постфикс? а был ли монитор для постфикса? он не сработал? если нет своих мозгов чтобы сделать мониторинг - найми человека который сделает, напишет скрипт, настроит правильно уведомления.

    ReplyDelete
  10. Толсто. Я многократно указал, что Zabbix НЕ подходит даже на роль платформы (к какой писать скрипты), а вы этого не прочли, значит читали невнимательно.

    ReplyDelete
  11. Под фрю есть monit, легкая платформа для мониторинга. Но у нее не будет такой централизованности.
    Про munin.. может быть, это ради совместимости? Не у всех линь, у меня часть серверов на фре, у некоторых еще и на винде..

    ReplyDelete
  12. Возможно, но он мне не особенно нравится на роль "удаленного мониторинга".

    ReplyDelete
  13. Все озвученные претензии - это претензии к шаблонам в базовой поставке. Ни одна система не умеет думать за хозяина, поэтому и претензии не принимаются. На каждую претензию даже отвечать не хочется, потому что всё исправимо, иногда тяжело, иногда - очень легко.

    Работаю в компании-провайдере, в отделе мониторинга. У нас Zabbix ловит и отказы рейд-массивов (среди прочего) на полусотне серверов и падёж коммутаторов и исчерпание пулов IP-адресов и высокий LA и критичную загрузку интерфейсов и отсутствие трафика и пропадание клиентов и падение сервисов и логи телефонных станций и уровни оптического сигнала в сети КТВ и ловит порезы витой пары (постоянно ловим любителей украсть витушку) и отказы видеокамер и открытие дверей в узлах связи и температуру и ИБП и исчерпание места на дисках и высокую очередь на почтовиках... А ещё он бэкапит конфиги коммутаторов и точек доступа. Просто устану перечислять всё то, чему можно научить Zabbix. Ложные срабатывания бывают, но очень редко и нужно включать голову и тут же корректировать триггеры. В сочетании с самописным дашбордом, который умеет делать свёртку топологии, группировку триггеров, оценивать серьёзность аварии, фильтровать по номерам кварталов, выводить номера телефонов ЖЭУ и управляющих компаний, заводить процессы в CRM'е, вообще можно творить чудеса.

    ReplyDelete
    Replies
    1. Есть системы которые умею делать это за хозяина.
      Берешь немного денег, несешь в Zabbix, тратишь на платный саппорт - "большие железные человекоподобные роботы" кастомизируют, оптимизируют и, частично, думают за хозяина в соответствии с ТЗ )

      Delete
  14. Поддержу Hober'а, все наезды на стандартные шаблоны, которые при наличии прямых рук подгоняются под конкретные условия.
    По поводу нагрузки CPU: мониторится 30 систем, причем zabbix стоит на виртуалке xen, а на хосте еще 7 виртуалок. Никаких проблем не наблюдаю. Автору рекомендую почитать документацию по поводу выбора движка БД, где четко сказано про повышенную нагрузку при использовании MyISAM (в полтора раза выше). Ну и не забывать про необходимость тюнинга параметров mysql. Короче опять вернулись к теме прямоты рук :)

    ReplyDelete
  15. Кстати, настройки самого сервера и агента тоже иногда имеет смысл менять.

    ReplyDelete
  16. 40 серверов, более 100 метрик с каждого плюс триггеры. Данные храняться месяц, подробные неделю. База данных постгри. Сервер Supermicro X6DA8 2 двухголовых Xeon 8Gb мозгов. Под базу WD Velociraptor 300Gb. Идет оповещение на смс. Нагрузка на сервер 1-1,5 LA, так это еще и почтовик и шлюз и куча всего.

    ReplyDelete
    Replies
    1. Да, забыл добавить юзаю оную систему мониторинга уже 4 года - почти 5. Так что опять /dev/hands and /dev/brain

      Delete
  17. Какие все злые :) Zabbix где-то в районе версии 1.9-2 апплировался в моих глазах и стал работать приемлемо. В целом, на мой взгляд, это почти идеальная система мониторинга, но ряд очень специфичных фич, конечно, напрягает, но напильником пилится почти все.

    Алсо - нагиос говно, заббикс форева :)

    P.S. 200+ узлов в мониторинге, 8-000 айтемов.

    ReplyDelete
    Replies
    1. +1, уже на Zabbix 3.0 перешёл
      заббикс форева!

      Delete
  18. это всё написано явно не видя zenoss-а. вот zenoss - это ад. :)

    ReplyDelete
  19. >> Опыт использования Заббикса (глубоко, на полусотне серверов, с кастомными метриками, уведомления, кучей триггеров и проч.) у меня пару лет, так что заранее прошу избегать к комментариях упреков в том, что я его не понял :)

    Из описанного делаю вывод, что это не "опыт использования", а просто "стоял zabbix". Откровенно говоря в посте вообще не описаны проблемы системы.

    PS: раз уж пошли пузомерки - дроплет DO, 40$/mo, LA 0.4, 150 хостов, 6500 элементов, 1600 триггеров. Mysql жрет много места т.к. 14 месяцев храним архив.

    ReplyDelete
    Replies
    1. Number of hosts (monitored/not monitored/templates) 231
      Number of items (monitored/disabled/not supported) 34436
      Number of triggers (enabled/disabled) [problem/ok] 11852

      :)

      Delete
    2. Виртуалка
      Zabbix 2.4
      4 GB ram
      2Ghz 1 CPU

      Number of hosts (enabled/disabled/templates) 367 246 / 3 / 118
      Number of items (enabled/disabled/not supported) 29971 24177 / 1561 / 4233
      Number of triggers (enabled/disabled [problem/ok]) 23752 16273 / 7479 [502 / 15771]

      Планируем обновление сервера так как медленно графики показывает.

      А так работает как часы.

      Delete
  20. Сколько баттхерта у заббикс юзверей )) и неконструктивной критики про руки и моск)
    А Павлу спасибо за интересные статьи )

    ReplyDelete
    Replies
    1. Павел сейчас сам юзает заббикс и забавляется баттхертом, да =) Спасибо!

      Delete

Note: only a member of this blog may post a comment.