Установка и настройка Zabbix 5
В этой статье мы расскажем об установке и настройке Zabbix с нуля на сервер с ОС CentOS, в виде Docker-контейнера и в виде образа виртуальной машины в формате OVF. Дополнительно разберемся с Zabbix-прокси, установкой Zabbix-агента на Windows, базовыми настройками и интеграцией с системой визуализации Grafana. После прочтения статьи вы сможете самостоятельно настроить мониторинг и оповещения […]
В этой статье мы расскажем об установке и настройке Zabbix с нуля на сервер с ОС CentOS, в виде Docker-контейнера и в виде образа виртуальной машины в формате OVF.
Дополнительно разберемся с Zabbix-прокси, установкой Zabbix-агента на Windows, базовыми настройками и интеграцией с системой визуализации Grafana. После прочтения статьи вы сможете самостоятельно настроить мониторинг и оповещения на почту или в мессенджер, как следствие, начнете контролировать свои серверы, сайты, приложения и другие элементы инфраструктуры.
Оглавление:
- Знакомство с системой
- Установка Zabbix и его компонентов
- Настройка и интеграция Zabbix 5
- Интеграция Zabbix с внешними системами
- Заключение
Знакомство с системой
Zabbix — популярная система мониторинга ИТ-инфраструктуры и приложений с открытым исходным кодом, которой пользуются малые, средние, крупные и очень крупные компании по всему миру. Основное преимущество продукта — большое сообщество пользователей и, как следствие, много полезной информации о подходах к использованию, настройке, созданию шаблонов мониторинга и многом другом.
Получить Zabbix можно на официальном сайте. Скачивание доступно в различных форматах. Кроме CentOS, установка Zabbix-сервера из бинарного файла возможна на следующие операционные системы:
- Red Hat Enterprise Linux;
- Oracle Linux;
- Ubuntu;
- Debian;
- SUSE Linux Enterprise Server;
- Raspbian.
В середине мая 2020 года вышла 5-я версия Zabbix, установку которой мы и разберем в статье.
Установка Zabbix и его компонентов
Zabbix — распределенная система мониторинга, состоящая из четырех основных компонентов:
- Zabbix-сервер. Ядро системы мониторинга. Компонент отвечает за визуализацию, агрегацию и аналитику данных, оповещения, управление распределенными компонентами (прокси и агентами). В качестве веб-сервера вендор позволяет использовать Apache или Nginx.
- Zabbix-прокси. Этот компонент отвечает за управление Zabbix-агентами. Использование прокси необязательно, но позволяет снизить нагрузку на Zabbix-сервер за счет переноса с него функций управления агентами и предобработки данных (этот функционал появился в пятой версии Zabbix).
- Zabbix-агент. Агент — конечный компонент инфраструктуры мониторинга. Выполняет сбор и отправку данных о производительности на Zabbix-прокси или Zabbix-сервер.
- База данных Zabbix. Хранилище метрик производительности. Вендор поддерживает реляционные базы данных: MySQL, PostgreSQL, SQL Server, Oracle. Обращаем внимание, что с версии 5.0 прекращена поддержка базы данных IBM DB2.
Установка Zabbix-сервера на CentOS
В первую очередь установим сервер. В панели управления это делается в несколько кликов. После ввода учетных данных и входа в систему нужно перейти на представление Серверы и нажать кнопку Создать сервер.
На открывшемся представлении ввести имя сервера, выбрать регион и зону (если необходимо) и нажать на кнопку Выбрать источник, чтобы выбрать необходимую операционную систему.
Затем откроется следующее представление, где для установки Zabbix-сервера выберем CentOS 7 64-bit.
После выбора операционной системы можно прокрутить колесико мышки вниз и выбрать плавающий IP-адрес для возможности подключения к серверу через SSH и к веб-консоли Zabbix через браузер. На этом же экране можно скопировать пароль root для дальнейшего доступа к серверу по SSH. Нажимаем на кнопку Создать.
Как только сервер будет создан и его статус сменится на Active, можно подключаться к внешнему плавающему IP-адресу по протоколу SSH.
Далее установим репозитории ПО. Это необходимо для получения актуального набора пакетов с компонентами Zabbix и PostgreSQL.
Выполним команды:
# yum install https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# yum clean all
Репозитории с актуальными версиями устанавливаемых компонентов для различных платформ можно найти на сайте производителей:
Следующий шаг — установка Zabbix-сервера и Zabbix-агента:
# yum install zabbix-server-pgsql zabbix-agent
Теперь внесем изменения в конфигурацию репозитория Zabbix: нужно включить zabbix frontend в файле конфигурации /etc/yum.repos.d/zabbix.repo, изменив значение ключа enabled со значения 0 на значение 1.
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
gpgcheck=1
gpgkey=file://etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
Установим Red Hat Software Collections для упрощения процесса дальнейшей настройки:
# yum install centos-release-scl
Следующий шаг — установка PostgreSQL и других необходимых пакетов. Обратите внимание, что в нашем примере мы работаем с локальным хранилищем на базе PostgreSQL (в случае с MySQL имя пакета для Zabbix-сервера будет отличаться).
# yum install postgresql12-server zabbix-web-pgsql-scl zabbix-nginx-conf-scl
Инициализируем, настроим автозапуск и запустим БД PostgreSQL:
# /usr/pgsql-12/bin/postgresql-12-setup initdb
# systemctl enable postgresql-12
# systemctl start postgresql-12
После успешного запуска создадим базу данных для Zabbix и пользователя в ней. Первая команда запросит пароль:
# sudo -i -u postgres createuser --pwprompt zabbix
# sudo -i -u postgres createdb -O zabbix zabbix
Внесем изменения в конфигурационный файл /var/lib/pgsql/12/data/pg_hba.conf для корректного подключения к БД PostgreSQL с паролем. Метод для обоих подключений должен быть md5:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
После создания пользователя организуем для него схему по умолчанию:
# sudo -i -u postgres psql -U zabbix
# zabbix=> create schema zabbix;
# zabbix=> ALTER ROLE zabbix SET search_path = zabbix;
# zabbix=> \q
Следующий шаг — установка в БД схемы данных:
# zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix
Теперь впишите созданный для БД пароль в конфигурационный файл Zabbix /etc/zabbix/zabbix_server.conf в параметры DBHost, DBName, DBSchema, DBUser и DBPassword.
Настроим NGINX для его корректной работы в Zabbix. Настройки выполняются в конфигурационном файле /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf. Необходимо раскомментировать две строки и указать IP-адрес или имя сервера:
listen 80;
server_name <ip адрес или имя сервера>;
Следующий файл, который нужно скорректировать, — /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf. Вносим изменения в двух местах:
listen.acl_users = apache,nginx
php_value[date.timezone] = Europe/Moscow
Теперь запускаем сервисы Zabbix и добавляем их в автозапуск:
# systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
# systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
Если на предыдущих шагах все было сделано верно, при переходе по имени или адресу сервера в браузере откроется начальное окно настройки Zabbix 5.0:
Переходим на экран Configure DB connection и указываем реквизиты подключения к БД:
На экране Zabbix server details — имя хоста, на котором установлен Zabbix, порт должен остаться указанным по умолчанию:
Переходим на последний экран и нажимаем Finish. Настройка завершена.
Стандартная учетная запись для входа: Admin с паролем zabbix.
Zabbix готов к работе, и можно приступать к его настройке. В некоторых ситуациях для корректной работы системы необходимо отключить SElinux.
Установка Zabbix в виде Docker-контейнера
Быстрая установка — выполняется за 10 минут или меньше. Добавим репозиторий Docker и установим необходимые пакеты:
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce docker-ce-cli containerd.io docker-compose
Следующий шаг — клонирование репозитория Zabbix с Github:
# git clone https://github.com/zabbix/zabbix-docker.git
Перейдем в клонированный репозиторий. Команда ls покажет имеющиеся объекты:
# cd zabbix-docker/
# ls
agent docker-compose_v3_centos_mysql_local.yaml java-gateway snmptraps
agent2 docker-compose_v3_centos_pgsql_latest.yaml kubernetes.yaml web-apache-mysql
build.sh docker-compose_v3_centos_pgsql_local.yaml LICENSE web-apache-pgsql
docker-compose_v3_alpine_mysql_latest.yaml docker-compose_v3_ubuntu_mysql_latest.yaml proxy-mysql web-nginx-mysql
docker-compose_v3_alpine_mysql_local.yaml docker-compose_v3_ubuntu_mysql_local.yaml proxy-sqlite3 web-nginx-pgsql
docker-compose_v3_alpine_pgsql_latest.yaml docker-compose_v3_ubuntu_pgsql_latest.yaml README.md zabbix-appliance
docker-compose_v3_alpine_pgsql_local.yaml docker-compose_v3_ubuntu_pgsql_local.yaml server-mysql zbx_env
docker-compose_v3_centos_mysql_latest.yaml generate-stackbrew-library.sh server-pgsql
Запустим демон Docker:
# systemctl start docker
Соберем и запустим контейнеры с Zabbix:
# docker-compose -f docker-compose_v3_centos_pgsql_latest.yaml up -d
После выполнения команды выше запустятся компоненты Zabbix, можно переходить в веб-интерфейс:
Установка Zabbix из готовых образов
Это самый быстрый тип установки — разворачивание займет не более 5 минут. В этом разделе рассмотрим установку готового Zabbix-сервера из образа в формате Open virtualization format (OVF). Образ можно скачать на сайте Zabbix.
Для разворачивания OVF-образа на локальной машине потребуется установленный VirtualBox, который доступен для различных платформ на сайте Oracle. После загрузки образа Zabbix в интерфейсе VirtualBox нужно нажать кнопку Импортировать.
Выбираем образ zabbix_appliance-5.0.0.ovf (рядом с ним должен находиться zabbix_appliance-5.0.0-disk001.vmdk).
На следующем экране все параметры должны остаться по умолчанию. Теперь можно нажать кнопку Импорт. После успешного импорта виртуальную машину можно Запустить. Обратите внимание, что для корректного подключения к интерфейсу Zabbix или виртуальной машине по SSH в сетевых настройках должен быть указан тип подключения Сетевой мост.
Дожидаемся успешного запуска виртуальной машины, входим под учетными данными root / zabbix в консоли VirtualBox и выполняем команду:
# ip a
В результате отобразятся настройки сети на виртуальной машине с установленным Zabbix.
Теперь можно выполнить подключение к Zabbix-серверу через браузер. Учетные данные стандартные — Admin / zabbix.
Данные по производительности сразу же начинают собираться.
Таким образом, установка завершена.
Установка агента Zabbix на Windows
Перед началом установки создадим в панели управления Selectel сервер с ОС Windows. Для этого в представлении Серверы нажмем на кнопку Создать сервер.
В открывшемся представлении нажимаем Выбрать тип источника и выбираем один из доступных образов операционных систем Windows.
Выбираем плавающий IP-адрес для подключения к серверу через RDP. На этом же экране можно скопировать пароль учетной записи Administrator для дальнейшего доступа к серверу по RDP. Нажимаем на кнопку Создать.
После выполнения перечисленных действий ожидаем создания сервера. После его создания и перехода в статус Active можно подключаться к внешнему плавающему IP-адресу по протоколу RDP к созданному серверу.
Установка и настройка Zabbix-агента на Windows-сервер в ручном режиме занимает около 10 минут. Скачивание дистрибутива доступно на сайте Zabbix. После скачивания архива его необходимо распаковать в созданную директорию (в нашем примере это C:\Zabbix):
В папке conf хранится конфигурационный файл, в который необходимо внести изменение:
Server=<ip адрес Zabbix-сервера>
Далее установим агент в виде сервиса и запустим его. Для этого выполним zabbix_agentd со специальными реквизитами:
> zabbix_agentd.exe -c C:\Zabbix\conf\zabbix_agentd.conf -i
> zabbix_agentd.exe -c C:\Zabbix\conf\zabbix_agentd.conf --start
Следующий шаг — добавление данного агента в интерфейсе Zabbix. Переходим на представление Configuration — Hosts, затем в верхнем правом углу нажимаем Create Host:
Следующий шаг — ввод данных сервера. Требуется указать имя сервера, группу и сетевой интерфейс, через который будет выполняться подключение к агенту.
Далее переходим на вкладку Templates. Так как речь идет об ОС Windows, применим к узлу соответствующий шаблон Template OS Windows by Zabbix agent. Сохраняем изменения и ожидаем начала сбора метрик.
Собираемые по узлам метрики доступны на представлении Monitoring — Latest Data.
Напротив каждой метрики (Item) есть кнопка Graph, при нажатии на которую открывается соответствующий график.
Настройка мониторинга узла с ОС Windows завершена.
Настройка и интеграция Zabbix 5
В этом блоке расскажем о добавлении пользователя, настройке оповещений и изменении шаблонов мониторинга. Также опишем ключевые технологии и элементы инфраструктуры Zabbix.
Добавление пользователя
Каждому пользователю в Zabbix соотнесены имя пользователя и пароль — реквизиты, с которыми можно войти в систему. Все пароли в Zabbix хранятся в зашифрованном виде. При необходимости можно настроить авторизацию пользователей через Active Directory или LDAP. В этой статье мы рассмотрим работу встроенных в Zabbix пользователей.
В Zabbix каждый пользователь должен входить в группу. На основе групп в Zabbix присваиваются те или иные права.
Для добавления пользователя в веб-интерфейсе Zabbix необходимо перейти на представление Administration — Users и в верхнем правом углу нажать Create User.
Теперь появятся поля, в которых важно указать имя пользователя, группу и пароль. Остальное можно оставить по умолчанию.
Для каждого пользователя можно указать его данные для оповещения: электронную почту, аккаунт в Telegram, имя в Slack и т. д. Чтобы привязать эти данные к пользователю, перейдем на вкладку Media, нажмем Add и добавим адрес электронной почты. Здесь можно указать критичность событий, по которым нужно отправлять уведомления, и интервал оповещений.
После сохранения этих данных можно нажать Add на вкладке User и сохранить созданного пользователя.
Чтобы сменить пароль любого пользователя, на представлении Administration — Users нужно кликнуть на соответствующего пользователя, нажать Change password и ввести новый пароль.
Аналогичным образом создаем группу пользователей. На представлении Administration — Groups в верхнем правом углу нажмем Create user group.
Указываем имя группы и созданного пользователя. Далее переходим на вкладку Permissions.
На вкладке Permissions указываем имя группы хостов, к данным по которой у создаваемой группы будет доступ. После добавления группы нажимаем Add.
Таким образом, группа создана, ей предоставлен требуемый уровень прав и привязан пользователь.
Низкоуровневое обнаружение (Low Level Discovery, LLD)
Низкоуровневое обнаружение позволяет автоматически ставить на мониторинг динамические экземпляры узлов. Например, файловые системы или сетевые интерфейсы, которые добавят администраторы, автоматически обнаружатся и появятся на мониторинге. Правила автоматического обнаружения настраиваются в рамках шаблона.
Ниже, в качестве примера, Discovery Rules (правила обнаружения) для шаблона Windows. Здесь их четыре для следующих сущностей:
- файловых систем,
- сетевых интерфейсов,
- физических дисков,
- сервисов.
Рассмотрим устройство правила обнаружения для файловых систем. В поле Key указан элемент данных vfs.fs.discovery, встроенный в Zabbix. Этот элемент возвращает список файловых систем, примонтированных к серверу. Другие встроенные элементы данных собраны на специальной странице производителя.
На вкладке Filters перечислены прототипы данных, которые в случае обнаружения новых элементов распознают их и записывают в БД.
В Zabbix возможно добавление собственных элементов данных, собственных фильтров и макросов.
Изменение шаблонов Zabbix
Шаблоны включают в себя:
- приложения (Applications),
- экземпляры (Items),
- макросы (Macros),
- триггеры (Triggers),
- правила обнаружения (Discovery rules),
- другие элементы данных.
Каждый из этих элементов отвечает за те или иные возможности. В статье мы разберем формирование пороговых схем в триггерах на примере шаблона для Windows и его части — шаблона для файловых систем.
В примере ниже мы видим прототипы триггеров, которые соответствуют порогам по файловым системам серверов Windows. Чтобы изменить пороговую схему, достаточно перейти в нужный шаблон и внести корректировки.
Получить подробную информацию о создании выражений для настройки порогов можно в документации на сайте Zabbix.
Zabbix Proxy
Zabbix Proxy — это специальный сервис, который работает на выделенном сервере. Он обеспечивает буферизацию поступающих от агентов данных и их дальнейшую трансляцию в сторону Zabbix-сервера. Zabbix Proxy использует отдельную базу данных и поддерживает SQLite, MySQL и PostgreSQL.
Сервис эффективно использовать для сбора метрик с агентов в выделенных или удаленных сетях (за файерволом), участков инфраструктуры с ненадежной связью и для снижения нагрузки на Zabbix-сервер. Начиная с версии 5.0 прокси поддерживает предобработку данных на своей стороне.
Интеграция Zabbix с внешними системами
В этом разделе разберем возможности интеграции Zabbix с системой визуализации Grafana, которую можно использовать для отображения статусов, графиков, значений и других типов данных. Для ускорения процесса установим и запустим Grafana в виде Docker-контейнера.
# docker run -d -p 3000:3000 grafana/grafana
После установки удостоверимся, что контейнер с Grafana выполняется:
# docker ps | grep grafana
1592a00802b5 grafana/grafana "/run.sh" 2 minutes ago Up 21 minutes 0.0.0.0:3000->3000/tcp optimistic_diffie
Используя ID контейнера, установим специализированный плагин для Zabbix и перезагрузим контейнер:
# docker exec 1592a00802b5 grafana-cli plugins install alexanderzobnin-zabbix-app
# docker restart 1592a00802b5
Входим в Grafana через браузер (учетные данные по умолчанию admin / admin):
Далее нужно активировать плагин для Zabbix. Чтобы это сделать, перейдем в Configurations — Plugins и включим плагин для Zabbix:
Плагин включен, осталось его настроить. Важные поля для заполнения — URL, User, Password:
После выполненных настроек можно добавлять на дашборды различные элементы данных на основе метрик из Zabbix.
У Grafana есть много готовых дашбордов, их можно найти на сайте проекта и импортировать через интерфейс Grafana.
Заключение
В статье мы рассмотрели различные подходы для установки Zabbix и проведение дополнительных настроек. Этого достаточно для настройки базового мониторинга и контроля инфраструктуры и приложений.
Для визуализации, например, статусов доступности и производительности мы рекомендуем использовать удобный и мощный инструмент Grafana. Он легко устанавливается и настраивается. Кроме того, есть мобильное приложение, в котором можно просматривать «здоровье» инфраструктуры в режиме реального времени.