Установка Zabbix

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 00028MySQL Server,
Percona Server,
MariaDB Server,
PostgreSQL
10 000416MySQL Server,
Percona Server,
MariaDB Server,
PostgreSQL
100 0001664MySQL Server,
Percona Server,
MariaDB Server,
PostgreSQL
Oracle
1 000 0003296MySQL 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 комментария

  1. Нашла для себя пару трюков с 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

    1. Добрый день! Благодарю за столь развернутый комментарий. Надеюсь, что коллегам по цеху он пригодится

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *