Да, я уверен, что за регулярную критики всего и вся меня когда-нибудь поймают и повесют на площади, но увы, молчать не могу :) На всякий случай краткий дисклеймер - мониторинг мною используется исключительно для контроля за состоянием всевозможных хостинг-сервисов (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 уведомлений :)