Zabbix — это ПО для мониторинга параметров сети, жизнеспособности и целостности серверов, виртуальных машин, приложений, сервисов, баз данных, веб-сайтов, облачных сред и многого другого.
Статья рассчитана на установку в таких операционных системах как Debian, Ubuntu, CentOS 7 и AlmaLinux 8.
Производить установку будем в консоли SSH, а настройку через веб-браузер.
Debian/Ubuntu
Устанавливаем zabbix-server, zabbix-agent и веб-интерфейс
Для каждой версии ОС ссылка для скачивания дистрибутива Zabbix своя. Рассмотрим установку актуальной на момент написания статьи Zabbix 6.0.
Скачиваем и конфигурируем Zabbix 6.0 для выбранной ОС.
Debian 10
# wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-4%2Bdebian10_all.deb # dpkg -i zabbix-release_6.0-4+debian10_all.deb # apt update
Debian 11
# wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-4%2Bdebian11_all.deb # dpkg -i zabbix-release_6.0-4+debian11_all.deb # apt update
Ubuntu 20.04
# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4%2Bubuntu20.04_all.deb # dpkg -i zabbix-release_6.0-4+ubuntu20.04_all.deb # apt update
В Ubuntu 20.04 могут быть ошибки вида:
E: The repository 'https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu focal Release' does not have a Release file. E: The repository 'https://repo.zabbix.com/zabbix/6.0/ubuntu focal Release' does not have a Release file.
Чтобы их исправить, необходимо в файле /etc/ca-certificates.conf
закомментировать сертификат, начинающийся на DST
, потом в директории /etc/ssl/certs
удалить файл DST_Root_CA_X3.pem
и ввести в терминале update-ca-certificates -f -v
.
Ubuntu 22.04
# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4%2Bubuntu22.04_all.deb # dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb # apt update
Далее инструкция для всех дистрибутивов одинаковая.
На сервере должны быть установлены веб-сервер (Apache или NGINX) и СУБД (MySQL или PostgreSQL), а также PHP. Можно взять сервер с предустановленным рецептом LAMP или LEMP.
Устанавливаем сервер, веб-интерфейс и агент.
Для веб-сервера Apache и СУБД MySQL:
# apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
Для веб-сервера NGINX и СУБД MySQL:
# apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
Далее необходимо создать базу данных (zabbix), пользователя (zabbix) и пароль (password). Название БД, имя пользователя и пароль введите свои. Для этого нам может потребоваться пароль root от MySQL.
# mysql -uroot -p
Введите пароль пользователя root СУБД и нажмите Enter, либо просто нажмите Enter, если пароля нет.
Откроется терминал MySQL (mysql> или MariaDB [(none)]>), в нем поочередно введите:
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> set global log_bin_trust_function_creators = 1; mysql> exit;
Далее импортируем данные:
# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Вводим пароль пользователя, которого мы создали ранее (password).
Заходим в терминал СУБД MySQL и выключаем опцию log_bin_trust_function_creators
:
# mysql -uroot -p mysql> set global log_bin_trust_function_creators = 0; mysql> exit;
Далее необходимо отредактировать файл /etc/zabbix/zabbix_server.conf
с помощью любого удобного для вас текстового редактора.
Находим строку
# DBPassword=
или
DBPassword=
раскомментируем ее и указываем пароль пользователя zabbix:
DBPassword= password
Далее настраиваем веб-сервер.
Для Apache необходимо просто запустить веб-сервер и включить его автозагрузку:
# systemctl restart zabbix-server zabbix-agent apache2 # systemctl enable zabbix-server zabbix-agent apache2
Для NGINX сначала необходимо отредактировать файл /etc/zabbix/nginx.conf
. Раскомментируйте и настройте директивы listen
и server_name
:
# listen 8080; # server_name example.com; После чего запускаем процессы Zabbix и включаем их в автозагрузку: # systemctl restart zabbix-server zabbix-agent nginx php7.3-fpm # systemctl enable zabbix-server zabbix-agent nginx php7.3-fpm
CentOS 7 / AlmaLinux 8
Устанавливаем zabbix-server, zabbix-agent и веб-интерфейс
Для каждой версии ОС ссылка для скачивания дистрибутива Zabbix своя. Рассмотрим установку актуальной на момент написания статьи Zabbix 6.0.
Скачиваем и конфигурируем Zabbix 6.0 для выбранной ОС.
CentOS 7
К сожалению, актуальная версия Zabbix-server 6.0 не поддерживается ОС CentOS 7, так как CentOS 7 устарела. На данную ОС можно установить только агент Zabbix-agent 6.0. Самая актуальная версия Zabbix-server для CentOS 7 — Zabbix 5.0. Для скачивания введите в терминале:
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm # yum clean all
AlmaLinux 8
# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm # dnf clean all
На сервере должны быть установлены веб-сервер (Apache) и СУБД (MySQL или PostgreSQL), а также PHP. Оптимальный вариант — сервер с предустановленным рецептом LAMP.
Установим Zabbix-сервер, веб-интерфейс и агент.
CentOS 7
# yum install zabbix-server-mysql zabbix-agent
После необходимо включить Red Hat Software Collections:
# yum install centos-release-scl
И отредактируем файл /etc/yum.repos.d/zabbix.repo
, потребуется включить репозиторий zabbix-frontend:
[zabbix-frontend] ... enabled=1 ...
Устанавливаем пакеты веб-интерфейса:
# yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
AlmaLinux 8
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
Далее инструкция для обоих дистрибутивов одинаковая, за исключением некоторых команд, которые мы обозначим отдельно.
Необходимо создать базу данных (zabbix), пользователя (zabbix) и пароль (password). Название БД, имя пользователя и пароль введите свои. Для этого может потребоваться пароль root от MySQL.
# mysql -uroot -p
Введите пароль пользователя root СУБД и нажмите Enter, либо введите # mysql
, если пароля нет.
Откроется терминал MySQL (mysql> или MariaDB [(none)]>), в нем поочередно введите:
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> set global log_bin_trust_function_creators = 1; mysql> exit;
Далее импортируем данные:
# для CentOS 7 # zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix #для AlmaLinux 8 # zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Вводим пароль пользователя, которого мы создали ранее (password).
Заходим в терминал СУБД MySQL и выключаем опцию log_bin_trust_function_creators
:
# mysql -uroot -p
или
# mysql
mysql> set global log_bin_trust_function_creators = 0; mysql> exit;
Далее необходимо отредактировать файл /etc/zabbix/zabbix_server.conf
с помощью любого удобного для вас текстового редактора.
Находим строку
# DBPassword=
или
DBPassword=
Раскомментируем ее и указываем пароль пользователя zabbix:
DBPassword= password
В CentOS 7 (Zabbix 5.0) дополнительно потребуется отредактировать файл, /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
. Раскомментируйте строку
; php_value[date.timezone] = Europe/Riga
и укажите свой часовой пояс.
Для Apache необходимо просто запустить веб-сервер и включить его автозагрузку:
CentOS 7 (Zabbix 5.0)
# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm # systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
AlmaLinux 8 (Zabbix 6.0)
# systemctl restart zabbix-server zabbix-agent httpd php-fpm # systemctl enable zabbix-server zabbix-agent httpd php-fpm
Настройка через веб-интерфейс
Дальнейшая инструкция одинакова для всех операционных систем, кроме CentOS 7, на которой используется прошлая версия — Zabbix 5.0.
Рассмотрим настройку веб-интерфейса актуальной на день написания статьи Zabbix 6.0 (при этом настройка Zabbix 5.0 будет отличаться незначительно).
Переходим в веб-браузере по ссылке http://имя_сервера/zabbix/setup.php и производим первоначальную настройку.


