Categories: Шпаргалки

Установка и начальная настройка сервера мониторинга Zabbix 6 / 7 на Ubuntu / Debian

Тематические термины: Zabbix , MariaDB , MySQL , PHP , NGINX .

Сервер Zabbix используется для сбора и анализа информации о состоянии узлов сети. В данной статье будет рассмотрен процесс его установки и развертывания веб-интерфейса для его управления. В качестве сервера баз данных мы будем использовать MariaDB/MySQL. Версия операционной системы, которая использовалась для написания инструкции — 20.04 LTS (также протестировано на 22.04 / 24.04 и на Debian 12), версия устанавливаемого Zabbix — 6 (также протестирован Zabbix 7).

Подготовка сервера

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

1. Правильное время

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

Для этого сначала задаем правильную временную зону:

timedatectl set-timezone Europe/Moscow

* в данном примере задается московское время.

Затем устанавливаем и запускаем сервис синхронизации времени:

apt install chrony

systemctl enable chrony

systemctl start chrony

2. Настройка брандмауэра

Для работы сервера, открываем следующие порты:

iptables -I INPUT -p tcp —match multiport —dports 80,443 -j ACCEPT

iptables -I INPUT -p tcp —match multiport —dports 10050,10051 -j ACCEPT

iptables -I INPUT -p udp —match multiport —dports 10050,10051 -j ACCEPT

* где 80 — порт для http запросов (веб-интерфейс); 443 — для https запросов (веб-интерфейс); 10050,10051 — порты для получения информации от zabbix агентов.

Для сохранения правил используем

apt install iptables-persistent

netfilter-persistent save

3. Обновляем список пакетов в репозитории:

apt update

Если наша система чистая и на ней не работают критически важные сервисы, стоит обновить установленные пакеты:

apt upgrade

Подготовка системы закончена.

Установка веб-сервера

Управление сервером Zabbix будет осуществляться посредством веб-интерфейса. Для этого необходимо установить и настроить веб-сервер, СУБД и PHP.

СУБД

В данному инструкции мы будем использовать сервер баз данных mariadb. Zabbix версии 6 требует MariaDB версии 10.05.00 и выше. Но слишком свежая версия также может не поддерживаться сервером заббикс. Необходимо уточнить системные требования на официальной странице .

В репозитории Ubuntu может не оказаться нужной версии СУБД, поэтому мы подключим репозиторий разработчика. Для этого переходим по ссылке downloads.mariadb.org/mariadb/repositories и выбираем нашу версию операционной системы, последний стабильный и поддерживаемый релиз mariadb и геолокацию репозитория, например:

Ниже появится инструкция по добавлению репозитория и установке СУБД:

Согласно инструкции, создаем файл:

vi /etc/apt/sources.list.d/matiadb.list

# MariaDB 10.8 repository list — created UTC
# https://mariadb.org/download/
deb [arch=amd64,arm64,ppc64el,s390x] https://mirror.docker.ru/mariadb/repo/10.8/ubuntu focal main
deb-src https://mirror.docker.ru/mariadb/repo/10.8/ubuntu focal main

Импортируем ключ репозитория:

apt-key adv —fetch-keys ‘https://mariadb.org/mariadb_release_signing_key.asc’

Обновляем кэш пакетов:

apt update

Устанавливаем СУБД:

apt install mariadb-server

Разрешаем автозапуск сервера баз данных и запускаем mariadb:

systemctl enable mariadb

systemctl start mariadb

Задаем пароль для суперпользователя СУБД:

mysqladmin -u root password

* после ввода команды система потребует ввести пароль два раза.

Веб-сервер

Для наших целей будем использовать веб-сервер NGINX.

Для его установки вводим команду:

apt install nginx

Запускаем nginx и разрешаем его автозапуск:

systemctl enable nginx

systemctl start nginx

Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — мы должны увидеть окно приветствия:

PHP и PHP-FPM

