Установка и настройка Zabbix с нуля

Установка и настройка Zabbix 5

Дмитрий Домлоджанов
Дмитрий Домлоджанов Технический писатель
8 июля 2024

В тексте рассказываем, как установить Zabbix 5, провести базовые настройки и интеграцию с внешними системами. Рассмотрим процесс установки на сервере с ОС CentOS и объясним, как выполнить настройку баз данных и web-интерфейса.

Изображение записи

Знакомство с системой

Zabbix — популярная система мониторинга IT-инфраструктуры и приложений с открытым исходным кодом, которой пользуются малые, средние и крупные компании по всему миру. В тексте мы расскажем об установке и настройке пятой версии Zabbix, которая вышла в мае 2020 года.

Основное преимущество продукта — большое сообщество пользователей и, как следствие, множество полезной информации о подходах к использованию, настройке, созданию шаблонов мониторинга и многом другом.

Скачать Zabbix можно на официальном сайте. Продукт поддерживает множество актуальных платформ. 

Поддерживаемые платформы Zabbix 5.
Поддерживаемые платформы Zabbix 5.

Кроме CentOS, установка Zabbix-сервера из бинарного файла возможна на следующие операционные системы:

  • Alma Linux,
  • Debian,
  • Oracle Linux,
  • Raspberry Pi OS,
  • Red Hat Enterprise Linux;
  • Rocky Linux,
  • SUSE Linux Enterprise Server;
  • Ubuntu,
  • Ubuntu (arm64).

Zabbix и его компоненты

Zabbix — это распределенная система мониторинга, которая состоит из компонентов. Рассмотрим ключевые.

  • Zabbix-сервер. Этот компонент — ядро системы мониторинга. Он отвечает за визуализацию, агрегацию и аналитику данных, оповещения, управление распределенными компонентами (прокси и агентами). В качестве web-сервера вендор позволяет использовать Apache или Nginx.
  • Zabbix-прокси. Компонент отвечает за управление Zabbix-агентами. Использование прокси опционально, но позволяет снизить нагрузку на Zabbix-сервер за счет переноса с него функций управления агентами и предобработки данных. Эта функциональность появилась как раз в пятой версии Zabbix.
  • Zabbix-агент. Агент — конечный компонент инфраструктуры мониторинга. Выполняет сбор и отправку данных о производительности на Zabbix-прокси или Zabbix-сервер.
  • База данных Zabbix. Хранилище метрик производительности. Вендор поддерживает реляционные базы данных: MySQL, PostgreSQL, SQL Server, Oracle. Обращаем внимание, что с версии 5.0 прекращена поддержка базы данных IBM DB2.
  • Web-интерфейс. Компонент предназначен для мониторинга показателей системы. Также при его помощи можно настраивать отслеживаемые компоненты и основную систему Zabbix.

Готовые решения для установки

Установка Zabbix в виде Docker-контейнера

Установка системы из Docker-контейнера — быстрый способ, который займет не более 10 минут. 

1. Добавим репозиторий 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

2. Перейдем в клонированный репозиторий и просмотрим содержимое командой 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

3. Запустим демон Docker.


    # systemctl start docker

4. Соберем и запустим контейнеры с Zabbix.


    # docker-compose -f docker-compose_v3_centos_pgsql_latest.yaml up -d

5. После запуска компонентов Zabbix, перейдем в web-интерфейс.

Web-интерфейс Zabbix.
Web-интерфейс Zabbix.

Установка Zabbix из готовых образов

Самый быстрый тип установки — из готовых образов. Разворачивание займет не более 5 минут. Рассмотрим установку Zabbix-сервера из образа в формате Open virtualization format (OVF). 

Готовые образы Zabbix.

Образ в формате .ovf и многих других можно скачать на официальном сайте Zabbix.

Для разворачивания OVF-образа на локальной машине предварительно нужно установить VirtualBox. Последний поддерживает множество актуальных платформ и доступен для скачивания на сайте Oracle. После установки ПО и загрузки образа, приступим к установке. 

1. В интерфейсе VirtualBox нажмем кнопку Импортировать.

Стартовая страница Oracle VM VirtualBox.

