Установка Zabbix (из исходных кодов) в Ubuntu 24.04

И опять я героически где-то посеял заметку по установке и настройке zabbix-сервера, а она сейчас очень бы пригодилась. Придется написать ее еще один раз.

Первым дело естественно установим Postgresql сервер.

# apt-get install postgresql
# systemctl enable postgresql@16-main.service
# systemctl start postgresql@16-main.service

Создаем базу данных для нашего Zabbix-сервера.

# su postgres
$ psql
postgres=# CREATE USER zabbix_user WITH PASSWORD 'xxxPasswordxxx';
postgres=# CREATE DATABASE zabbix_db WITH OWNER zabbix_user

Зайдем с козырей и будем устанавливать из исходников с гитхаба и самую свежую версию.

Текущий стабильный релиз можно тут посмотреть: https://github.com/zabbix/zabbix/tags

Соответственно скачиваем текущую стабильную 7.2.4, распаковываем и настраиваем окружение nginx и php-fpm. Я про это уже много раз писал и поэтому быстренько вспомним команды.

# wget https://github.com/zabbix/zabbix/archive/refs/tags/7.2.4.tar.gz
# apt-get install nginx
# systemctl start nginx
# systemctl enable nginx
# apt-get install php-fpm
# systemctl enable php8.3-fpm.service
# aptitude install php-gd php-bcmath php-mbstring php-xmlreader php-xmlwriter php-xml-util php-pgsql php-ldap php-curl
# systemctl restart php8.3-fpm.service

Так-как у меня на этом хосте будет только Zabbix, то и разместим его в стандартном каталоге /var/www/html (web-интерфейс в каталоге ui). Просто распакуем и сменим права доступа.

Конфигурационный файл для Nginx будет примерно таким. По хорошему надо еще ssl-сертификат прикрутить, но у нас этим будет заниматься фронтальный Nginx.

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        index index.html index.php;

        server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
    location /assets {
        access_log      off;
        expires         10d;
    }

    location ~ /\.ht {
        deny            all;
    }

    location ~ /(api\/|conf[^\.]|include|locale) {
        deny            all;
        return          404;
    }

    location /vendor {
        deny            all;
        return          404;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_pass    unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index   index.php;

        fastcgi_param   DOCUMENT_ROOT   /var/www/html;
        fastcgi_param   SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
        fastcgi_param   PATH_TRANSLATED /var/www/html$fastcgi_script_name;

        include fastcgi_params;
        fastcgi_param   QUERY_STRING    $query_string;
        fastcgi_param   REQUEST_METHOD  $request_method;
        fastcgi_param   CONTENT_TYPE    $content_type;
        fastcgi_param   CONTENT_LENGTH  $content_length;

        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout         60;
        fastcgi_send_timeout            180;
        fastcgi_read_timeout            180;
        fastcgi_buffer_size             128k;
        fastcgi_buffers                 4 256k;
        fastcgi_busy_buffers_size       256k;
        fastcgi_temp_file_write_size    256k;
    }
}

Обязательно правим параметры:

  • post_max_size
  • max_execution_time
  • max_input_time

Остальные подходят по умолчанию.

Собираем проект.

# apt-get install build-essential automake postgresql-server-dev-16 libxml++2.6-dev
# apt-get install libxml++2.6-dev libsnmp-dev libopenipmi-dev libevent-dev
# apt-get install libcurl4-openssl-dev libpcre3-dev golang
# ./bootstrap.sh
# ./configure --enable-server --enable-agent --with-postgresql --enable-ipv6 --with-net-snmp --with-libcurl --with-openipmi --with-ares --enable-agent2
# make install

Инициализируем базу данных.

Создаем схему.

# make dbschema

Загружаем схему в базу данных.

# su postgres
$ cat ./database/postgresql/schema.sql | psql -U zabbix_user -h 127.0.0.1 zabbix_db
$ cat ./database/postgresql/images.sql | psql -U zabbix_user -h 127.0.0.1 zabbix_db
$ cat ./database/postgresql/data.sql | psql -U zabbix_user -h 127.0.0.1 zabbix_db

Настраиваем web-интерфейс, подключение к базе, администратор и т.п.

Создаем пользователя и группу.

# groupadd --system zabbix
# adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-
# mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
# chown zabbix:zabbix /var/lib/zabbix

Редактируем конфигурацию агента и сервера в файлах:

  • /usr/local/etc/zabbix_server.conf
  • /usr/local/etc/zabbix_agent2.conf

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

# su zabbix -s /bin/bash
$ zabbix_server -f

И аналогично агента.

# su zabbix -s /bin/bash
$ zabbix_agent2 -f

Если все прошло по плану, то пишем SystemD-сервисы.

Сервер /etc/systemd/system/zabbix-server.service

[Unit]
Description=Zabbix Server Daemon
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=forking
ExecStart=/usr/local/sbin/zabbix_server
ExecReload=/usr/local/sbin/zabbix_server -R config_cache_reload
PIDFile=/tmp/zabbix_server.pid

User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.target

Ну и понятно, что запускаем-активируем и конечно же радуемся очередному успеху.

# systemctl daemon-reload
# systemctl enable zabbix-server
# systemctl start zabbix-server
# systemctl status zabbix-server

Агент /etc/systemd/system/zabbix-agent2.service

[Unit]
Description=Zabbix Agent Daemon
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_agent2 -f
PIDFile=/tmp/zabbix_agent2.pid

User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.target

Аналогично, запускаем проверяем, радуемся.

# systemctl daemon-reload
# systemctl enable zabbix-agent2
# systemctl start zabbix-agent2
# systemctl status zabbix-agent2

Проверяем, что метрики собираются и для верности сервер можно ребутнуть и убедиться, что все работает корректно.

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

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