Интерфейс zabbix разработан на PHP — наш веб-сервер должен обрабатывать скрипты, написанные на нем. Смотрим на странице с системными требованиями , какая версия PHP рекомендована и создаем системную переменную для нашего удобства:

export PHP_VER=8.3

* в моем примере для Zabbix рекомендована версия 8.3.

С помощью страницы Установка разных версий PHP на Linux Ubuntu или Установка разных версий PHP на Linux Debian устанавливаем нужную нам версию PHP.

Устанавливаем php компоненты. В зависимости от того, нативная у нас версия PHP или установленная из дополнительного репозитория, команды будут отличаться.

а) Для нативной версии:

apt install php php-fpm php-mysql php-pear php-cgi php-common php-ldap php-mbstring php-snmp php-gd php-xml php-bcmath —no-install-recommends

б) Установленной из репозитория:

apt install php${PHP_VER}-fpm php${PHP_VER}-mysql php${PHP_VER}-pear php${PHP_VER}-cgi php${PHP_VER}-common php${PHP_VER}-ldap php${PHP_VER}-mbstring php${PHP_VER}-snmp php${PHP_VER}-gd php${PHP_VER}-xml php${PHP_VER}-bcmath —no-install-recommends

Установка PHP и компонентов завершены. Переходим к настройке.

Для настройки php, открываем файл:

vi /etc/php/${PHP_VER}/fpm/php.ini

Редактируем следующие параметры:

date.timezone = «Europe/Moscow»

max_execution_time = 300

post_max_size = 16M

max_input_time = 300

max_input_vars = 10000

* где:

  • date.timezone — временная зона. В нашем примере выставлено московское время.
  • max_execution_time — разрешенное время выполнения скрипта. Если последний будет выполняться дольше, система прервет его работу.
  • post_max_size — максимальные объем передачи данных методом POST.
  • max_input_time — время в секундах, за которое PHP должен разобрать входные данные GET и POST.
  • max_input_vars — ограничение на количество входных переменных, которые могут быть переданы на сервер в одном запросе.

Разрешим запуск php-fpm и перезапустим его:

systemctl enable php${PHP_VER}-fpm

systemctl restart php${PHP_VER}-fpm

NGINX + PHP

Для того, чтобы NGINX обрабатывал PHP, открываем конфигурационный файл:

vi /etc/nginx/sites-enabled/default

В секции location добавляем параметр index :


index index.php index.html …;

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

Внутри секции server добавим следующее:

location ~ .php$ {
set $root_path /var/www/html;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}

* где /var/www/html — корневой путь хранения скриптов; /run/php/php8.3-fpm.sock — путь до сокетного файла php-fpm (зависит от версии PHP — в нашем случае 8.3).

Проверяем настройки nginx и перезагружаем его:

nginx -t && nginx -s reload

Создаем index.php со следующим содержимым:

vi /var/www/html/index.php

<?php phpinfo(); ?>

Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — теперь мы должны увидеть сводную информацию по PHP и его настройкам, например:

* это старый скриншот, поэтому на нем версия PHP 8.2.

Веб-сервер готов для работы с Zabbix Web.

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

Переходим к установке самого Zabbix сервера.

Установка

Сначала установим репозиторий последней версии Zabbix. Для этого переходим на страницу https://repo.zabbix.com/zabbix/ и переходим в раздел с самой последней версией пакета — затем переходим в ubuntu/pool/main/z/zabbix-release/ — копируем ссылку на последнюю версию релиза:

Обратите внимание, что необходимо скопировать ссылку на файл для своей версии Ubuntu — в нашем примере это 20.04. Посмотреть свою версию операционной системы можно командой:

cat /etc/os-release | grep VERSION_ID

Скачиваем файл репозитория командой:

curl -sLO https://repo.zabbix.com/zabbix/6.1/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.1-1%2Bubuntu20.04_all.deb

Устанавливаем его:

dpkg -i zabbix-release_*.deb

