===== Установка Zabbix 7.0 на Ubuntu 24.04 с PostgreSQL и NGINX =====
Т.к. мне понравилась работа PostgreSQL с Timescaledb, то решил не заморачиваться на стандартную связку MySQL и Apache. Будем сразу по жесткому:)
==== Подготовка ====
Для начала обновим систему.
Обновим список пакетов
sudo apt-get update
Далее и саму систему
sudo apt-get dist-upgrade
Проверяем установленное время на сервере
timedatectl
Ставим свой. У меня такой:
timedatectl set-timezone Europe/Kaliningrad
==== Установка Zabbix ====
Скачиваем с официального сервера пакет для подключения репозитория
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu24.04_all.deb
Ставим его
sudo dpkg -i zabbix-release_7.0-2+ubuntu24.04_all.deb
Теперь официальный репозиторий Zabbix подключен к нашей системе. Обновим список пакетов.
sudo apt-get update
Ставим необходимые пакеты.
sudo apt install zabbix-server-pgsql zabbix-frontend-php php8.3-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
==== Настройка веб-сервера и PHP-FPM ====
Настраиваем веб-сервер. Открываем любимым редактором файл **/etc/zabbix/nginx.conf**. И раскомментируем в нем две строки.
listen 80;
server_name zabbix.local;
Обратите внимание, что порт сервера по-умолчанию стоит ''8080''. Если не планируете использовать еще как-либо сайты на сервере, то проще поставить ''80'' и закинуть этот конфиг как **//default//** в настройки NGINX.
Далее открываем **/etc/zabbix/php-fpm.conf** и ставим такие значения:
php_value[post_max_size] = 128M
php_value[upload_max_filesize] = 128M
Первая отвечает за максимальный размер данных, отправляемых на сервер за один запрос, вторая определяет максимальный размер загружаемого файла.
Далее перезапускаем службы
sudo systemctl restart nginx php8.3-fpm
==== Установка PostgreSQL ====
Ставим актуальную версию
sudo apt install postgresql postgresql-contrib
Теперь создадим новую роль (пользователя) сервера PostgreSQL и зададим ему новый пароль:
sudo -u postgres createuser --pwprompt zabbix
Обратите внимание, что ''sudo -u postgres'' обозначает, что команда выполняется от имени пользователя **postgres**, а не **root**.
Cоздадим новую базу данных zabbix с владельцем zabbix
sudo -u postgres createdb -O zabbix zabbix
Загрузим в нее схему и начальные данные
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
В ходе выполнения данной команды система может попросить пароль, который вы установили на предыдущем шаге.
Затем откроем файл **/etc/zabbix/zabbix_server.conf** и найдем там опцию **DBPassword**, раскомментируем ее и приведем к виду
DBPassword=пароль установленный ранее
==== Установка TimescaleDB ====
Ставим необходимые пакеты
sudo apt install gnupg apt-transport-https
Добавляем официальный репозиторий
echo "deb https://packagecloud.io/timescale/timescaledb/ubuntu/ $(lsb_release -c -s) main" | sudo tee /etc/apt/sources.list.d/timescaledb.list
Качаем и ставим ключ репозитория
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/timescaledb.gpg
Обновляем список пакетов
sudo apt-get update
И установим нужные компоненты.
Обратите внимание, что версия TimescaleDB должна соответствовать установленной версии PostgreSQL, в Ubuntu 24.04 это версия 16. Еще один момент - Zabbix поддерживает строго определенные версии TimescaleDB 2.13 - 2.15, поэтому выполним установку с явным указанием версии, при этом вы потом можете смело обновляться, на работу это не повлияет
sudo apt install timescaledb-2-postgresql-16='2.15.*' timescaledb-2-loader-postgresql-16='2.15.*' postgresql-client-16
После установки запустим утилиту конфигурирования TimescaleDB и ответим утвердительно на все вопросы
sudo timescaledb-tune
Утилита timescaledb-tune анализирует текущую конфигурацию PostgreSQL и предлагает оптимальные настройки для работы с TimescaleDB. Она автоматически изменяет параметры в файле **postgresql.conf**, чтобы улучшить производительность базы данных для работы с временными рядами.
На данном этапе мы не будем углубляться в настройку параметров через timescaledb-tune, поэтому просто отвечаем утвердительно на все вопросы утилиты.
После завершения работы утилиты все изменения будут внесены в файл конфигурации PostgreSQL.
Перезапускаем PostgreSQL
sudo systemctl restart postgresql
Подключаем расширение к базе
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
И выполним специальный скрипт для конвертации данных
cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix
Сообщения в ходе выполнения скрипта о том, что вы не следуете лучшим практикам (not follow best practices) можно смело проигнорировать.
На этом установка и настройка TimescaleDB завершена.
==== Завершение ====
Для завершения установки добавим службы Zabbix в автозагрузку и одновременно запустим их
sudo systemctl enable --now zabbix-server zabbix-agent
Далее переходим по адресу, забитому в конфиге nginx выше или просто по ip и завершаем настройку.
Логин по-умолчанию **Admin** и пароль **zabbix**
Благодарю следующие источники за информацию:
[[https://interface31.ru/tech_it/2024/07/ustanovka-zabbix-7-c-nginx-postgresql-timescaledb-na-ubuntu-server.html]]
[[https://sysadminhub.ru/other/zabbix/how-to-install-zabbix-7-ubuntu-nginx-postgresql-timescaledb]]
[[https://www.timescale.com/blog/how-to-install-timescaledb-on-aws]]