2. Выберем образ zabbix_appliance-5.0.0.ovf (рядом с ним должен находиться zabbix_appliance-5.0.0-disk001.vmdk). Нажмем Продолжить, а на следующем экране все параметры оставим по умолчанию и нажмем Импорт.

Выбор конфигурации.

3. Теперь мы можем открыть виртуальную машину соответствующей кнопкой Запустить. Обратите внимание, что для корректного подключения к интерфейсу Zabbix или виртуальной машине по SSH в сетевых настройках должен быть указан тип подключения Сетевой мост.

Виртуальная машина в Oracle VM VirtualBox.

4. Дожидаемся успешного запуска виртуальной машины, входим под учетными данными root / zabbix в консоли VirtualBox и выполняем команду # ip a. В результате увидим настройки сети на виртуальной машине с установленным Zabbix.

Настройки сети на виртуальной машине.

5. Теперь подключимся к Zabbix-серверу через браузер. Учетные данные стандартные — Admin / zabbix. Данные о производительности начнут собираться сразу. Установка завершена! 

Экран авторизации Zabbix.
Страница авторизации.
Страница сбора данных о производительности в Zabbix.
Сбор данных о производительности.

Ручная установка

Основные отличия установки

Рассмотрим установку системы на CentOS, Ubuntu, Debian и Windows. При этом важно отметить, что установка на дистрибутивы Ubuntu и Debian практически не отличается, поэтому подробнее остановимся на CentOS и Windows. 

Подобрать команды под конкретную версию Zabbix и версию ОС можно на официальном сайте. Для этого нужно только выбрать конфигурацию вашего сервера, а утилита автоматически подберет список команд со ссылками на документацию. Например, установка Zabbix-прокси пятой версии на сервер с Ubuntu 24.04 и БД PostgreSQL будет выглядеть так:

Скриншот официального сайта Zabbix. Утилита для подбора команд.

Установка Zabbix-сервера на CentOS

В первую очередь установим сервер. 

1. В панели управления перейдем во вкладку Облачная платформа → Проекты и нажмем на кнопку Создать проект. В следующем окне заполняем имя проекта и нажимаем Создать.

Создание проекта в панели управления Selectel.
Создание проекта в панели управления Selectel.

2. После создания проекта вернемся во вкладку Облачная платформа → Серверы и нажмем Создать сервер

Создание сервера в панели управления Selectel.

3. В окне конфигурирования нового сервера выбираем источник — CentOS 8 64-bit, vCPU — 4, RAM — 8. 

Конфигурация зависит от метрик мониторинга, которые вы будете использовать, а также от времени их хранения. Подробнее о требованиях к аппаратному и программному обеспечению — в официальной документации Zabbix.

В подразделе Сеть выбираем Новый публичный IP-адрес, чтобы позже мы могли подключиться к серверу через SSH и к web-консоли Zabbix через браузер. Остальные параметры можно оставить по умолчанию или настроить исходя из ваших требований.

Конфигурация нового сервера в панели управления Selectel.

4. В подразделе Доступ копируем пароль root. Нажимаем на кнопку Создать сервер. Как только сервер будет создан, во вкладке Облачная платформа →Серверы около него появится статус Active. Теперь мы можем подключиться к внешнему плавающему IP-адресу по протоколу SSH.

Cозданный сервер во вкладке «Серверы».

Перейдем к установке репозиториев ПО. Это нужно для получения актуального набора пакетов с компонентами Zabbix и PostgreSQL. 

1. Выполним команды для установки компонентов.


    # 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 и PostgreSQL.

2. Установим Zabbix-сервер и Zabbix-агент.


    # yum install zabbix-server-pgsql zabbix-agent

3. Внесем изменения в конфигурацию репозитория 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

4. Установим Red Hat Software Collections для упрощения дальнейшей настройки, а также PostgreSQL и другие пакеты.


    # yum install centos-release-scl
# yum install postgresql12-server zabbix-web-pgsql-scl zabbix-nginx-conf-scl

Обратите внимание, что в инструкции мы работаем с локальным хранилищем на базе PostgreSQL. Если вы используете MySQL, то имя пакета для Zabbix-сервера будет отличаться.

5. Инициализируем и настроим автозапуск, запустим БД PostgreSQL.


    # /usr/pgsql-12/bin/postgresql-12-setup initdb