Обновляем списки пакетов:

apt update

Устанавливаем сервер, вводя команду:

apt install zabbix-server-mysql zabbix-frontend-php zabbix-get zabbix-sql-scripts

Настройка базы данных

Входим в оболочку ввода sql-команд:

mysql -uroot -p

Создаем базу данных:

> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;

* мы создали базу zabbix .

Создаем пользователя для подключения и работы с созданной базой:

> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY ‘zabbixpassword’;

* в данном примете мы создали пользователя zabbix с доступом к базе zabbix и паролем zabbixpassword .

Выходим из sql-оболочки:

> quit

В составе zabbix идет готовая схема для СУБД MySQL/MariaDB или postgreSQL. В нашем случае, нам нужен MySQL.

Для применения схемы переходим в каталог:

cd /usr/share/zabbix-sql-scripts/mysql

В предыдущих версиях Zabbix путь до дампа базы был /usr/share/doc/zabbix-sql-scripts/mysql . Если мы не смогли найти нужный каталог с дампом, можно попробовать выполнить поимск командой:

find / -type f -iname server.sql.gz

Распаковываем архив с дампом базы:

gunzip server.sql.gz

Восстанавливаем базу их дампа:

mysql -u root -p zabbix < server.sql

* после ввода команды система запросит пароль. Необходимо ввести пароль, который мы задали после установки mariadb.

Настройка zabbix

Открываем конфигурационный файл zabbix:

vi /etc/zabbix/zabbix_server.conf

Добавляем строку:

DBPassword=zabbixpassword

* мы настраиваем портал на подключение к базе с паролем zabbixpassword , который задали при создании базы для zabbix.

И проверяем следующие строки:


DBName=zabbix

DBUser=zabbix

* имя базы и пользователя должны быть zabbix (как мы и создали в mariadb).

Создаем каталог для инклудов конфигурационных файлов (по какой-то причине, он может быть не создан при установке):

mkdir /etc/zabbix/zabbix_server.conf.d

Запуск zabbix-server

Разрешаем автозапуск сервера мониторинга:

systemctl enable zabbix-server

После запускаем сам сервер zabbix:

systemctl start zabbix-server

Настройка nginx

При установке zabbix-web файлы портала копируются в каталог /usr/share/zabbix. Наш веб-сервер работает с каталогом /var/www/html.

Меняем это — открываем конфигурационный файл nginx:

vi /etc/nginx/sites-enabled/default

Редактируем параметры root и set $root_path:


root /usr/share/zabbix ;

location ~ .php$ {
set $root_path /usr/share/zabbix ;

}

Перезапускаем nginx:

systemctl restart nginx

Установка портала для управления Zabbix

Открываем браузер и переходим по адресу http://<IP-адрес сервера>/ — откроется страница установки Zabbix Web.

Выбираем нужный язык установки и кликаем по Next Step :

Если в списке языков не окажется нужного нам, устанавливаем локаль:

dpkg-reconfigure locales

* например, для русского языка выбираем в открывшемся окне ru_RU.UTF-8 UTF-8 .

И перезапускаем обработчик PHP, в нашем случае:

systemctl restart php${PHP_VER}-fpm

Перезагружаем страницу установки и выбираем нужный язык.

В следующем окне внимательно смотрим на результаты проверки нашего веб-сервера — справа мы должны увидеть все OK . Если это не так, проверяем настройки и исправляем предупреждения и ошибки, после перезапускаем страницу F5 для повторной проверки настроек.

Когда все результаты будут OK , кликаем по Next Step :

В следующем окне мы оставляем настройки подключения к базе как есть — дополнительно прописываем пароль, который задали при создании пользователя zabbix. После нажимаем Next Step :

* в нашем случае, пароль был zabbixpassword ;

В следующем окне оставляем все как есть:

… и нажимаем Next Step .

В последнем окне мы проверяем настройки и кликаем Next Step .

