В этой статье мы расскажем об установке и настройке Zabbix с нуля на сервер с ОС CentOS, в виде Docker-контейнера и в виде образа виртуальной машины в формате OVF.
Дополнительно разберемся с Zabbix-прокси, установкой Zabbix-агента на Windows, базовыми настройками и интеграцией с системой визуализации Grafana. После прочтения статьи вы сможете самостоятельно настроить мониторинг и оповещения на почту или в мессенджер, как следствие, начнете контролировать свои серверы, сайты, приложения и другие элементы инфраструктуры.
- Знакомство с системой
- Установка Zabbix и его компонентов
- Настройка и интеграция Zabbix 5
- Интеграция Zabbix с внешними системами
- Заключение
- Общие понятия и требования
- Базовые компоненты Zabbix
- Overview
- Installation
- Create a Proxmox Virtual Machine
- Download the Appliance
- Unzip the Appliance
- Import the Appliance Disk to the Virtual Machine
- Update VM Options
- Assign Static IP Address (Optional)
- Start VM
- Log Into the Web Interface
- Post navigation
- 6 Using Zabbix appliance
- 6.1 Changes to SUSE configuration
- 6.2 Zabbix configuration
- 6.3 Frontend access
- 6.4 Firewall
- 6.5 Monitoring capabilities
- 6.6 Naming, init and other scripts
- 6.7 Format-specific notes
- 6.8 Known issues
- Знакомство с системой
- Ручная установка
- Установка на Zabbix на Debian 10
- Установка Zabbix на Ubuntu 20.04
- Установка Zabbix на CentOS 7
- Работа с сервером баз данных MySQL
- Debian 10
- Ubuntu 20.04
- CentOS 7
- Создание базы данных и пользователя
- Настройка PHP для веб-интерфейса Zabbix
- Debian 10 и Ubuntu 20.04
- Centos 7
- Запуск Zabbix-сервера и процессов агента
- Debian 10
- Ubuntu 20.04
- Centos 7
- Проверка доступности веб-интерфейса
- Настройка и интеграция Zabbix 5
- Добавление пользователя
- Низкоуровневое обнаружение (Low Level Discovery, LLD)
- Изменение шаблонов Zabbix
- Zabbix Proxy
- Интеграция Zabbix с внешними системами
- Настройка web-интерфейса
- Установка Zabbix и его компонентов
- Установка Zabbix-сервера на CentOS
- Установка Zabbix в виде Docker-контейнера
- Установка Zabbix из готовых образов
- Установка агента Zabbix на Windows
- Готовые решения
- Установка из образа
- Установка Zabbix из контейнеров Docker
- Вариант №1
- Вариант №2
- Заключение
Общие понятия и требования
Установка и настройка Zabbix-сервера на VPS начинается с подготовки рабочего окружения. Для работы потребуется минимум 2 устройства:
- Сервер. Здесь устанавливается мониторинг-система, отслеживающая сетевую и программную активность устройства. Информация записывается в базу данных.
- Клиент. Используется для управления Zabbix-сервером через веб-интерфейс.
Базовые компоненты Zabbix
- СУБД — совокупность программных модулей для управления базами данных (создания, удаления, добавления записей и т. д.). Zabbix поддерживает следующие СУБД: MySQL (InnoDB или MariaDB engine), Oracle, PostgreSQL, IBM DB2, SQLite.
- База данных (БД) — связанные между собой данные, организованные по определенной структуре в виде таблиц.
- PHP (препроцессор гипертекста) — язык программирования, используемый для построения web-приложений с использованием БД.
- Web-сервер (Apache, Nginx) — набор программных средств для работы с web-приложениями.
Сбор и передача информации с сервера на клиент выполняется по защищенному шифрованием каналу при помощи специального приложения — Zabbix-агента.
Для установки Zabbix-сервера рекомендуется использовать Linux / Unix-платформы. Для этой цели отлично подойдут операционные системы: Debian, Ubuntu и CentOS.
Подробнее об архитектуре и принципах работы Zabbix можно почитать в отдельной статье.
Overview
With a quickly growing HomeLab that contains many servers/services/devices I am starting to see the importance of being able to monitor all these ‘things’ from a central location. My understanding is that the goal of Zabbix is to do exactly this. So lets give it a go!
Installation
Initially i figured I would just install Zabbix in Docker like I do for most other services, but i quickly realized that the docker-compose would get messy pretty quick (see here for a sample). After looking over the install options on the Zabbix site, i realized that they offer a virtual appliance that can be run on most hypervisors (I run proxmox which supports the qcow2 KVM disk format). Here’s my steps for installing the virtual appliance in Proxmox (additional installation details can be found on the Zabbix appliance documentation):
Create a Proxmox Virtual Machine
When creating the VM, you can use all the default options, just give it a name and remove the HardDisk after the VM is created (we will add the Zabbix appliance disk later).