# systemctl enable postgresql-12
# systemctl start postgresql-12

6. После успешного запуска создадим базу данных для Zabbix и пользователя в ней. Первая команда запросит пароль.


    # sudo -i -u postgres createuser --pwprompt zabbix
# sudo -i -u postgres createdb -O zabbix zabbix

7. Внесем изменения в конфигурационный файл /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

8. После создания пользователя организуем для него схему по умолчанию.


    # sudo -i -u postgres psql -U zabbix
# zabbix=> create schema zabbix;
# zabbix=> ALTER ROLE zabbix SET search_path = zabbix;
# zabbix=> \q

9. Установим в БД схемы данных.


    # zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix

10. Впишем созданный для БД пароль в конфигурационный файл Zabbix /etc/zabbix/zabbix_server.conf. На этом шаге нам нужны параметры DBHost, DBName, DBSchema, DBUser и DBPassword.

Далее — настроим Nginx для корректной работы в Zabbix. 
1. Перейдем в конфигурационный файл /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf. Раскомментируем две строки и укажем IP-адрес или имя сервера.


    listen 80;
server_name <ip адрес или имя сервера>;


2. Перейдем к файлу  /etc/opt/rh/rh-php72/php-fpm.d/zabbix.con и внесем изменения в двух местах.


    listen.acl_users = apache,nginx
php_value[date.timezone] = Europe/Moscow

3. Запустим сервисы 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.

Начальное окно настройки Zabbix 5.0.

1. Переходим на экран Configure DB connection и указываем реквизиты подключения к БД.

Экран Configure DB connection.

2. В окне Zabbix server details вводим имя хоста, на котором установлен Zabbix. Порт оставляем по умолчанию.

Страница Zabbix server details.

3. Переходим на последний экран и нажимаем Finish. Настройка завершена.

Завершающая страница настройки.

4. Стандартная учетная запись для входа — Admin с паролем zabbix. Установка завершена и система готова к работе, можно приступать к ее настройке. 

Страница авторизации.

В некоторых ситуациях для корректной работы системы Zabbix важно отключить SElinux.

Установка Zabbix-сервера с MySQL в Ubuntu и Debian

Установка Zabbix на Ubuntu и Debian практически идентична из-за схожести дистрибутивов. Отличается только первый этап. Рассмотрим пошаговый процесс установки Zabbix с использованием базы данных MySQL, а также web-серверов Apache и Nginx. 

1. Скачаем репозиторий Zabbix, установим его и обновим репозитории. В примере используем Ubuntu 20.04 и Debian 10, но вы можете заменить название дистрибутива исходя из версии.

Для Ubuntu:


    wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_5.0+ubuntu20.04_all.deb
dpkg -i zabbix-release_latest_5.0+ubuntu20.04_all.deb
apt update

Для Debian:


    # wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_5.0+debian10_all.deb
# dpkg -i zabbix-release_latest_5.0+debian10_all.deb
# apt update

2. Установим MySQL, web-интерфейс, Zabbix-сервер, а также Zabbix-агент, если не сделали этого ранее.

Для работы с Apache:


    apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent

Для работы с Nginx:


    apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent

3. Создадим базу данных и пользователя для Zabbix, задаем пароль.


    sudo mysql -u root -p

4. В консоли MySQL создадим БД с кодировкой, пользователя и пароль для него, а также выдадим ему доступ к базе данных. Обратите внимание, что система Zabbix поддерживает только кодировку UTF-8.


    create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by пароль для нового пользователя';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;

5. Импортируем начальную схему и данные на хосте Zabbix. Система запросит пароль — указываем тот, что создали на предыдущем шаге.


    zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

6. В конфигурационном файле Zabbix-сервера /etc/zabbix/zabbix_server.conf введем после  DBPassword= пароль для подключения к БД. Далее — сохраним изменения и закроем редактор. 
7. Для Apache — отредактируем файл /etc/zabbix/apache.conf. Раскомментируем строку и установим правильный временной пояс,  в нашем примере — московский, но вы можете выбрать любой подходящий.


    php_value date.timezone Europe/Moscow