Если видим красные предупреждения со значением Fail, то открываем файл php.ini
:
/etc/zabbix/apache.conf
— Debian/Ubuntu для веб-сервера Apache,/etc/zabbix/php-fpm.conf
— Debian/Ubuntu для веб-сервера NGINX,/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
— CentOS,/etc/php-fpm.d/zabbix.conf
— AlmaLinux.
Выставляем рекомендуемые значения, сохраняем файл, перезапускаем веб-сервер и проверяем (жмём на странице в браузере кнопку Retry).

На странице Configure DB connection заполняем поля для подключения к базе данных zabbix (напоминаю, что ранее мы создали данную базу и пользователя zabbix для неё с паролем password
).

Далее выбираем имя сервера, нужный часовой пояс и цветовую схему для веб-интерфейса.

Нажимаем Next step.

Готово. Далее нажимаем Finish.
А в браузере тем временем видим страницу авторизации.

На этом установка Zabbix завершена, приступаем к настройке и попробуем создать графики, которые будут отображать информацию о работе сервера.
Активация и создание графиков
Для входа в веб-интерфейс используем логин Admin и пароль zabbix.

Переходим на вкладку Administration, жмём ниже Users и выбираем пользователя Admin.
На открывшейся странице нажимаем кнопку Change password, указываем там новый пароль для пользователя Admin (при следующем входе в веб-интерфейс будем использовать уже его) и напротив поля Language меняем English на Russian, жмём кнопку Save.