Download the Appliance
# From the proxmox shell run the following to download the appliance
# Note: Right click the Zabbix appliance download link to get the latest version
wget https://cdn.zabbix.com/zabbix/appliances/stable/5.2/5.2.5/zabbix_appliance-5.2.5-qcow2.tar.gz
Unzip the Appliance
tar -xvzf zabbix_appliance-5.2.5-qcow2.tar.gz
Import the Appliance Disk to the Virtual Machine
# Note: Change the vm id, the appliance version and the storage type below
# (you may need to use 'local' if you are not using 'zfs')
qm importdisk 105 zabbix_appliance-5.2.5.qcow2 zfs
# Cleanup unneeded files
rm -rf zabbix_appliance-5.2.5-qcow2
rm zabbix_appliance-5.2.5-qcow2.tar.gz
Update VM Options
At this point you’ll want to make sure your VM is set to boot from the imported disk and to start on boot.

Assign Static IP Address (Optional)
Note: At this point it may be helpful to assign a DHCP Static mapping so your VM will receive a static IP address from your Router. This is how I did it in OPNSense:

Start VM

Log Into the Web Interface
In your browser navigate to the IP address of your Zabbix VM:


Congratulations. You have have a running Zabbix Instance! Don’t forget to finish configuring and securing your instance. A few items I addressed immediately were:
- Changing Web login credentials: WebUI > User Settings > Change Password
- Changing Console credentials: `
sudo passwd root
` Change timezone: `cp /usr/share/zoneinfo/US/Eastern /etc/localtime
`- For fun: change to the dark theme: WebUI > User Settings > Theme
Now that you’re setup, what are you waiting for, get started monitoring all the things! We won’t cover how to setup monitoring in this post, we’ll save that for a future post which delves deeper into the benefits and use-cases of Zabbix. Enjoy! Also see Zabbix Host Configuration and Zabbix Email Notifications.
6 Using Zabbix appliance
To get started, boot the appliance and point your browser at the IP it has received over DHCP.
-
OVF (Open Virtualisation Format);
It has Zabbix server configured and running on MySQL, as well as frontend available.
The appliance has been built using SUSE Studio.
6.1 Changes to SUSE configuration
There are some changed applied to the base OpenSUSE configuration.
6.1.1 MySQL configuration changes
-
Binary log is disabled;
-
InnoDB is configured to store data for each table in a separate file.
6.1.2 Using a static IP address
By default the appliance uses DHCP to obtain IP address. To specify a static IP address:
-
Open file /etc/sysconfig/network/ifcfg-eth0 in your favourite editor;
-
Set BOOTPROTO variable to static;
-
Set IPADDR, NETMASK and any other parameters as required for your network;
-
Create file /etc/sysconfig/network/routes. For the default route, use default 192.168.1.1 – – (replacing with your gateway address).
-
Run the command rcnetwork restart.
To configure DNS, add nameserver entries in /etc/resolv.conf, specifying each nameserver on its own line: nameserver 192.168.1.2.
Alternatively, just use yast configuration utility to update network settings.
6.1.3 Changing time zone
cp /usr/share/zoneinfo/Europe/Riga /etc/localtime
6.1.4 Other changes
-
Network is configured to use DHCP to obtain IP address;
-
Utility fping is set to have permissions 4710 and is owned by group zabbix – suid and only alowed to be used by zabbix group;
-
ntpd configured to synchronise to the public pool servers;
-
Various basic utilities have been added that could make working with Zabbix and monitoring in general easier.
6.2 Zabbix configuration
6.2.1 Passwords
6.2.2 File locations
-
Configuration files are placed in /etc/zabbix.
-
Zabbix logfiles are placed in /var/log/zabbix.
6.2.3 Changes to Zabbix configuration
-
Some items and triggers in the default Linux template are disabled (mostly those who did not correspond to appliance setup);
-
Server name for Zabbix frontend set to “Zabbix 1.8 Appliance”;
-
Frontend timezone is set to Europe/Riga, Zabbix home (this can be modified in /etc/php5/apache2/php.ini);
-
Disabled triggers and web scenarios are shown by default to reduce confusion.
6.2.4 Preserving configuration
If you are running live CD version of the appliance or for some other reason can’t have persistent storage, you can create a backup of whole database, including all configuration and gathered data.
To create the backup, run:
mysqldump zabbix | bzip2 -9 > dbdump.bz2
Now you can transfer file dbdump.bz2 to another machine.
To restore from the backup, transfer it to the appliance and execute:
bzcat dbdump.bz2 | mysql zabbix
Make sure that Zabbix server is stopped while performing the restore.
6.3 Frontend access
Access to frontend by default is allowed from:
Root (/) is redirected to /zabbix on the webserver, thus frontend can be accessed both as http://<host> and http://<host>/zabbix.
service apache2 restart
6.4 Firewall
By default, only two ports are open – 22 (SSH) and 80 (HTTP). To open additional ports – for example, Zabbix server and agent ports – modify iptables rules with SuSEfirewall2 utility:
SuSEfirewall2 open EXT TCP zabbix-trapper zabbix-agent
Then reload the firewall rules:
SuSEfirewall2 stop SuSEfirewall2 start
6.5 Monitoring capabilities
In the provided configuration Zabbix server itself is monitored with the help of locally installed agent for some base parameters, additionally Zabbix frontend is monitored as well using web monitoring.
Note that web frontend monitoring logs in – this can add lots of entries to the audit log.
6.6 Naming, init and other scripts
Zabbix daemons have their names changed from standard with underscore to dash to conform to SUSE guidelines. They are called:
In a similar fashion, configuration files are:
Appropriate init scripts are provided. To control Zabbix server, use any of these:
service zabbix-server status rczabbix-server status /etc/init.d/zabbix-server status
Replace server with agentd for Zabbix agent daemon.
6.6.1 Scheduled scripts
There is a scheduled script, run from the crontab every 10 minutes that restarts Zabbix server if it is not running, /var/lib/zabbix/bin. It logs timestamped problems and starting attempts at /var/log/zabbix/server_problems.log. This script is available since Zabbix Appliance version 1.8.3.
Make sure to disable this crontab entry if stopping of Zabbix server is desired.
6.6.2 Increasing available diskspace
Create a backup of all data before attempting any of the steps.
Start fdisk to change the partition size. As root, execute:
fdisk /dev/sda
This will start fdisk on disk sda. Next, switch to sectors by issuing:
u
Don’t disable DOS compatibility mode by entering c. Proceeding with it disabled will damage the partition.
d n p 1 (accept default 63) (accept default max)
If you wish to leave some space for additional partitions (swap etc), you can enter another value for last sector. When done, save the changes by issuing:
w
Reboot the virtual machine (as the partition we modified is in use currently). After reboot, filesystem resizing can take place.
resize2fs /dev/sda1
That’s it, filesystem should be grown to the partition size now.
6.7 Format-specific notes
6.7.1 Xen
To use images in Xen server, run:
xm create -c file-with-suffix.xenconfig
Converting image for XenServer
To use Xen images with Citrix Xenserver you have to convert the disk image. To do so:
-
Create a virtual disk which is at least as large as the image
-
Find out the UUID for this disk
xe vdi-list params=all
-
If there are lots of disks, they can be filtered by name parameter name-label, as assigned when creating the virtual disk
-
Import the image
xe vdi-import filename="image.raw" uuid="<UUID>"
Instructions from Brian Radford blog.
6.7.2 VMWare
The images in vmdk format are usable directly in VMWare Player, Server and Workstation products. For use in ESX, ESXi and vSphere they must be converted using VMWare converter.
6.7.3 HDD/flash image (raw)
6.8 Known issues
6.8.1 For appliance 1.8.8
Zabbix appliance 1.8.8 reports itself as being based on 1.8.7 in the boot messages. This is incorrect, actual appliance contains Zabbix 1.8.8.
Data source: Zabbix
Знакомство с системой
Zabbix — популярная система мониторинга ИТ-инфраструктуры и приложений с открытым исходным кодом, которой пользуются малые, средние, крупные и очень крупные компании по всему миру. Основное преимущество продукта — большое сообщество пользователей и, как следствие, много полезной информации о подходах к использованию, настройке, созданию шаблонов мониторинга и многом другом.
Получить Zabbix можно на официальном сайте. Скачивание доступно в различных форматах. Кроме CentOS, установка Zabbix-сервера из бинарного файла возможна на следующие операционные системы:
- Red Hat Enterprise Linux;
- Oracle Linux;
- Ubuntu;
- Debian;
- SUSE Linux Enterprise Server;
- Raspbian.