Для Nginx — отредактируем файл /etc/zabbix/nginx.conf. Раскомментируем и настроим директивы listen и server_name.


    listen 80;
server_name example.com;

Также при работе с Nginx важно отредактировать файл /etc/zabbix/php-fpm.conf. Раскомментируем строку и укажем свой часовой пояс.


    php_value[date.timezone] = Europe/Moscow

8. Перезапустим web-сервис и настроим автозапуск при загрузке операционной системы. 

Для Apache:


    # systemctl restart zabbix-server zabbix-agent apache2
# systemctl enable zabbix-server zabbix-agent apache2

Для Nginx:


    # systemctl restart zabbix-server zabbix-agent nginx php7.3-fpm
# systemctl enable zabbix-server zabbix-agent nginx php7.3-fpm

Установка завершена! 

Установка агента Zabbix на Windows

Перед началом установки создадим в панели управления сервер с ОС Windows. 

1. Во вкладке Облачная платформа → Проекты и нажмем на кнопку Создать проект. В следующем окне заполняем имя проекта и нажимаем Создать.

Создание проекта в панели управления Selectel.
Создание проекта в панели управления Selectel.

2. Перейдем во вкладку Облачная платформа → Серверы и нажмем Создать сервер

Создание сервера в панели управления Selectel.

3. В окне конфигурирования нового сервера выбираем источник — Windows Server 2016 Standard, vCPU — 4, RAM — 8. Остальные настройки оставляем по умолчанию, однако вы можете конфигурировать сервер исходя из ваших требований.

Настройка нового сервера в панели управления.
Выбор источника.

4. В подразделе Сеть выбираем Новый публичный IP-адрес для подключения к серверу через RDP. 

Настройка сети для нового сервера.

5. В подразделе Доступ копируем пароль учетной записи Administrator для дальнейшего доступа к серверу по RDP. Нажимаем на кнопку Создать сервер.

Настройка доступа для нового сервера.

6. Когда сервер будет готов, во вкладке Облачная платформа → Серверы он перейдет в статус Active. Теперь можно подключаться к внешнему плавающему IP-адресу по протоколу RDP.

Новый сервер в разделе «Серверы».

Установка и настройка Zabbix-агента на Windows-сервер в ручном режиме занимает около 10 минут. Скачать дистрибутив можно на сайте Zabbix

1. После скачивания архив распакуем в созданную директорию (в нашем примере — C:\Zabbix).

Директория C:\Zabbix.

2. Внесем изменение в конфигурационный файл, который хранится в папке conf.


    Server=<ip адрес Zabbix-сервера>

3. Установим агент в виде сервиса и запустим его. Для этого выполним zabbix_agentd со специальными реквизитами.


    > zabbix_agentd.exe -c C:\Zabbix\conf\zabbix_agentd.conf -i
> zabbix_agentd.exe -c C:\Zabbix\conf\zabbix_agentd.conf --start
Скриншот консоли.

4. Добавим агента в web-интерфейсе Zabbix. Перейдем во вкладку Configuration Hosts и в верхнем правом углу нажмем Create Host.

Вкладка Hosts в web-интерфейсе Zabbix.

5. Введем данные сервера — имя, группу и сетевой интерфейс, через который будет выполняться подключение к агенту.

Настройка сервера.

6. Перейдем на вкладку Templates. Так как речь идет об ОС Windows, применим к узлу соответствующий шаблон Template OS Windows by Zabbix agent. Сохраним изменения и подождем начала сбора метрик.

Вкладка Templates.

7. Собираемые по узлам метрики доступны на представлении Monitoring → Latest Data. Напротив каждой метрики (Item) есть кнопка Graph, при нажатии на которую открывается соответствующий график. Настройка мониторинга узла с ОС Windows завершена!

Вкладка Latest Data.
Вкладка Latest Data.
Отображение графика в web-интерфейсе.
Отображение графика.

Настройка и интеграция Zabbix 5

Рассмотрим добавление пользователя, настройку оповещений и изменение шаблонов мониторинга. Также опишем ключевые технологии и элементы инфраструктуры Zabbix.

Настройка web-интерфейса

