Zabbix – это свободно распространяемая система мониторинга. Zabbix позволяет отслеживать состояние и здоровье ваших серверов и сервисов. Это прямой конкурент System Center Operations Manager от компании Microsoft. Сразу отмечу, что установка Zabbix выполняется намного проще, чем установка System Center Operations Manager.
В этой публикации я показу пример базового развертывания Zabbix, в котором все компоненты (агент, сервер и frontend) установлены на одном экземпляре сервера.
Используемые версии ПО
В ходе процесса установки Zabbix я буду использовать следующие версии ПО:
Версия Zabbix – Zabbix 6.2.
Операционная система – Ubuntu Server 22.04.
База данных – PostgreSQL 14.
Веб-сервер: Nginx 1.18.0
Системные требования
У Zabbix есть очень хорошая документация. В разделе с системными требованиями вендор приводит очень подробный расчет аппаратных ресурсов в зависимости от нагрузки на систему мониторинга.
В основном аппаратные требования зависят от количества наблюдаемых объектов и метрик (один элемент для наблюдения + триггер + график). Я приведу краткую выдержку из документации касательно необходимых аппаратных ресурсов.
Количество метрик | Кол-во ЦП | Оъем ОЗУ, ГБ | Рекомендуемая БД |
1 000 | 2 | 8 | MySQL Server, Percona Server, MariaDB Server, PostgreSQL |
10 000 | 4 | 16 | MySQL Server, Percona Server, MariaDB Server, PostgreSQL |
100 000 | 16 | 64 | MySQL Server, Percona Server, MariaDB Server, PostgreSQL Oracle |
1 000 000 | 32 | 96 | MySQL Server, Percona Server, MariaDB Server, PostgreSQL Oracle |
Я буду использовать аппаратную конфигурацию для 1000 метрик.
Установка Zabbix
Я буду выполнять установку Zabbix из пакета. Альтернативный вариант быстрого развертывания Zabbix – это использование готовых решений.
Повторюсь, что я буду устанавливать все компоненты на одном сервере. В качестве сервера баз данных я буду использовать PostgreSQL, а в качестве веб-сервера Nginx. Уже готовый пресет есть на сайте вендора.
Предварительная подготовка
Ссылку скачивание актуальной версии Zabbix сервера можно найти в разделе загрузки на сайте вендора.
Перед установкой всех необходимых пакетов предварительно нужно добавить репозиторий Zabbix в общий список репозиториев. Загружаем файл установки репозитория:
wget https://repo.zabbix.com/zabbix/6.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.2-4%2Bubuntu22.04_all.deb
Устанавливаем репозиторий:
sudo dpkg -i zabbix-release_6.2-4+ubuntu22.04_all.deb
Актуализируем состав всех репозиториев, включая новый репозиторий:
sudo apt update
Установим сервер баз данных PostgreSQL:
sudo apt install postgresql
Процесс установки пакетов
После завершения процесса предварительной подготовки можно приступить к установке.
1. Установим необходимые пакеты:
sudo apt install zabbix-server-pgsql zabbix-frontend-php php8.1-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
2. Создадим пользователя и базу данных для сервера Zabbux:
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix
Убедимся, что база данных была создана:
sudo -u postgres psql -c "\l"
roman@ubuntu:~$ sudo -u postgres psql -c "\l"
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
zabbix | zabbix | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
3. Теперь мы можем импортировать схему базы данных. Укажите пароль, который вы задали при создании пользователя zabbix для postgresql:
sudo zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
4. Затем необходимо в файле конфигурации сервера Zabbix указать пароль для подключения к базе данных:
sudo nano /etc/zabbix/zabbix_server.conf
Раскомментируйте параметр DBPassword и укажите пароль для пользователя zabbix, которого мы создали ранее.
DBUser=zabbix
### Option: DBPassword
# Database password.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword=Qwerty123
### Option: DBSocket
5. Теперь скорректируем файл конфигурации nginx для того, чтобы указать имя, по которому мы будем ожидать подключение клиентов и порт для прослушивания запросов:
sudo nano /etc/zabbix/nginx.conf
server {
listen 80;
server_name zabbix.itproblog.ru;
root /usr/share/zabbix;
6. Включим автозапуск служб:
sudo systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
7. Перезагрузим необходимые службы:
sudo systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
Настройка после установки
Для того, чтобы установить Zabbix необходимо еще выполнить первоначальную настройку после установки пакетов из раздела выше.
1. Переходим по адресу, который мы указали в директиве server_name конфигурационного файла nginx:
http://zabbix.itproblog.ru
2. Появится окно мастера первоначальной настройки. Я буду выполнять установку с английской локалью. Нажмите “Next step”.
3. На странице с тестированием предварительных требований для PHP мастер установки отобразит статус напротив каждого пункта. Для продолжения установки напротив каждого пункта должен быть статус. “OK” Нажмите кнопку “Next step”.
4. Указываем параметры подключения к базе данных:
5. Указываем имя сервера, временную зону и тему оформления. Нажимаем “Next step”.
6. Затем мастер отобразит сводную информацию по параметрам установки. Нажимаем “Next step”.
7. В случае успешного завершения настройки frontend мастер установки сообщит нам об этом. Нажмите кнопку “Finish”.
8. Теперь мы можем перейти в веб интерфейс системы Zabbix.
Стандартный логин и пароль Zabbix:
Username: Admin
Password: zabbix
Установка Zabbix завершена.
Первоначальная настройка
В целом шагов выше уже достаточно для того, чтобы начать знакомиться с системой Zabbix или начать подключать устройства. Однако, есть ряд минимальных настроек, которые я выполняю после завершения базовой установки. Об этом ниже.
Настройка ПО для работы задач
В контекстном меню каждого узла есть ряд задач. Например:
Вот только сразу после установки работает Ping. Трассировка и определение операционной системы не работают. Почему? Потому что соответствующие утилиты не установлены. Установим их:
1. Сначала установим утилиту Traceroute:
sudo apt install traceroute
Это было просто. Проверим:
2. С определением операционной системы сложнее. Для этого используется утилита nmap. Установим её:
sudo apt install nmap
Но это еще не все. Сейчас если мы попробуем определить версию операционной системы, то получим ошибку:
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
sudo: a password is required
Дело в том, что по умолчанию пользователь zabbix не обладает разрешениями для запуска команд через sudo. Исправим это:
sudo visudo
Допишем следующую строчку в конфигурацию:
zabbix ALL=(ALL) NOPASSWD:/usr/bin/nmap
Сохраняем внесенные изменения и проверяем:
Отлично, работает.
Установка и использование SSL сертификатов
Остался последний шаг – настроить доступ к веб панели администрирования только по HTTPS и настроить редирект с HTTP на HTTPS.
В этой настройке нет ничего сложного:
1. Сначала создадим директорию для хранения сертификатов:
sudo mkdir /etc/zabbix/ssl
2. Cкопируем сертификаты с открытым и закрытым ключом в эту директорию:
sudo cp itproblog* /etc/zabbix/ssl
3. Добавим директивы для обработки безопасных подключений от клиентов в конфигурационном файле nginx:
sudo nano /etc/zabbix/nginx.conf
server {
listen 80;
listen 443 ssl;
server_name zabbix.itproblog.ru;
ssl_certificate /etc/zabbix/ssl/itproblog.crt;
ssl_certificate_key /etc/zabbix/ssl/itproblog.key;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
root /usr/share/zabbix;
Сохраняем внесенные изменения и просим nginx перечитать конфигурационный файл:
sudo systemctl reload nginx
Теперь, даже если попробовать обратиться к веб интерфейсу по HTTP, то будет осуществлен редирект на HTTPS.
На предупреждение о небезопасном подключении прошу не обращать внимание, т.к. срок действия моего тестового сертификата истек.
Вот теперь установка и минимальная первоначальная настройка сервера Zabbix завершена.
Установка Zabbix: 2 комментария
Нашла для себя пару трюков с php, возможно кому-то пригодится:
Прописать в файл /etc/php/8.2/apache2-mod_php/php.ini:
max_execution_time = 600
max_input_time = 600
memory_limit = 256M
post_max_size = 32M
date.timezone = Europe/Moscow
always_populate_raw_post_data = -1
systemctl restart httpd2
и в файл /etc/zabbix/zabbix_server.conf:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpwd
systemctl enable –now zabbix_pgsql
apt-get install zabbix-phpfrontend-{apache2,php8.2} -y
ln -s /etc/httpd2/conf/addon.d/A.zabbix.conf /etc/httpd2/conf/extra-enabled/
chown apache2:apache2 /var/www/webapps/zabbix/ui/conf
systemctl restart httpd2
С ADMIN-DT в браузере перейти на страницу установки Zabbix сервера http:///zabbix
1. В качестве базы данных выбираем – PostgreSQL;
2. В качестве сервера базы данных указываем IP – адрес или имя localhost;
3. Указываем имя созданной базы данных zabbix;
4. Указываем имя созданного пользователя zabbix;
5. Указываем пароль для пользователя zabbix zabbixpwd;
6. Нажимаем Next step
7. zabbix.nastya.company
В качестве пароля для пользователя Admin – необходимо установить P@ssw0rd:
переходим в настройки аутентификации и снимаем галочку, которая запрещает
использование слабых паролей
SRV1-DT | SRV2-DT | SRV3-DT | SRV1-HQ:
apt-get install zabbix-agent -y
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.33.68
ServerActive=192.168.33.68
Hostname=srv1-hq.nastya.company
systemctl enable –now zabbix_agentd.service
Monitoring -> Hosts -> Create host
srv1-hq.nastya.company
srv1-hq.nastya.company
Linux by Zabbix agent
Linux servers
Agent – 192.168.11.66 | srv1-hq.nastya.company | IP | 10050
Add
Аналогично для всех остальных устройств: SRV1-DT, SRV2-DT, SRV3-DT
Добрый день! Благодарю за столь развернутый комментарий. Надеюсь, что коллегам по цеху он пригодится