Установка завершена — нажимаем Finish :

В открывшемся окне вводим логин Admin и пароль zabbix (по умолчанию) — откроется окно со сводной информацией по мониторингу:

Zabbix Agent

В качестве примера установим zabbix agent на наш сервер, но также поясним отличия, если необходимо поставить агента на любой другой компьютер Ubuntu в сети. Также мы настроим шифрованное соединение между сервером и агентом.

Настройка брандмауэра (только на клиенте)

Для работы агента необходимо открыть порт 10050/tcp . В нашем примере мы устанавливаем агента на сервер, поэтому нам не потребуется его открывать.

Однако, если вы устанавливаете агента на хост, который нужно мониторить, вводимо команду:

iptables -I INPUT -p tcp —dport 10050 -j ACCEPT

* где 10050 — порт для подключения к zabbix агенту.

Для сохранения правила используем iptables-persistent :

apt install iptables-persistent

netfilter-persistent save

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

Настройка репозитория (не требуется на сервере)

На странице https://repo.zabbix.com/zabbix/ находим ссылку на deb файл zabbix-release для нужной версии zabbix и операционной системы, например, в директории 6.1/ubuntu/pool/main/z/zabbix-release .

Скачиваем файл репозитория командой:

wget https://repo.zabbix.com/zabbix/6.1/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.1-1%2Bubuntu20.04_all.deb

Устанавливаем его и удаляем deb-пакет:

dpkg -i zabbix-release_*.deb && rm -f zabbix-release_*.deb

Обновляем списки пакетов:

apt update

Установка и подключение агента

Так как после настройки репозитория, установка агента выполняется командой:

apt install zabbix-agent2

Откроем конфигурационный файл:

vi /etc/zabbix/zabbix_agent2.conf

Отредактируем следующую опцию:

Server=127.0.0.1

* в данном примере мы указываем агенту сервер Zabbix — мы может указать его имя или IP-адрес.

Разрешаем автозапуск агента и перезапускаем его:

systemctl enable zabbix-agent2

systemctl restart zabbix-agent2

Переходим в панель управления сервером. Открываем Настройка Узлы сети . Мы должны увидеть единственный узел Zabbix Server :

А справа должно быть состояние доступности ZBX :

Агент работает и настроен.

Включение шифрования

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

На агенте открываем конфигурационный файл:

vi /etc/zabbix/zabbix_agent2.conf

Приводим к виду 4 опции:

TLSConnect=psk

TLSAccept=psk

TLSPSKIdentity=PSK 001

TLSPSKFile=/etc/zabbix/agent_key.psk

Генерируем ключ:

openssl rand -hex 32 > /etc/zabbix/agent_key.psk

Смотрим его содержимое:

cat /etc/zabbix/agent_key.psk

Сохраняем — оно нам понадобиться.

Перезапускаем агента:

systemctl restart zabbix-agent2

Переходим в веб-панель управления Zabbix. В списке узлов:

… кликаем по нашему серверу с установленным агентом.

Переходим на вкладку Шифрование . Выбираем подключение с PKS , ставим флажок только для PSK , вводим идентификатор (который задали при настройке агента в параметре TLSPSKIdentity ), вводим сам ключ, который был сгенерирован в консоли агента:

Нажимаем Обновить для применения настроек.

Через пару минут наше состояние соединения с агентом должно быть, примерно, таким:

Шифрование настроено.

Читайте также

Возможно, вам будут интересны другие инструкции, касающиеся Zabbix:

1. Установка и настройка Zabbix-агента на CentOS .

2. Установка Zabbix agent на Windows .

3. Настройка сервера Zabbix 5 на CentOS 8 .

4. Установка и начальная настройка сервера мониторинга Zabbix на CentOS 7 .

5. Активация/деактивация узлов Zabbix с помощью API на PHP .

admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

4 дня ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

4 дня ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

4 дня ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

4 дня ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

4 дня ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

4 дня ago