В web-интерфейсе мы можем настроить отчеты и мониторить работу серверов. Важно отметить, что фронтенд Zabbix написан на PHP, поэтому для запуска нужен сервер с его поддержкой.

1. Откроем в браузере URL-адрес web-интерфейса Zabbix. Для Nginx — http://<server_ip_or_name>, для Apache — http://<server_ip_or_name>/zabbix. Так мы попадем на первую страницу установки. Переходим к следующему этапу, нажав кнопку Next step.

Стартовая страница установки.

2. Во втором окне убедимся, что на всех строках зафиксирован статус OK

Страница Check of pre-requisites.

3. Проверяем поля для подключения к БД. Автоматически заполнено все, кроме пароля. Вводим его.

Страница Configure DB connection.

4. Оставляем поля по умолчанию. Поле Name — опциональное, но при указании имени сервера оно будет отображаться в меню и заголовках страниц.

Страница Zabbix server details.

5. Проверяем настройки и переходим далее.

Страница Pre-installation summary.

6. Установка завершена. Нажимаем Finish.

Завершающая страница установки.

7. Переходим на страницу авторизации, вводим имя и пароль для входа в web-интерфейс. 

Страница авторизации.

Добавление пользователя

Для каждого пользователя в Zabbix есть имя и пароль — реквизиты, с которыми можно войти в систему. Все пароли в Zabbix хранятся в зашифрованном виде, а при необходимости можно настроить авторизацию пользователей через Active Directory или LDAP. Рассмотрим работу встроенных в Zabbix пользователей.

Важный нюанс: в системе Zabbix каждый пользователь должен входить в группу. На их основе присваиваются соответствующие права. Создадим пользователя и рассмотрим на примере.

1. В web-интерфейсе Zabbix перейдем в раздел Administration, далее — во вкладку Users. В верхнем правом углу нажмем Create User.

Вкладка Users.

2. Укажем имя пользователя, группу и пароль. Остальные поля можно оставить по умолчанию.

Настройка пользователя.

3. Для каждого пользователя можно указать его данные для оповещения: электронную почту, аккаунт в Telegram, имя в Slack и т. д. Для этого перейдем на страницу Media, нажмем Add. В качестве примера выберем TypeEmail и укажем адрес электронной почты. Также здесь можно задать критичность событий, по которым нужно отправлять уведомления, а также интервал оповещений.

Страница Media.

4. После внесения всей информации нажмем Add во вкладке User и сохраним созданного пользователя.

Важно: для любого пользователя мы можем сменить пароль. Для этого в Administration → Users нужно выбрать соответствующую учетную запись, нажать Change password и ввести новый пароль.

Смена пароля в web-интерфейсе.

Теперь создадим группу пользователей. 

1. Переходим во вкладку Administration → User groups. В верхнем правом углу нажимаем Create user group.

Вкладка User Groups.

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

Создание новой группы.

3. На странице Permissions указываем имя группы хостов, к данным по которой у создаваемой группы будет доступ. Нажимаем Add.

Страница Permissions.

4. Группа создана. Ей предоставлен требуемый уровень прав, а также привязан пользователь.

Также важно отметить, что одно из нововведений пятой версии Zabbix — поддержка SAML (Security Assertion Markup Language), — открытого стандарта обмена данными аутентификации. Он позволяет использовать одни учетные данные для авторизации и получения доступа в нескольких приложениях. 

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

Низкоуровневое обнаружение (Low Level Discovery, LLD)

Низкоуровневое обнаружение позволяет автоматически ставить на мониторинг динамические экземпляры узлов. Например, файловые системы или сетевые интерфейсы, которые добавят администраторы, автоматически обнаружатся и появятся в системе мониторинга. Помимо прочего, в рамках шаблона можно настроить правила автоматического обнаружения.

В качестве примера рассмотрим Discovery Rules (правила обнаружения) для шаблона Windows. Здесь их четыре для следующих сущностей:

  • файловых систем,
  • сетевых интерфейсов,
  • физических дисков,
  • сервисов.
Страница Discovery Rules (правила обнаружения) в web-интерфейсе.
Раздел Discovery rules в web-интерфейсе.

