В любом хосте, состоящем более чем из одного сервера, администратору необходимо иметь перед глазами полную картину происходящего. Для упрощения этой задачи в крупных сетях применяются системы мониторинга. К таким системам относится универсальный инструмент Zabbix, который способен отслеживать динамику работы серверов и сетевого оборудования, быстро реагировать на внештатные ситуации и предупреждать возможные проблемы с нагрузкой. Система мониторинга Zabbix также может собирать статистику в указанной рабочей среде и действовать в определенных случаях заданным образом.
Как работает Zabbix, и его архитектура
Архитектура Zabbix включает четыре основных инструмента, позволяющих мониторить определенную рабочую среду и собирать о ней полный пакет данных для оптимизации работы. К этим инструментам относятся:
- сервер - ядро, хранящее в себе все данные системы, включая статистические, оперативные и конфигурационные. Дистанционно управляет сетевыми сервисами, оповещает администратора о возникающих проблемах с оборудованием, находящимся под наблюдением;
- прокси-сервис, работающий от имени сервера и собирающий данные о доступности и производительности устройств. Данные при этом сохраняются в буфер и загружаются на сервер в отдельную БД (MySQL, PostgreSQL, SQLite или Oracle). Прокси-сервис необходим для снижения нагрузки на сервер, на процессор и на жесткий диск;
- агент - программа (демон), которая активно отслеживает работу локальных ресурсов (накопителей, оперативной памяти, процессора) и приложений и собирает статистику по ним. Отражение текущего состояния физического сервера осуществляются Zabbix-агентом при помощи таких метрик, как загруженность ядра (Processor load), время ожидания ресурсов (CPU io wait time), объем системы подкачки (Total swap space).
- веб-интерфейс, который является частью сервера системы и часто запускается на том же физическом узле, что и Zabbix.
Архитектура ZABBIX
Основная логическая единица архитектуры Zabbix - это узлы сети (host), сервера, находящиеся под наблюдением. Каждому серверу присваивается описание и адрес - dns или ip. Допустимо применять оба, причем с возможностью выбирать, что использовать для соединения. Узлы можно объединять в группы, например, по веб-серверам или серверам баз данных, для вывода только определенных серверов при наблюдении. При этом каждый узел имеет несколько элементов данных (items) - параметров, по которым ведется мониторинг.
Сбор совокупности данных системой Zabbix проводится наиболее часто следующими способами:
- Zabbix agent (Zabbix-агент) - когда сервер собирает информацию у агента самостоятельно, подключаясь по определенному интервалу;
- Simple check (Простые проверки) - простые операции, в том числе пинг;
- Zabbix trapper (Zabbix-траппер) — сбор информации с трапперов, представляющих собой мосты между используемыми сервисами и самой системой.
- Zabbix aggregate (Zabbix-комплекс) - процесс, предусматривающий сбор совокупной информации из базы данных;
- SSH agent (SSH-агент) - система подключается по SSH, работает с использованием указанных команд;
- Calculate (Вычисление) - проверки, которые система производит, сопоставляя имеющиеся данные, в том числе после предыдущих сборов.
Функционал Zabbix включает в себя общие проверки для наиболее распространенных сервисов - СУБД, SSH, Telnet, VMware, NTP, POP, SMTP, FTP. Если стандартных настроек системы недостаточно, их можно изменить самостоятельно или же пользоваться дополнением через API. Также к стандартным функциям системы относятся: контроль нагрузки на процессор - касается и общих, и отдельных процессов; сбор данных об объеме свободной оперативной и физической памяти; мониторинг активности жесткого диска и мониторинг сетевой активности; пинг для проверки доступности узлов в сети.
У проверок есть заданные шаблоны (Templates), которые упрощают создание новых вычислений. Есть несколько типов шаблонов - стандартизированные шаблоны для сетевых устройств, настройка шаблонов HTTP, настройка шаблонов IPMI, настройка шаблонов ODBC.
Для обработки данных в Zabbix используются триггеры - логические выражения со значениями FALSE, TRUE и UNKNOWN, которые можно создать вручную и протестировать на произвольных значениях перед использованием. У каждого триггера существует уровень серьезности угрозы, который маркируется цветом и передается звуковым оповещением в веб-интерфейсе. Например:
- не классифицировано (Not classified) - серый;
- информация (Information) - светло-синий;
- предупреждение (Warning) - жёлтый;
- средняя (Average) - оранжевый;
- высокая (High) - светло-красный;
- чрезвычайная (Disaster) - красный.
В системе мониторинга триггеры применяются для выявления возможных проблем и предупреждения администратора о степени вероятности их возникновения. Это дает возможность предотвратить пики нагрузки на оборудование или заканчивающееся место на жестком диске.
Действия (Action) - представляет собой заданную реакцию на событие (Event). Действие может устанавливаться автоматически или вручную как для одного из событий, так и для целой группы. Параметры действий:
- Name - имя действия;
- Event source - источник события. Источниками событий служат обнаружение (Discovery Events), авторегистрация (Auto registration Events) или заданный триггер (Trigger Events);
- Enable escalations - разрешение на эскалацию событий;
- Period - период времени для шага эскалации, указывается в секундах;
- Default subject - указывается, кто извещается по умолчанию;
- Default message - стандартный текст сообщения;
- Recovery message - текст уведомления после решения проблемы;
- Recovery subject - субъект, которого извещают после операции;
- Status - статус действия, может быть «активно» и «запрещено».
После отработки триггера для последующих автоматических действий применяются операции. Пользователь может указать для событий операцию или группу операций. Выделяют следующие параметры операций: Step - при эскалации событий; Operation type - действия на определенном шаге, например, «Send message» или «Execute command»; Event Source - источник событий; Send message to - отдельное сообщение (Single user) или групповое (User group); Default message - текст по умолчанию; Subject - кого оповещает система; Message - текст сообщения; Remote command - команда для удаленного управления.
Установка и настройка Zabbix
Система Zabbix отличается простотой установки и настройки. Ее сервер, прокси и агент написаны на С#, веб-интерфейс - на PHP. При этом установка Zabbix Server и Zabbix Proxy возможна только на Linux- системах, а Zabbix-агент - практически на любых ОС и платформах.
Инсталляционный пакет Zabbix Server состоит из:
- бинарника zabbix_server (обычно работает как сервис);
- MySQL (MariaDB)/PostgreSQL базы данных;
- веб-сервера Apache2/Nginx с обработчиком PHP;
- файлов самого frontend сайта (.php, .js, .css)
Схема установки Zabbix включает этапы:
- установка Zabbix Server в Linux (Ubuntu, CentOS) через пакетный менеджер. Для этого потребуется выбрать на странице загрузки https://www.zabbix.com/download репозиторий, подходящий для дистрибутива, например: Zabbix Version (4.4) - OS Distribution (Ubuntu) - OS Version (18.04 Bionic) - Database (MySQL) - Веб сервер (Nginx или Apache), который нужно скачать и добавить
# wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian10_all.deb
# dpkg -i zabbix-release_4.4-1+bionic_all.deb
# apt update
- затем устанавливаются необходимые пакеты (# apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent), создается база данных и устанавливаются права пользователя (mysql -uroot mysql create database zabbix character set utf8 collate utf8_bin; mysql grant all privileges on zabbix.* to zabbix@localhost identified by 'ВашПароль'; mysql quit;);
- далее проводится импорт базы данных zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p Zabbix и выполняется добавление службы в автозапуск (# systemctl enable zabbix-server zabbix-agent nginx php7.2-fpm
# systemctl restart zabbix-server zabbix-agent nginx php7.2-fpm);
Настройка веб-интерфейса Zabbix проводится так. В браузере открывается указанный ранее URL-адрес zabbix-сервера (к примеру, указанный домен). Нужно прописать его у себя в hosts файле или на DNS сервере). При этом важно открыть оба порта, который система Zabbix использует по умолчанию - TCP 10050 (порт пассивного агента, по нему zabbix сервер опрашивает клиентов) и TCP 10051 (порт, на котором zabbix сервер получает данные от клиентов - активный агент).
Какую версию выбрать. Что нового в Zabbix 5.0.
На сегодняшний день востребованными являются версии Zabbix 4.2, Zabbix 4.4 и Zabbix 5.0. Версия Zabbix 4.2 имеет возможности:
- высокочастотного мониторинга с помощью троттлинга, который обеспечивает масштабирование и повышение NVPS, что означает более быстрое обнаружение проблем и направление оповещений без большой нагрузки на Zabbix;
- сбора данных с помощью HTTP-агента;
- поддержки сбора данных от Prometheus Pro;
- предобработки, которая поддерживает валидацию и JavaScript, что позволяет трансформировать любые собираемые данные;
- предобработки на стороне прокси, которая обеспечивает более эффективное масштабирование с помощью прокси;
- улучшенного управления тегами - мета-информацией на уровне событий и проблем, с которыми удобно работать, поскольку теги поддерживаются и на уровне шаблонов, и на уровне узлов сети.
Zabbix 4.4 оснащена:
- новым Zabbix агентом;
- системой Webhook для поддержки оповещений и уведомлений, что позволяет интегрироваться с внешними системами;
- системой поддержки Timescale DB;
- встроенной базой знаний для метрик и триггеров, видимой для пользователей Zabbix. Например, пользователи могут использовать описание элементов данных и триггеров в Monitoring Latest data.
- новым стандартом для шаблонов.
LTS-релиз Zabbix 5.0, который будет поддерживаться в течение 5 лет, отличается от версий 4.2 и 4.4 следующими характеристиками:
- поддержкой HTTP-прокси для webhook, который позволяет сделать соединения с Zabbix сервера на внешние более управляемыми и безопасными;
- возможностью выбирать, какие именно проверки должны быть доступны на определенном агенте. Например, можно ограничить количество проверок, фактически создав белые и черные списки, определить поддерживаемые ключи;
- возможностью выбора алгоритмов шифрования для всех компонентов Zabbix, во избежание использования небезопасных шифров для TLS-соединений. Это важно для мониторинга сред, для которых применяются определенные стандарты безопасности.
- поддержкой шифрованных соединений с базой данных. На данный момент доступно шифрованное соединение с PostgreSQL и MySQL;
- переходом с MD5 на SHA256 для хранения хэшей паролей пользователей в базе данных, поскольку на данный момент это наиболее безопасный алгоритм;
- поддержкой секретных пользовательских макросов для хранения любой конфиденциальной информации (паролей и API-токенов) к которой не имеют доступа конечные пользователи.
- поддержкой SAML для обеспечения единой точки аутентификации у надежного поставщика идентификационных услуг, что обеспечивает хранение пользовательских учетных данных в границах брандмауэра. Поддержка SAML позволяет интегрировать Zabbix с различными локальными и облачными поставщиками идентификационных услуг, такими как Microsoft ADFS, OpenAM, SecurAuth, Okta, Auth0, а также Azure, AWS или Google Cloud Platform.
Кроме того, Zabbix 5.0 имеет оптимизированный для широких экранов пользовательский интерфейс, обеспечивает возможность копирования виджетов с панели и экспорта графиков, фильтрацию по тегам, поддержку модулей для расширения интерфейса Zabbix, поддержку пользовательских макросов для IPMI для имени пользователя и пароля.
Все перечисленные факторы делают Zabbix 5.0 оптимальным и предпочтительным решением для организации систем мониторинга.
Сколько стоить развернуть Zabbix
Стоимость работ по развертыванию и настройке систем Zabbix зависит от типа решения (легкий, базовый, расширенный, профессиональный вариант или индивидуальный пакет), а также от сложности инсталляции и требований заказчика (описания архитектуры, списка метрик, наблюдаемых устройств, систем и приложений, необходимости удаленного доступа).
Расценки на данные работы составляют от 82 000 до 737 000 рублей.
Почему стоит выбрать Zabbix, в чем его преимущества
Выбор в пользу Zabbix позволяют сделать его возможности:
- автоматического обнаружения серверов и сетевых устройств;
- low-level мониторинга и распределенного мониторинга, мониторинга без администратора;
- поддержки и захвата механизмов;
- отправки по e-mail уведомлений о предопределенных событиях;
- контроля ресурсов и записи лог-файлов аудита.
По сравнению с другими системами мониторинга, Zabbix позволяет осуществлять конфигурирование системы посредством API, а также через интерфейс, обеспечивает возможность хранения настроек в БД, что позволяет применять все вносимые в конфигурацию изменения «на лету», имеет качественные средства визуализации и выполняет хранение истории, благодаря чему существенно упрощается ряд задач, связанных с мониторингом. Кроме прочего, Zabbix обладает мощной поддержкой параметров пользователя, таких как оповещения, пороги, реакции, а также поддержкой мониторинга логов и JMX в своей базовой комплектации.
Руководство по программному обеспечению Zabbix https://www.zabbix.com/documentation/current/ru/manual