Установка и настройка Zabbix для мониторинга Почты
Назначение документа
В данном документе описана установка и настройка Zabbix для мониторинга Почты, перечень мониторингов Почты с указанием уровня критичности, а также отличие возможностей Zabbix Agent 1 от Zabbix Agent 2.
Документ предназначен для использования системными администраторами.
Общая информация
Возможности, которые есть в Zabbix Agent 2, но отсутствуют в Zabbix Agent 1
Zabbix Agent 2 обладает рядом функций и возможностей, которые отсутствуют или ограничены в Zabbix Agent 1:
-
Плагины
Zabbix Agent 2 использует архитектуру плагинов, что позволяет легко добавлять и настраивать новые проверки и типы данных. Это обеспечивает более гибкую и расширяемую систему мониторинга.
-
Многомодельность
Благодаря использованию плагинов Zabbix Agent 2 может поддерживать множество различных источников данных, включая системные, сетевые и прикладные метрики, которые могут быть сложными для интеграции в Zabbix Agent 1.
-
Производительность
Zabbix Agent 2 оптимизирован для работы с большим количеством данных и может обрабатывать большее количество проверок и данных за то же время, что и Zabbix Agent 1.
-
Удобство конфигурации
Конфигурация Zabbix Agent 2 более гибкая и удобная, позволяет легко настраивать и управлять плагинами и их параметрами.
-
Поддержка новых технологий
Zabbix Agent 2 лучше поддерживает новые технологии и протоколы, что позволяет использовать его для мониторинга современных систем и приложений.
-
Безопасность
Zabbix Agent 2 включает в себя улучшенные механизмы безопасности, что важно для защиты данных и обеспечения конфиденциальности информации.
Возможности, которые ограничены в Zabbix Agent 1 по сравнению с Zabbix Agent 2:
-
Гибкость и расширяемость
Zabbix Agent 1 имеет фиксированный набор проверок и ограничения при добавлении новых функций без изменения исходного кода.
-
Производительность:
Zabbix Agent 1 может быть менее эффективным при обработке большого количества данных или при мониторинге большого количества хостов.
-
Поддержка новых протоколов и форматов данных:
Zabbix Agent 1 может не поддерживать некоторые новые протоколы или форматы данных, которые становятся стандартом в современных системах.
-
Удобство использования
Настройка и управление Zabbix Agent 1 сложнее по сравнению с первым агентом.
В целом, Zabbix Agent 2 предлагает более современный и гибкий подход к мониторингу, что делает его предпочтительным выбором для новых установок и обновления существующих систем мониторинга на базе Zabbix.
Мониторинг событий Почты с уровнями критичности
В таблице ниже представлен перечень мониторов с уровнями критичности:
Наименование монитора | Уровень оповещения |
---|---|
Почтовый транспорт | |
Доступность транспортных портов SMTP 25, 465 | Высокий |
Очереди входящих и исходящих сообщений | Средний |
Хранилища | |
Файловые системы хранилища | Высокий |
Количество доступных для записи сломанных и потерянных бакетов | Высокий |
Доступ пользователей | |
Доступность портов пользовательских подключений HTTPS, IMAPS, SMTPS | Высокий |
Отсутствие ошибок авторизации в журналах | Высокий |
Keycloak | Высокий |
Компоненты внутренней архитектуры | |
Мониторинг состояния операционной системы | Средний |
Синхронизация времени с NTP-сервером | Высокий |
Контейнеры | Высокий |
Логи приложений: 1. Журналы MPOP 2. Журналы API: a. События API для Почты b. События API для сервиса Календарь c. События API для файлового хранилища d. События API для веб-интерфейса администартивной панели e. События API для VK Teams |
Вариативный (определяется для каждого отдельного API): по умолчанию — средний |
Базы данных: 1. Tarantool 2. MySQL 3. PostgreSQL 4. База данных Memcached 5. etcd |
Высокий (доступность баз) |
Лицензии | |
Контроль лицензий P7-Oфис | Высокий |
Контроль лицензий Почты | |
Сертификаты | |
Контроль RSA сертификатов на наличие в хранилище и срока их истечения | Высокий |
Почтовый транспорт | |
Очереди входящих и исходящих сообщений: 1. Время нахождения письма в очереди 2. Место, где находятся сообщения в очереди |
Средний |
Хранилища | |
Контроль достижения 85% от квоты | Средний |
Компоненты внутренней архитектуры | |
Внутренняя служба имен. Правильное разрешение внутренних и внешних имен | Средний |
Сборщики | |
Контроль отключения сборщика (включенного ранее) | Средний |
Другое | |
Проверка целостности хранилища поисковых индексов | Высокий (состояние пар) |
Административная панель | Средний |
Санитарное тестирование (внедрение на прод/тестирование) | Средний |
Скрипт mon.sh | Минимальный |
Мониторинг пропадающих писем (вычисление дельты между записями psql) | Высокий |
Технические требования
Для успешной установки и работы Zabbix Server и агентов Zabbix как на сервере так и на хостах необходимо соблюдение определенных системных требований. Ниже приведены основные требования для обеспечения стабильной работы системы мониторинга Zabbix.
Требования к Zabbix Server
Операционная система
Поддерживаются различные дистрибутивы Linux, а также другие UNIX-подобные системы (FreeBSD, OpenBSD, Solaris).
Некоторые версии Windows также поддерживаются, но рекомендуется использовать UNIX-подобные системы.
Процессор и память
Минимальное требование зависит от размера инфраструктуры, которую планируется мониторить.
Для небольших инсталляций достаточно 2 Гб ОЗУ и процессора средней мощности.
Для крупных инсталляций (тысячи хостов) потребуется более мощный процессор и увеличенный объем ОЗУ.
Хранение данных
Минимальное требование к дисковому пространству зависит от объема данных, которые планируется хранить.
Для долгосрочного хранения данных может потребоваться больше места.
Сервер базы данных
Zabbix Server использует базу данных для хранения данных мониторинга. Поддерживаются MySQL, PostgreSQL, SQLite и Oracle.
Для больших инсталляций рекомендуется использовать MySQL или PostgreSQL .
Веб-сервер
Для доступа к веб-интерфейсу Zabbix требуется установка Apache, Nginx или другого веб-сервера.
Apache с PHP обычно используется вместе с Zabbix.
PHP
Требуется установка PHP с поддержкой необходимых модулей (GD, XML, bcmath, JSON, ZIP и др.).
Требования к хостам с Zabbix Agent
Операционная система
Zabbix Agent поддерживает широкий спектр операционных систем, включая различные дистрибутивы Linux, UNIX (FreeBSD, OpenBSD, Solaris), а также Windows.
Процессор и память
Обычно требуются минимальные ресурсы, так как агенты Zabbix не являются ресурсоемкими.
Для большинства конфигураций достаточно небольшого количества ОЗУ и процессора.
Доступ
Агенты должны иметь возможность общаться с Zabbix Server по сети.
Убедитесь, что порты, используемые агентами (обычно 10050 TCP), не заблокированы брандмауэрами.
Установка агента
Агенты Zabbix могут быть установлены локально на каждом хосте, который требуется отслеживать.
Для UNIX-подобных систем обычно используется пакетный менеджер, а для Windows — установка через исполняемый файл.
Конфигурация
Каждый агент должен быть настроен с указанием IP или имени Zabbix Server и, при необходимости, дополнительных параметров конфигурации.
Предварительные условия для установки и настройки Zabbix
-
Требуется установка PHP с поддержкой необходимых модулей (GD, XML, bcmath, JSON, ZIP и др.).
-
Для доступа к веб-интерфейсу Zabbix требуется установка Apache, Nginx или другого веб-сервера.
-
Для завершения конфигурации Zabbix необходимы файлы конфигурации мониторинга (шаблоны) и кастомные скрипты. Чтобы их получить, обратитесь в техническую поддержку или к представителю VK Tech.
Установка Zabbix
Шаг 1. Установка Zabbix Server
-
Создайте виртуальную машину для развертывания Zabbix Server.
-
Установите зависимости:
-
Для Ubuntu/Debian:
-
Для CentOS/RHEL:
-
-
Добавьте ключ и репозиторий Zabbix:
-
Скачайте GPG-ключ Zabbix:
-
Обновите список пакетов:
-
-
Установите Zabbix Server и MySQL:
-
Создайте базу данных и пользователя:
-
Импортируйте схему базы данных:
-
Настройте Zabbix Server — отредактируйте файл конфигурации /etc/zabbix/zabbix_server.conf:
-
Запустите Zabbix Server:
Шаг 2. Установка Zabbix Agent 2
Zabbix Agent 2 должен быть установлен на следующих серверах инсталляции:
Имя хоста | Функция |
---|---|
<location>-bdmail1 <location>-bdmail2 |
Базы данных |
<location>-insmail | Установщик |
<location>-monmail2 | Мониторинг |
<location>-strmail1 | Хранилища |
<location>-team1 | VK Teams - образы |
Подключитесь по SSH к машинам, на которых должен быть установлен Zabbix Agent 2 (таблица выше), и на каждой из машин выполните команды:
-
Установите Zabbix Agent 2:
-
Настройте Zabbix Agent 2 — отредактируйте файл конфигурации /etc/zabbix/zabbix_agent2.conf:
-
Запустите Zabbix Agent 2:
Шаг 3. Импортирование файлов конфигурации (шаблонов) в Zabbix
Для завершения конфигурации Zabbix вам понадобятся файлы конфигурации мониторинга (шаблоны). Чтобы их получить, обратитесь в техническую поддержку или к представителю VK Tech.
-
Импортируйте полученные шаблоны:
-
Войдите в веб-интерфейс Zabbix.
-
Перейдите в раздел Configuration -> Templates.
-
Нажмите на кнопку Import и выберите файл шаблона.
-
-
Привяжите шаблоны к хосту:
-
Перейдите в раздел Configuration -> Hosts.
-
Выберите или создайте хост.
-
Привяжите импортированный шаблон к хосту.
-
Шаг 4. Установка кастомных скриптов
Для полноценного функционирования Zabbix вам понадобятся кастомные скрипты мониторинга. Чтобы их получить, обратитесь в техническую поддержку или к представителю VK Tech.
Установите кастомные скрипты на машинах-хостах в соответствии с таблицей ниже:
Функция | Имя хоста | Имя скрипта | Расположение |
---|---|---|---|
Базы данных | <location>-bdmail1 | kvota.sh | /tmp/monitoring |
tarantoolcheck.sh | /root/ | ||
<location>-bdmail2 | tarantoolcheck.sh | /root/ | |
Установщик | <location>-insmail | sanity | /opt/sanity |
fedman.sh | /var/log/workmail/monitoring | ||
mon_crow_check.py | /opt/deployer/scripts/mon | ||
nfailed.py | /opt/sanity/SPB | ||
Мониторинг | <location>-monmail2 | get_strash.sh | /home/vkdepl |
get_uidl.date | /home/vkdepl | ||
Хранилища | <location>-strmail1 | check_strash.sh | /tmp/check_strash |
zepto_storage_check.sh | /opt/mailOnPremise/scripts | ||
VK Teams - образы | <location>-team1 | registry_check.py | /home/vkdepl/monitoring |
gbld.py | /opt/monitoring |
Примечание
Скрипты мониторинга запускаются в автоматическом режиме согласно настройкам Crontab.
Sanity-тесты
Мониторинг результатов sanity-тестов осуществляется при помощи специального шаблона для Zabbix — Zabbix_Sanity_template.yaml (запрашивается в службе технической поддержки или у представителей VK Tech).
В шаблоне по умолчанию прописаны прототипы триггеров. Они срабатывают в том случае, когда в результате выполнения любого sanity-теста присутствует слово failed.
В случае сбоя проверки sanity-тестов команда эксплуатации получит следующее уведомление:
«Subject: Почта. Сбой sanity-проверки (MSK)
Operational data: <информация о неуспешных этапах проверки>
Host: <location>-bdmail1»
Чтобы отчет о прохождении sanity-тестов мог быть обработан шаблоном Zabbix, должен выполниться скрипт предварительной обработки. Для этого на каждой машине-хосте в директории /usr/lib/zabbix/externalscripts/sanity.info создайте файл со следующим содержанием:
jq '.' /opt/sanity/results/report.json | sed -e 's/"0"\:/"data"\:\[/' -e 's/"[[:digit:]]*"\://g' -e '$ s/}/\]}/' | jq -r '.[]'
Конфигурация Zabbix-агента на каждой из машин-хостов должна содержать строку, описывающую userparameter. Перейдите в файл конфигурации /etc/zabbix/zabbix_agent2.conf и добавьте строку:
Шаблон: Sanity test.
Хосты для применения: <location>-bdmail1.
Пропадающие письма
Для мониторинга пропадающих писем Почты используется скрипт check_strash.sh. Скрипт запускает набор проверок, относящихся к нахождению писем, разница событий по которым не превышает заданную дельту.
Для этого используется дополнительный скрипт, размещенный на <location>-monmail2, который осуществляет доступ в сервис slp-pg1 (база данных сервиса логирования почты, PostreSQL) и проходит по всем имеющимся записям, проверяя дельту между ними.
Далее в найденных записях происходит дальнейшая проверка по записям в сервисе bmw1 (сервис бэкапирования данных различных компонентов системы): скрипт оставляет лишь те письма, первая запись в истории которых относится к перемещению в суперкорзину (такую запись можно распознать с помощью метки 500008).
После чего полученные данные агрегируются в файле для дальнейшей отправки на мониторинг.
В случае срабатывания триггера команда эксплуатации получит следующее уведомление:
«Subject: Почта. Проблема с пропадающими письмами
Operational data: <Ошибка>
Host: <location>-insmail»
Шаблон: VK Workmail General.
Хосты для применения: <location>-insmail, <location>-strmail1, <location>-monmail2.
Проверка целостности хранилища поисковых индексов
На схеме ниже представлен процесс мониторинга проверки целостности хранилища поисковых индексов:
Для мониторинга целостности хранилища поисковых индексов Почты используется скрипт mon_crow.py, который запускает набор проверок, относящихся к проверке всех пар индексов на предмет их корректной работы.
Для его корректной работы написана дополнительная функция, осуществляющая выборку и парсинг данных. На основе полученных данных скрипт агрегирует информацию со всех инсталляций и выводит итоговое состояние. Если была обнаружена неисправность в любой из пар индексов, итоговый результат считается неудовлетворительным и запускается соответствующее оповещение в мониторинг.
При формировании тела сообщения мониторинга скрипт прикрепляет справочную информацию по проблеме, относящуюся к конкретной индексной паре.
В случае срабатывания триггера команда эксплуатации получит следующее уведомление:
«Subject: Почта. Нарушена целостность хранилища поисковых индексов
Operational data: <Ошибка>
Host: <location>-insmail»
Шаблон: VK Workmail General.
Хосты для применения: <location>-insmail, <location>-strmail1, <location>-monmail2.
Контроль достижения 85% от квоты
Для мониторинга порога достижения 85% от квоты Почты используется скрипт kvota.sh, который работает по следующему принципу:
-
Определяет локацию инсталляции.
-
Получает список почтовых ящиков через запрос к API.
-
На основе полученного списка получает текущий занимаемый объем по каждому почтовому ящику.
-
Производит расчеты, отталкиваясь от заданного максимального размера.
-
Сохраняет выборку ящика, квота по которым превышает 85%.
На основе полученных данных скрипт агрегирует информацию со всех источников и выводит итоговое состояние.
В случае срабатывания триггера, команда эксплуатации получит следующее уведомление:
«Subject: Почта. Превышено 85% доступного пространства для следующих ящиков:
Operational data: <Список ящиков: занятый объём (%) >
Host: <location>-insmail»
Шаблон: VK Workmail General.
Хосты для применения: <location>-insmail, <location>-strmail1, <location>-monmail2.