Рассмотрим устройство правила обнаружения для файловых систем. В поле Key указан элемент данных vfs.fs.discovery, встроенный в Zabbix. Он возвращает список файловых систем, примонтированных к серверу. Другие встроенные элементы данных собраны на отдельной странице производителя.

Настройка правил обнаружения.
Настройка правил обнаружения.

Во вкладке Filters перечислены прототипы данных, которые в случае обнаружения новых элементов распознают их и запишут в БД.

Вкладка Filters.
Вкладка Filters.

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

Изменение шаблонов Zabbix

Шаблоны в Zabbix включают в себя следующие компоненты:

  • приложения (Applications),
  • экземпляры (Items),
  • макросы (Macros),
  • триггеры (Triggers),
  • правила обнаружения (Discovery rules),
  • другие элементы данных.

Каждый из элементов отвечает за свои уникальные возможности. Разберем формирование пороговых схем в триггерах на примере шаблона для Windows и его части — шаблона для файловых систем.

Страница Discovery Rules (правила обнаружения) в web-интерфейсе.

В примере ниже мы видим прототипы триггеров, которые соответствуют порогам по файловым системам Windows-серверов. Чтобы изменить пороговую схему, достаточно перейти в нужный шаблон и внести корректировки.

Страница Trigger prototypes.

Получить подробную информацию о создании выражений для настройки порогов можно в документации Zabbix.

Zabbix-прокси

Zabbix-прокси (Zabbix proxy) — процесс, который собирает данные мониторинга и позволяет отправлять их Zabbix-серверу. Он обеспечивает буферизацию информации, которая поступает от агентов, а также ее дальнейшую трансляцию в сторону Zabbix-сервера. Zabbix-прокси использует отдельную базу данных и поддерживает SQLite, MySQL и PostgreSQL.

Zabbix proxy можно эффективно использовать для сбора метрик с агентов в выделенных или удаленных сетях (за файерволом), участков инфраструктуры с ненадежной связью, а также для снижения нагрузки на Zabbix-сервер. Начиная с версии 5.0 прокси поддерживает предобработку данных на своей стороне.

Настройка шифрованной передачи данных

Шифрование данных между Zabbix-агентом и Zabbix-сервером — важный аспект безопасности, особенно при передаче данных через интернет без использования защищенного (зашифрованного) канала. Рассмотрим настройку с использованием предварительно согласованных ключей (Pre-Shared Keys, PSK). Это можно сделать, например, с помощью GnuTLS или OpenSSL. Рассмотрим второй вариант. 

Генерация Pre-Shared Key (PSK)

Сгенерируем 256-битный (32-байтный) PSK. На хосте с установленным Zabbix-агентом выполним следующую команду в консоли. Она создаст файл с ключом по указанному пути. 


    openssl rand -hex 32 > /etc/zabbix5/zabbix_agentd.psk

Настройка агента Zabbix

Откроем конфигурационный файл агента zabbix_agentd.conf и добавим параметры.

  • TLSConnect — указывает, что агент будет использовать PSK для подключения.
  • TLSAccept — разрешает серверу подключаться с использованием PSK.
  • TLSPSKFile — путь к файлу с ключом.
  • TLSPSKIdentity — уникальный идентификатор ключа.

    TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001

После внесения изменений важно перезапустить Zabbix Agent.


    systemctl restart zabbix-agent

Настройка шифрования на Zabbix Server

Перейдем в web-интерфейс Zabbix-сервера и выполним следующие действия.

  1. Откроем свойства хоста, данные от которого передаются через агент.

2. Перейдем во вкладку Шифрование.

3. Укажем следующие настройки:

  • в полях Тип подключения и Соединение с узлом сети — PSK,
  • идентификатор PSK — PSK 001 (должен совпадать с TLSPSKIdentity в конфигурации агента),
  • сгенерированный ключ из файла /etc/zabbix/zabbix_agentd.psk.

Если шифрование настроено корректно, на странице информации о хосте в web-интерфейсе Zabbix Server будет отображена пометка о зашифрованном соединении. Настройка обеспечивает безопасную передачу данных и минимизирует риски утечки конфиденциальной информации.

Интеграция Zabbix с внешними системами

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

Об инструменте Grafana, его установке и настройке, подключении внешних источников данных и не только — в отдельном обзоре.

