Установка 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

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

Похожие записи

Настройка взаимодействия RED ADM и Windows Active Directory

Сегодня проведем несколько экспериментов по настройке взаимодействия RED ADM и Windows Active Directory. Есть несколько способов настройки доверия для упрощения миграции с решений Microsoft на Российское ПО и сегодня их…

Установка основного контроллера домена на базе REDADM

Продолжаем наш проект по импортозамещеню Зарубежного ПО на Российское. Я уже рассказывал как работать с доменом FreeIPA, но для полноты картины стоит рассказать и про контроллер домена на базе REDADM.…

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

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

Читать еще статьи

Настройка взаимодействия RED ADM и Windows Active Directory

Настройка взаимодействия RED ADM и Windows Active Directory

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Установка основного контроллера домена на базе REDADM

Установка основного контроллера домена на базе REDADM

zVirt работа с шаблонами виртуальных машин

zVirt работа с шаблонами виртуальных машин

Подробная инструкция по работе с томами (volumes) в Docker

Подробная инструкция по работе с томами (volumes) в Docker

Сетевые возможности Docker

Сетевые возможности Docker