Перейти к содержанию

Установка и настройка Zabbix для мониторинга Почты

Назначение документа

В данном документе описана установка и настройка Zabbix для мониторинга Почты, перечень мониторингов Почты с указанием уровня критичности, а также отличие возможностей Zabbix Agent 1 от Zabbix Agent 2.

Документ предназначен для использования системными администраторами.

Общая информация

Возможности, которые есть в Zabbix Agent 2, но отсутствуют в Zabbix Agent 1

Zabbix Agent 2 обладает рядом функций и возможностей, которые отсутствуют или ограничены в Zabbix Agent 1:

  1. Плагины

    Zabbix Agent 2 использует архитектуру плагинов, что позволяет легко добавлять и настраивать новые проверки и типы данных. Это обеспечивает более гибкую и расширяемую систему мониторинга.

  2. Многомодельность

    Благодаря использованию плагинов Zabbix Agent 2 может поддерживать множество различных источников данных, включая системные, сетевые и прикладные метрики, которые могут быть сложными для интеграции в Zabbix Agent 1.

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

    Zabbix Agent 2 оптимизирован для работы с большим количеством данных и может обрабатывать большее количество проверок и данных за то же время, что и Zabbix Agent 1.

  4. Удобство конфигурации

    Конфигурация Zabbix Agent 2 более гибкая и удобная, позволяет легко настраивать и управлять плагинами и их параметрами.

  5. Поддержка новых технологий

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

  6. Безопасность

    Zabbix Agent 2 включает в себя улучшенные механизмы безопасности, что важно для защиты данных и обеспечения конфиденциальности информации.

Возможности, которые ограничены в Zabbix Agent 1 по сравнению с Zabbix Agent 2:

  1. Гибкость и расширяемость

    Zabbix Agent 1 имеет фиксированный набор проверок и ограничения при добавлении новых функций без изменения исходного кода.

  2. Производительность:

    Zabbix Agent 1 может быть менее эффективным при обработке большого количества данных или при мониторинге большого количества хостов.

  3. Поддержка новых протоколов и форматов данных:

    Zabbix Agent 1 может не поддерживать некоторые новые протоколы или форматы данных, которые становятся стандартом в современных системах.

  4. Удобство использования

    Настройка и управление 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

  1. Требуется установка PHP с поддержкой необходимых модулей (GD, XML, bcmath, JSON, ZIP и др.).

  2. Для доступа к веб-интерфейсу Zabbix требуется установка Apache, Nginx или другого веб-сервера.

  3. Для завершения конфигурации Zabbix необходимы файлы конфигурации мониторинга (шаблоны) и кастомные скрипты. Чтобы их получить, обратитесь в техническую поддержку или к представителю VK Tech.

Установка Zabbix

Шаг 1. Установка Zabbix Server

  1. Создайте виртуальную машину для развертывания Zabbix Server.

  2. Установите зависимости:

    • Для Ubuntu/Debian:

      bash
      sudo apt-get update
      sudo apt-get install wget gnupg2
      
    • Для CentOS/RHEL:

      bash
      sudo yum install wget
      
  3. Добавьте ключ и репозиторий Zabbix:

    1. Скачайте GPG-ключ Zabbix:

      bash
      wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_5.0-1+stretch_all.deb
      sudo dpkg -i zabbix-release_5.0-1+ubuntu20.04_all.deb
      
    2. Обновите список пакетов:

      bash
      sudo apt-get update
      
  4. Установите Zabbix Server и MySQL:

    bash
    sudo apt-get install zabbix-server-mysql zabbix-frontend-php
    
  5. Создайте базу данных и пользователя:

    bash
    sudo mysql -uroot -p
    CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
    CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '<пароль>';
    GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
    EXIT;
    
  6. Импортируйте схему базы данных:

    bash
    zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
    
  7. Настройте Zabbix Server — отредактируйте файл конфигурации /etc/zabbix/zabbix_server.conf:

    bash
    DBPassword=<пароль >
    
  8. Запустите Zabbix Server:

    bash
    sudo systemctl start zabbix-server
    sudo systemctl enable 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 (таблица выше), и на каждой из машин выполните команды:

  1. Установите Zabbix Agent 2:

    bash
    sudo apt-get install zabbix-agent2
    
  2. Настройте Zabbix Agent 2 — отредактируйте файл конфигурации /etc/zabbix/zabbix_agent2.conf:

    bash
    Server=<IP-адрес_Zabbix_Server>
    ServerActive=< IP-адрес_Zabbix_Server >
    Hostname=<имя _хоста>
    
  3. Запустите Zabbix Agent 2:

    bash
    sudo systemctl start zabbix-agent2
    sudo systemctl enable zabbix-agent2
    

Шаг 3. Импортирование файлов конфигурации (шаблонов) в Zabbix

Для завершения конфигурации Zabbix вам понадобятся файлы конфигурации мониторинга (шаблоны). Чтобы их получить, обратитесь в техническую поддержку или к представителю VK Tech.

  1. Импортируйте полученные шаблоны:

    1. Войдите в веб-интерфейс Zabbix.

    2. Перейдите в раздел Configuration -> Templates.

    3. Нажмите на кнопку Import и выберите файл шаблона.

  2. Привяжите шаблоны к хосту:

    1. Перейдите в раздел Configuration -> Hosts.

    2. Выберите или создайте хост.

    3. Привяжите импортированный шаблон к хосту.

Шаг 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 и добавьте строку:

UserParameter=sanity.info[*],/usr/lib/zabbix/externalscripts/sanity.info

Шаблон: 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.

Проверка целостности хранилища поисковых индексов

На схеме ниже представлен процесс мониторинга проверки целостности хранилища поисковых индексов:

monitoring

Для мониторинга целостности хранилища поисковых индексов Почты используется скрипт mon_crow.py, который запускает набор проверок, относящихся к проверке всех пар индексов на предмет их корректной работы.

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

При формировании тела сообщения мониторинга скрипт прикрепляет справочную информацию по проблеме, относящуюся к конкретной индексной паре.

В случае срабатывания триггера команда эксплуатации получит следующее уведомление:

«Subject: Почта. Нарушена целостность хранилища поисковых индексов
Operational data: <Ошибка>
Host: <location>-insmail»

Шаблон: VK Workmail General.

Хосты для применения: <location>-insmail, <location>-strmail1, <location>-monmail2.

Контроль достижения 85% от квоты

Для мониторинга порога достижения 85% от квоты Почты используется скрипт kvota.sh, который работает по следующему принципу:

  1. Определяет локацию инсталляции.

  2. Получает список почтовых ящиков через запрос к API.

  3. На основе полученного списка получает текущий занимаемый объем по каждому почтовому ящику.

  4. Производит расчеты, отталкиваясь от заданного максимального размера.

  5. Сохраняет выборку ящика, квота по которым превышает 85%.

На основе полученных данных скрипт агрегирует информацию со всех источников и выводит итоговое состояние.

В случае срабатывания триггера, команда эксплуатации получит следующее уведомление:

«Subject: Почта. Превышено 85% доступного пространства для следующих ящиков:
Operational data: <Список ящиков: занятый объём (%) >
Host: <location>-insmail»

Шаблон: VK Workmail General.

Хосты для применения: <location>-insmail, <location>-strmail1, <location>-monmail2.