Если при попытке смены языка столкнетесь с ошибкой «You are not able to choose some of the languages, because locales for them are not installed on the web server», необходимо сделать следующее:
Заходим на сервер по SSH. Проверяем, какие локализации установлены на сервере с помощью команды:
# locale -a
Вывод будет примерно таким:
en_AG en_AG.utf8 … en_ZM.utf8 en_ZW.utf8
Далее проверим доступные русские локализации:
# cat /usr/share/i18n/SUPPORTED | grep ru_
Вывод:
ru_RU.UTF-8 UTF-8 ru_RU.KOI8-R KOI8-R ru_RU ISO-8859-5 ru_RU.CP1251 CP1251 ru_UA.UTF-8 UTF-8 ru_UA KOI8-U
Добавим русскую локализацию UTF-8:
# locale-gen ru_RU.UTF-8
После переконфигурируем locale:
# dpkg-reconfigure locales
Если в терминале откроется псевдографический интерфейс, жмём Tab, потом <Ok>, еще раз Tab и <Ok>.
Ждем, после чего перезагружаем веб-сервер Apache или NGINX, перезагружаем страницу Zabbix в браузере и выбираем русский язык.

Переходим в Настройка — Узлы сети, видим там узел сети Zabbix server и состояние Деактивировано — для активации жмём на эту надпись, после чего состояние должно измениться на Активировано.

Теперь приступим к графикам — создадим панель из четырёх графиков: два из них будут выводить нам информацию о нагрузке (CPU load и CPU utilization), третий будет выводить информацию об использовании оперативной памяти, и четвертый о сетевом трафике.
Переходим в Настройка — Узлы сети — Графики и видим, что среди существующих есть график, измеряющий сетевой трафик. Мы можем просто добавить его, но лучше попробуем создать свой.

Перед созданием графика сначала создадим необходимые для него элементы, такие как Outgoing network traffic и Incoming network traffic.
Переходим в Настройка — Узлы сети — Элементы данных, нажимаем справа сверху кнопку Создать элемент данных.
Создаём элемент данных Outgoing network traffic on ens3 (ens3 заменяем на название сетевого интерфейса сервера, например eth0, bge0, em0 и т.д, либо, если совпадает, оставляем как есть).
Смотрим на скрин ниже и заполняем все так же, заменив при необходимости ens3 на реальный интерфейс.

Далее создаем элемент данных Incoming network traffic on ens3 (нажимаем вверху кнопку Создать элемент данных и заполняем всё, как на скрине ниже).

Создаем график Network traffic on ens3.
Переходим в Настройка — Узлы сети — Графики, нажимаем вверху справа кнопку Создать график.
Заполняем всё, как на скрине ниже, в поле Элементы данных выбираем созданные нами выше элементы, сохраняем график.

Переходим в Мониторинг — Панель, нажимаем на нужный сервер (в нашем случае Zabbix server) и в появившемся окне выбираем Панели. Далее нужно найти график Network traffic on ens3, убеждаемся, что график работает.

В Zabbix уже есть шаблоны экранов графиков. Можно использовать их. Для этого переходим в Мониторинг — Панель, нажимаем на сервер (в нашем случае Zabbix server), в открывшемся окошке нажимаем на Панели. После видим пример панели, в нашем случае открылась дефолтная панель мониторинга сети. В правом верхнем углу в строке Панель можно выбрать шаблоны. Посмотрим один из них. Выберем System performance.

В целом информации в шаблонных панелях много, и в большинстве случаев достаточно для использования. Однако нередко нужно создать свою панель с мониторингом только самых необходимых параметров.
Далее, как и планировали, создаем свою панель из четырех графиков.
Переходим в Мониторинг — Панель, в правом верхнем углу нажимаем на Изменить панель и Добавить.
Выберем ранее настроенный график Network traffic on ens3 и настроим панель под себя.

