Добавить в корзинуПозвонить
Найти в Дзене

Kerio Connect под Zabbix 7 без агентов

Керио ставят как почтовый сервер в СМБ и среднем бизнесе больше двадцати лет — и всё это время с мониторингом его приложенческого слоя была дыра. У одного нашего клиента из-за этого случился продолжительный простой SMTP: антивирусные базы сломались после обновления, входящая очередь росла всю ночь, и до утренней проверки этого никто не видел. Шаблон для Zabbix, который бы вытаскивал эти метрики прямо из Kerio, в интернете отсутствует — мы написали свой и выложили его под MIT. На официальной странице интеграций Zabbix для Kerio есть ровно один шаблон — для Kerio Control, маршрутизатора, через SNMP. Для почтового Kerio Connect официальной интеграции там нет — вместо этого предлагается заказать кастомную разработку. Собственная документация GFI описывает мониторинг редакции Multi-Server через SNMP и Puppet, но Multi-Server — отдельная редакция и доступна не во всех лицензиях. SNMP-интерфейс в самом Kerio Connect не реализован на уровне продукта. Единственный полностью документированный ка
Оглавление

Керио ставят как почтовый сервер в СМБ и среднем бизнесе больше двадцати лет — и всё это время с мониторингом его приложенческого слоя была дыра. У одного нашего клиента из-за этого случился продолжительный простой SMTP: антивирусные базы сломались после обновления, входящая очередь росла всю ночь, и до утренней проверки этого никто не видел. Шаблон для Zabbix, который бы вытаскивал эти метрики прямо из Kerio, в интернете отсутствует — мы написали свой и выложили его под MIT.

Почему готовых решений нет

На официальной странице интеграций Zabbix для Kerio есть ровно один шаблон — для Kerio Control, маршрутизатора, через SNMP. Для почтового Kerio Connect официальной интеграции там нет — вместо этого предлагается заказать кастомную разработку. Собственная документация GFI описывает мониторинг редакции Multi-Server через SNMP и Puppet, но Multi-Server — отдельная редакция и доступна не во всех лицензиях. SNMP-интерфейс в самом Kerio Connect не реализован на уровне продукта.

Единственный полностью документированный канал статистики у Kerio Connect — JSON-RPC Admin API на порту 4040, тот же интерфейс, через который работает веб-консоль администратора. Он отдаёт структурированный JSON, не требует ни SNMP, ни Puppet, ни доступа к файловой системе сервера. На этом API мы построили собственный шаблон под Zabbix 7.

Архитектура: один опрос API за цикл

Главный принцип шаблона — одна сессия в минуту. Если каждая из 24 метрик ходила бы в API отдельным запросом, мы получили бы лавину логинов и быстрое исчерпание сессий на стороне Kerio. Вместо этого в шаблоне один master-айтем kerio.api.master с интервалом 1 минута и таймаутом 30 секунд.

Он дёргает 4 метода JSON-RPC в одном сеансе (login → 4 вызова → logout): Statistics.get, Services.get, ProductRegistration.getFullStatus, Server.getVersion. Из этого JSON 24 зависимых айтема вытаскивают значения через JSONPath. Параллельно работает правило LLD kerio.services.discovery: для каждого обнаруженного сервиса (SMTP, IMAP, POP3, Submission, LDAP, Webmail, XMPP, антивирус, антиспам) создаётся айтем-прототип статуса.

Триггеры с каскадным подавлением

Шаблон приносит семь триггеров верхнего уровня плюс прототипы по LLD — на типичной инсталляции выходит около девяти активных алертов. Корневой — nodata(kerio.api.master, 5m). Все остальные объявлены dependent на корневой, поэтому при сбое API Zabbix глушит их автоматически — оператор видит один «Kerio API недоступен» вместо семи одновременных «SMTP-очередь не растёт / IMAP-сессии нулевые / антивирус молчит».

Прикладные триггеры закрывают типовые проблемы: рост очереди сообщений, всплеск ошибок SMTP-аутентификации (брутфорс), отсутствие активности антивируса, занятость диска, uptime меньше суток, срок лицензии. Триггер на очередь любит ложно срабатывать при массовых рассылках — мы выводим его за пределы 24/7-нотификации, оставляя в дневном плановом мониторинге.

Грабли Kerio Admin API

Первое — учётка для опроса. Не используйте админа. Заведите отдельного пользователя и присвойте роль Auditor: единственная встроенная read-only роль, через которую Statistics.get и Services.get отдают данные. Полных прав просто не нужно — закрывает вопросы безопасников и аудита.

Второе — обнуление счётчиков. Счётчики в Statistics.get монотонно растут до перезапуска службы. После рестарта они стартуют с нуля — CHANGE_PER_SECOND даёт огромное отрицательное число. В шаблоне после CHANGE_PER_SECOND стоит шаг IN_RANGE c флагом DISCARD_VALUE: всё за пределами диапазона отбрасывается, фантомных пиков на графике не возникает.

Третье — таймаут 30 секунд. Четыре HTTPS-вызова с авторизацией не успевают в дефолтные 3 секунды Zabbix и приведут к гарантированному nodata раз в сутки. 30 секунд дают двойной запас на холодных кешах Kerio после рестарта.

Два варианта развёртывания

Основной вариант — HTTP Agent из Zabbix server/proxy. Zabbix 7 умеет тип элемента HTTP Agent, который ходит на HTTPS-эндпоинт прямо самостоятельно — на почтовый сервер ничего ставить не нужно. Достаточно импорта YAML-файла шаблона, хоста-«пустышки» и трёх макросов с адресом, логином и паролем.

Второй вариант нужен, когда ИБ запрещает обращения на 4040 со стороны proxy. В этом случае к Kerio привязывается Zabbix agent с самописным скриптом kerio_collector.py из репозитория. Скрипт делает ровно то же самое: login, 4 вызова, logout, печать собранного JSON в stdout, и Zabbix agent через UserParameter отдаёт это серверу.

Что остаётся вне нашего шаблона

Под ролью Auditor не доступны CPU, RAM, per-domain статистика. Это намеренный компромисс в пользу безопасности. Здоровье ОС мы мониторим стандартным Linux by Zabbix agent или Windows by Zabbix agent параллельно — это не дублирование: очередь Kerio может расти при свободном CPU (антивирус упёрся в одно ядро), а диск может заполниться при нулевой активности SMTP.

Совокупно по обоим шаблонам в типичной инсталляции SMB получается 35–40 активных метрик и 12–15 триггеров — этого хватает, чтобы закрывать 99 % инцидентов без ручных проверок. А IT For Prof.