1. Установим и запустим Grafana в виде Docker-контейнера.


    # docker run -d -p 3000:3000 grafana/grafana

2. После установки убедимся, что контейнер с 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

3. Используя ID контейнера, установим специализированный плагин для Zabbix и перезагрузим контейнер.


    # docker exec 1592a00802b5 grafana-cli plugins install alexanderzobnin-zabbix-app
# docker restart 1592a00802b5

4. Войдем в Grafana через браузер (учетные данные по умолчанию — admin / admin).

Стартовая страница web-интерфейса Grafana.
Web-интерфейс Grafana.

5. Активируем плагин для Zabbix. Чтобы это сделать, перейдем в Configurations → Plugins и нажмем Enable.

Страница Plugins.

6. Плагин включен, перейдем к конфигурации. Важные поля для заполнения — URL, User, Password. Остальные настройки можно оставить по умолчанию.

Конфигурирование Zabbix.

7. Настройка завершена. Можно добавлять на дашборды различные элементы данных на основе метрик из Zabbix.

Дашборд Zabbix Server.

У Grafana есть множество готовых дашбордов. Их можно найти на сайте проекта и импортировать через web-интерфейс.

Сервер с Zabbix в Selectel

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

1. Во вкладке Облачная платформа → Серверы нажмем Создать сервер

Создание сервера в панели управления Selectel.

2. Введем имя сервера, выберем регион и пул. От сегмента пула зависит список доступных конфигураций сервера и стоимость ресурсов. 

Настройка нового сервера.

3. Откроем раздел Источник и перейдем во вкладку Приложения. Здесь доступно ПО для администрирования, разработки, проведения видеоконференций и обеспечения информационной безопасности. В списке находим Cloud Zabbix.

Страница выбора источника в панели управления.

4. В блоке Конфигурация выберем фиксированную или произвольную конфигурацию сервера, настроим загрузочный диск. Советуем при настройке исходить из количества метрик мониторинга, которые вы хотите использовать, а также от времени их хранения. Подробнее о расчете конфигурации сервера — в официальной документации Zabbix.

5. В блоке Сеть настроим приватную подсеть и подключим публичный IP-адрес. 

Настройка сети в панели управления.

6. Укажем пользовательские параметры конфигурации операционной системы. В блоке Автоматизация в поле User data вставим скрипт, который выполнится при загрузке системы. В него можно добавить дополнительные параметры.

Настройка автоматизации в панели управления Selectel.

При создании сервера с выпуском TLS-сертификата: 


    #cloud-config

write_files:
- path: "/opt/gomplate/values/user-values.yaml"
 permissions: "0644"
 content: |
   pg_password: "<bd_user_password>"
   zabbixDomain: <example.com>
   leEmail: <name@example.com>
   httpsMethod: redirect

При создании сервера без выпуска TLS-сертификата:


    #cloud-config

write_files:
- path: "/opt/gomplate/values/user-values.yaml"
 permissions: "0644"
 content: |
   admin_password: "<bd_user_password>"
   zabbixDomain: <example.com>

Вместо <bd_user_password> укажем пароль пользователя базы данных, который должен содержать:

  • более восьми символов,
  • не менее одной прописной буквы,
  • не менее одной строчной буквы,
  • не менее одной цифры.

<example.com> — домен для доступа к Zabbix. Для домена нужно добавить A-запись и указать в значении записи ваш публичный IP-адрес. Если домен добавлен в DNS-хостинг Selectel (actual), используйте инструкцию Добавить ресурсную запись. После создания сервера для домена автоматически выпустится TLS-сертификат от Let’s Encrypt®.

7. Проверим цену облачного сервера и нажмем Создать сервер

Создание сервера в панели управления Selectel.

Заключение

В статье мы рассмотрели различные подходы для установки Zabbix и рассмотрели дополнительные настройки. Этого достаточно для конфигурации базового мониторинга, контроля инфраструктуры и приложений. 

Для визуализации, например, статусов доступности и производительности мы рекомендуем использовать удобный инструмент Grafana. Он легко устанавливается и настраивается, о чем мы рассказали в обзоре. Кроме того, есть мобильное приложение, в котором можно просматривать «здоровье» инфраструктуры в режиме реального времени.