Видим первый график. Так как мы поставили галочку на Динамический элемент, мы можем перемещать, увеличивать или уменьшать данный график, подстроив все под свои нужды.

Добавим еще несколько графиков (новые создавать не будем, возьмем готовые, которые уже настроены Zabbix-ом). Не забываем сохранять изменения в верхнем правом углу.

После того как выбрали все графики для комплексного экрана, переходим в Мониторинг — Панель и наслаждаемся результатом своих трудов.
Настройка оповещений
Теперь настроим такую полезную вещь, как отправка уведомлений на e-mail в случае, если Zabbix обнаружит проблемы на сервере.
Для этого переходим в раздел Администрирование — Способы оповещений.

Если напротив Email видим состояние Деактивировано, то следует кликнуть по этому слову — способ оповещения активируется. Далее нажимаем на слово Email и заполняем поля SMTP сервер (можно localhost), SMTP hello (приветствие), SMTP email (ящик отправителя). После настроек нажимаем Обновить. На скрине ниже можно увидеть пример настроек.

Далее переходим в Администрирование — Пользователи, жмём на пользователя Admin, переходим на вкладку Оповещения и нажимаем там Добавить.

В открывшемся окне заполняем поле Отправлять на (указываем там почтовый ящик, на который хотим получать уведомления) и нажимаем кнопку Добавить.
После этого переходим в Настройка — Действия — Действия триггеров и проверяем статус у Report problems to Zabbix administrators — если видим, что состояние Деактивирован, то активируем.

На почту можно отправлять все уведомления — чтобы быть в курсе о незначительных событиях. Гораздо важнее оперативно получать уведомления об авариях и критических ошибках. Поэтому Zabbix предоставляет много разных способов доставки уведомлений. Рассмотрим способ их отправки в Telegram.
Идем в Администрирование — Способы оповещений. Находим Telegram.
Внизу даже есть небольшая шпаргалка.

Для настройки необходимо в приложении Telegram на смартфоне добавить бота @BotFather.
Пишем ему /start
, потом /newbot
, далее придумаем имя для боту, от которого будут приходить уведомления. Имя должно быть уникальным.

Теперь у нас есть бот для оповещений, в данном случае @my_fyrstvds_zabbix_bot, и токен для подключения (после строки «Use this token to access the HTTP API:»). Токен является конфиденциальной информацией, никому не пересылайте его, иначе третьи лица могут получить доступ к вашему боту.
Также нам потребуется узнать ID вашего аккаунта в Telegram, на который будут приходить уведомления, для этого найдите в Telegram бота @my_id_bot, напишите ему /start
и в ответ получите ваш ID.
Теперь нужно добавить вашего бота, который вы создали ранее, в приложение Telegram.
Переходим в веб-интерфейс Zabbix, Администрирование — Способы оповещений, нажимаем на Telegram, и во вкладке Способы оповещений вставляем токен в строку Token. Напоминаю, что токен мы получили ранее в боте @Bot_Father.

Далее проверим работу оповещений. Для этого во вкладке Администрирование — Способы оповещений ищем Telegram и справа нажимаем на Тест. В появившемся окне в строке To пишем ID вашего аккаунта, который вы ранее узнали с помощью бота @my_id_bot.

Если всё настроено верно, тест должен пройти удачно, ваш бот в Telegram получит тестовое уведомление.
Далее настроим отправку уведомлений о событиях в Telegram. Для этого в веб-интерфейсе Zabbix переходим во вкладку Администрирование — Пользователи, выбираем нашего пользователя (пока пусть это будет Admin), далее переходим во вкладку Оповещения и добавляем новый способ оповещений. Выбираем Telegram и в открывшемся окне настраиваем отправку уведомлений. В первую очередь вставляем ваш ID Telegram (можно также отправлять уведомления в рабочий чат Telegram, для этого необходимо указать ID чата, не забыв скопировать знак «-
» вместе с номером ID).

В моем случае я решил отправлять в Telegram только критические уведомления, чтобы не засорять чат и оперативно реагировать только на экстренные ситуации.
Всё, после добавления способа оповещений события будут приходить в чат Telegram.