В середине мая 2020 года вышла 5-я версия Zabbix, установку которой мы и разберем в статье.
Ручная установка
Ниже мы покажем как развернуть Zabbix на VDS на примере трех ОС — Debian 10, Ubuntu 20.04 и CentOS 7.
Установка на Zabbix на Debian 10
Команды, вводимые в терминале на Debian 10 (Debian 9) практически идентичны Ubuntu 20.04., но есть некоторые отличия.
Установка системы мониторинга начинается с загрузки deb-пакета Zabbix 5:
wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_5.0-1+buster_all.deb
Далее его необходимо установить:
dpkg -i zabbix-release_5.0-1+buster_all.deb apt update
Далее нужно установить Zabix-сервер и агент для его мониторинга командой:
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
Установка Zabbix на Ubuntu 20.04
Для начала установки Zabbix 5 на Ubuntu загружаем и устанавливаем deb-пакет:
wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb dpkg -i zabbix-release_5.0-1+focal_all.deb apt update
Устанавливаем Zabix-сервер и агент:
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
Установка Zabbix на CentOS 7
Установка начинается с добавления репозитория, находящегося на официальном сайте. Сделать это можно при помощи последовательности двух команд:
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm yum clean all
Далее нужно установить Zabix-сервер и агент:
yum install zabbix-server-mysql zabbix-agent
После этого нужно установить веб-интерфейс Zabix, последовательно выполнив ряд действий.
- Установить пакет актуального софта для CentOS из репозитория Red Hat Software Collections:
yum install centos-release-scl
- Отредактировать файл «» и включить репозиторий «», выполнив команду:
vi /etc/yum.repos.d/zabbix.repo
- Здесь следует заменить строку «» на «».
[zabbix-frontend] ... enabled=1 ...
- Далее нужно установить пакеты веб-интерфейса Zabbix:
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
Работа с сервером баз данных MySQL
Debian 10
Переходим в директорию «»:
cd /tmp
Устанавливаем консольную утилиту wget:
apt -y install wget
Устанавливаем APT репозиторий с deb-пакетом, который управляет загрузкой и настройкой программного обеспечения MySQL:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb dpkg -i mysql-apt-config_0.8.13-1_all.deb
Для установки последней версии нужно оставить все как есть и нажать ввод на «Оk»
Устанавливаем MySQL сервер:
apt update apt install mysql-server
Во время установки появится диалоговое окно конфигурации, в котором нужно будет задать пароль пользователя root для MySQL. Введите безопасный и надежный пароль, а затем подтвердите его.
После этого появится предупреждение о новой системе аутентификации, на основе SHA256, использующейся в MySQL. Нажимаем «Ok». Далее следует выбрать плагин аутентификации (если оставить вариант по умолчанию, будет использоваться рекомендуемый плагин) и нажать «Enter», чтобы завершить процесс установки.
Ubuntu 20.04
Устанавливаем MySQL сервер:
apt install mysql-server
Запускаем MySQL сервер и добавляем его в автозагрузку:
systemctl start mysql systemctl enable mysql
Производим первоначальную настройку MySQL:
mysql_secure_installation
На первом вопросе, жмём «», а далее создаём пароль для root и на все вопросы отвечаем «» (yes).
CentOS 7
Устанавливаем репозиторий «»:
yum install epel-release
Устанавливаем сервер MariaDB :
yum install mariadb-server
Запускаем сервер MariaDB и добавляем его в автозагрузку:
systemctl start mariadb systemctl enable mariadb
Производим первоначальную настройку MariaDB:
/usr/bin/mysql_secure_installation
На первом вопросе, жмём «», так как пароль для root ещё не создан. Далее создаём пароль для root и на все вопросы отвечаем «» (yes).
Создание базы данных и пользователя
Это общий шаг для всех ОС.
mysql -uroot -p password mysql> create database zabbix character set utf8 collate utf8_bin; mysql> create user zabbix@localhost identified by 'zabbix'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> quit;
Вместо «» в данном примере вписываем пароль от root, заданный на предыдущем шаге.
Имортируем исходнyю схему и данные:
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Появится диалоговое окно с требованием ввести пароль. Вводим «».
Редактируем файл «»:
vi /etc/zabbix/zabbix_server.conf
Раскоментируем строку и меняем значение:
DBPassword=zabbix
Настройка PHP для веб-интерфейса Zabbix
Debian 10 и Ubuntu 20.04
Редактируем файл «»:
vi /etc/zabbix/apache.conf
Раскоментируем строку и изменим значение:
php_value[date.timezone] = Europe/Moscow
Centos 7
Редактируем файл «»:
vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
Раскоментируем строку и изменим значение:
php_value[date.timezone] = Europe/Moscow
Запуск Zabbix-сервера и процессов агента
Debian 10
systemctl restart zabbix-server zabbix-agent apache2 systemctl enable zabbix-server zabbix-agent apache2
Ubuntu 20.04
systemctl restart zabbix-server zabbix-agent apache2 systemctl enable zabbix-server zabbix-agent apache2
Centos 7
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
Настройка iptables в CentOS 7
Отключаем и убираем из автозагрузки firewall:
systemctl stop firewalld systemctl disable firewalld
Устанавливаем службку iptables:
yum install iptables-services
iptables -I INPUT 1 -p tcp --dport 1500 -j ACCEPT iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
service iptables save
Включаем сервис iptables в автозагрузку:
service iptables enable
Проверка доступности веб-интерфейса
Настройка и интеграция Zabbix 5
В этом блоке расскажем о добавлении пользователя, настройке оповещений и изменении шаблонов мониторинга. Также опишем ключевые технологии и элементы инфраструктуры Zabbix.
Добавление пользователя
В Zabbix каждый пользователь должен входить в группу. На основе групп в Zabbix присваиваются те или иные права.

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

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



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

