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

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

Тирекс Тирекс Самый зубастый автор 8 июля 2020

В этой статье мы расскажем об установке и настройке Zabbix с нуля на сервер с ОС CentOS, в виде Docker-контейнера и в виде образа виртуальной машины в формате OVF. Дополнительно разберемся с Zabbix-прокси, установкой Zabbix-агента на Windows, базовыми настройками и интеграцией с системой визуализации Grafana. После прочтения статьи вы сможете самостоятельно настроить мониторинг и оповещения […]

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

В этой статье мы расскажем об установке и настройке Zabbix с нуля на сервер с ОС CentOS, в виде Docker-контейнера и в виде образа виртуальной машины в формате OVF.

Дополнительно разберемся с Zabbix-прокси, установкой Zabbix-агента на Windows, базовыми настройками и интеграцией с системой визуализации Grafana. После прочтения статьи вы сможете самостоятельно настроить мониторинг и оповещения на почту или в мессенджер, как следствие, начнете контролировать свои серверы, сайты, приложения и другие элементы инфраструктуры.

Оглавление:

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

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

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

  • Red Hat Enterprise Linux;
  • Oracle Linux;
  • Ubuntu;
  • Debian;
  • SUSE Linux Enterprise Server;
  • Raspbian.

В середине мая 2020 года вышла 5-я версия Zabbix, установку которой мы и разберем в статье.

Установка Zabbix и его компонентов

Zabbix — распределенная система мониторинга, состоящая из четырех основных компонентов:

  1. Zabbix-сервер. Ядро системы мониторинга. Компонент отвечает за визуализацию, агрегацию и аналитику данных, оповещения, управление распределенными компонентами (прокси и агентами). В качестве веб-сервера вендор позволяет использовать Apache или Nginx.
  2. Zabbix-прокси. Этот компонент отвечает за управление Zabbix-агентами. Использование прокси необязательно, но позволяет снизить нагрузку на Zabbix-сервер за счет переноса с него функций управления агентами и предобработки данных (этот функционал появился в пятой версии Zabbix).
  3. Zabbix-агент. Агент — конечный компонент инфраструктуры мониторинга. Выполняет сбор и отправку данных о производительности на Zabbix-прокси или Zabbix-сервер.
  4. База данных 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. Переходим на представление ConfigurationHosts, затем в верхнем правом углу нажимаем Create Host:

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

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

Собираемые по узлам метрики доступны на представлении MonitoringLatest 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 и сохранить созданного пользователя.

Чтобы сменить пароль любого пользователя, на представлении AdministrationUsers нужно кликнуть на соответствующего пользователя, нажать Change password и ввести новый пароль.

Аналогичным образом создаем группу пользователей. На представлении AdministrationGroups в верхнем правом углу нажмем 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. Чтобы это сделать, перейдем в ConfigurationsPlugins и включим плагин для Zabbix:

Плагин включен, осталось его настроить. Важные поля для заполнения — URL, User, Password:

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

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

Заключение

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

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