И опять я героически где-то посеял заметку по установке и настройке 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
Проверяем, что метрики собираются и для верности сервер можно ребутнуть и убедиться, что все работает корректно.