Далее нужно активировать плагин для Zabbix. Чтобы это сделать, перейдем в Configurations — Plugins и включим плагин для Zabbix:


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

У Grafana есть много готовых дашбордов, их можно найти на сайте проекта и импортировать через интерфейс Grafana.
Настройка web-интерфейса
Для установки и настройки Zabbix через web-интерфейс нужно перейти на страницу, где он установлен. Должно появиться такое окно приветствия мастера установки.
Далее нужно нажать на кнопку продолжения установки «Next step». После этого отобразится анализ соответствия Zabbix-сервера всем системным требованиям текущего сервера. Возле каждого из них должен стоять параметр соответствия «Ок».
После нажатия на кнопку «» необходимо ввести параметры подключения к базе данных, которая была создана.
Параметры следующего окна нужно оставить без изменений.
Остаётся нажать «» для завершения настройки Zabbix 5 .
Установка 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.



Далее установим репозитории ПО. Это необходимо для получения актуального набора пакетов с компонентами 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
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. Настройка завершена.


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 из готовых образов

Для разворачивания 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 на Windows
Перед началом установки создадим в панели управления Selectel сервер с ОС Windows. Для этого в представлении Серверы нажмем на кнопку Создать сервер.

В открывшемся представлении нажимаем Выбрать тип источника и выбираем один из доступных образов операционных систем Windows.



Установка и настройка 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 завершена.
Готовые решения
Установка из образа
Развертывание приложения из iso-образа — готовое решение, которое значительно экономит время по сравнению с установкой вручную. Этот вариант подходит для быстрого развертывания Zabbix-сервера (MySQL/PostgreSQL) и Zabbix-прокси (MySQL/SQLite 3).
- Для начала нужно зайти на официальный сайт приложения, где выложены архивы с готовыми решениями Zabbix под различные виртуальные платформы.
- Выбрав нужный вариант, нужно скачать его, разархивировать и развернуть в соответствующей виртуальной машине.
- После развертывания Zabbix, следует запустить его и залогиниться. Обычно, умолчанию логин: «root», пароль: «zabbix», либо эти параметры задаются произвольно в процессе установки.
- Далее, нужно узнать IP-адрес, которое приложение получило командой «». Затем вписать полученный адрес в строку браузера в следующем виде: «» (где «host_ip» — адрес установленной версии Zabbix) и нажать ввод.
- Осуществится переход в веб-интерфейс панели управления Zabbix-сервером, где можно сделать все необходимые настройки конфигурации.
Установка Zabbix из контейнеров Docker
Zabbix интегрирован с приложением для контейнеризации Docker. Об установке программы можно узнать здесь.
Каждый компонент Zabbix можно быстро развернуть в виде виртуального контейнера. Они доступны для скачивания на официальном сайте.
Docker-образы Zabbix поставляются для трех операционных систем:
- Ubuntu;
- AlpineLinux;
- CentOS.
Установку Zabbix-сервера можно произвести несколькими основными способами.
Вариант №1
Можно сразу установить готовый образ, включающий в себя Zabbix-сервер, MySQL, Nginx. Для этого нужно выполнить команду:
docker run --name some-zabbix-appliance -p 80:80 -p 10051:10051 -d zabbix/zabbix-appliance:latest
Создастся Zabbix-экземпляр, прослушивающий 80 и 10051 порты.
Вариант №2
Существует способ размещения Zabbix, при котором каждый компонент мониторинг-системы расположен в отдельном контейнере.
Для создаваемых контейнеров нужно создать сеть Docker:
docker network create zabbix-net
Теперь необходимо запустить контейнер с СУБД:
docker run -d --name zabbix-postgres --network zabbix-net -v /var/lib/zabbix/localtime:/etc/localtime -e POSTGRES_PASSWORD=zabbix -e POSTGRES_USER=zabbix postgres:alpine
В примере используется Postgresql.
Далее стоит разместить контейнер с Zabbix-сервером:
docker run --name zabbix-server --network zabbix-net -v /var/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts -v /var/lib/zabbix/localtime:/etc/localtime -p 10051:10051 -e DB_SERVER_HOST="zabbix-postgres" -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="zabbix" -d zabbix/zabbix-server-pgsql:alpine-latest
Остаётся запустить веб-сервер Zabbix:
docker run --name zabbix-web -p 80:8080 -p 443:8443 --network zabbix-net -e DB_SERVER_HOST="zabbix-postgres" -v /var/lib/zabbix/localtime:/etc/localtime -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="zabbix" -e ZBX_SERVER_HOST="zabbix-server" -d zabbix/zabbix-web-nginx-pgsql:alpine-latest
В примере используется Nginx.
Заключение
В статье мы рассмотрели различные подходы для установки Zabbix и проведение дополнительных настроек. Этого достаточно для настройки базового мониторинга и контроля инфраструктуры и приложений.
Для визуализации, например, статусов доступности и производительности мы рекомендуем использовать удобный и мощный инструмент Grafana. Он легко устанавливается и настраивается. Кроме того, есть мобильное приложение, в котором можно просматривать «здоровье» инфраструктуры в режиме реального времени.