
Zabbix 6.2 + Nginx + PostgreSQL 14 + TimescaleDB
Zabbix — свободная система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования, написанная Алексеем Владышевым. Для хранения данных используется MySQL, PostgreSQL, SQLite или Oracle Database, веб-интерфейс написан на PHP.
Подготовка
Обновляем ОС, устанавливаем софт
$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt -y install nano curl bind9-utils telnet wget net-tools traceroute git tcpdump rsync open-vm-tools mlocate htop tar zip unzip cloud-guest-utils
$ sudo apt -y install gnupg2
Установка Nginx из репозитория
Добавляем ключ репозитория
$ wget --quiet -O - https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
Добавляем репозиторий Nginx
$ sudo nano /etc/apt/sources.list.d/nginx.list
# NGINX repo
deb https://nginx.org/packages/mainline/debian/ bullseye nginx
deb-src https://nginx.org/packages/mainline/debian bullseye nginx
Устанавливаем Nginx
$ sudo apt update
$ sudo apt install -y nginx
Установка Postgresql 14 из репозитория
Добавляем репозиторий PostgreSQL
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Добавляем ключ репозитория
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Устанавливаем Postgresql 14
$ sudo apt update
$ sudo apt -y install postgresql-14
Установка Zabbix 6.2 из репозитория
Добавляем репозиторий
$ wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-1+debian11_all.deb
$ sudo dpkg -i zabbix-release_6.2-1+debian11_all.deb
Устанавливаем Zabbix для Nginx и Postgresql
$ sudo apt update
$ sudo apt -y install zabbix-server-pgsql zabbix-frontend-php php7.4-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
Почему то в процессе установки обнаружил, что установился apache2, удаляем его
$ sudo apt -y remove apache2
$ sudo apt -y autoremove
Настройка Postgresql 14
Редактируем конфиг pg_hba.conf, включаем авторизацию по паролю для локальных соединений
$ sudo nano /etc/postgresql/14/main/pg_hba.conf
...
#host all all 127.0.0.1/32 scram-sha-256
host all all 127.0.0.1/32 md5
# IPv6 local connections:
#host all all ::1/128 scram-sha-256
host all all ::1/128 md5
...
Перезапускаем сервис
$ sudo systemctl restart postgresql
Настройка PHP-FPM
Меняем Timezone и listen.mode
$ sudo nano /etc/zabbix/php-fpm.conf
...
listen.mode = 0777
...
php_value[date.timezone] = Europe/Moscow
Перезапускаем сервис
$ sudo systemctl restart php7.4-fpm
Настройка Nginx
Редактируем конфиг zabbix.conf
$ sudo nano /etc/nginx/conf.d/zabbix.conf
listen 80;
listen [::]:80;
server_name _;
# listen 8080;
# server_name example.com;
root /usr/share/zabbix;
index index.php;
client_max_body_size 100M;
...
Отключаем дефолтный конфиг
$ sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.disabled
Перезапускаем сервис
$ sudo systemctl restart nginx
Настройка PostgreSQL для Zabbix
Создаем пользователя
$ sudo -u postgres createuser --pwprompt zabbix
Enter password for new role: mysuperpass
Создаем базу
$ sudo -u postgres createdb -O zabbix zabbix
Загружаем данные
$ zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
Правим конфиг zabbix_server.conf, добавляем пароль пользователя
$ sudo nano /etc/zabbix/zabbix_server.conf
...
DBPassword=mysuperpass
...
Перезапускаем сервисы, добавляем их в автозагрузку
$ sudo systemctl restart zabbix-server zabbix-agent2 nginx php7.4-fpm
$ sudo systemctl enable zabbix-server zabbix-agent2 nginx php7.4-fpm
Zabbix server установлен, заходим в web-интерфейс, завершаем установка
Default login: Admin
Default pass: zabbix
Установка TimescaleDB
Ставим софт
$ sudo apt -y install gnupg postgresql-common apt-transport-https lsb-release
Добавляем ключ репозитория
$ wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo sh -c "gpg --dearmor > /etc/apt/trusted.gpg.d/timescaledb.gpg"
Добавляем репозиторий timescaledb
$ echo "deb https://packagecloud.io/timescale/timescaledb/debian/ $(lsb_release -c -s) main" | sudo tee /etc/apt/sources.list.d/timescaledb.list
Устанавливаем timescaledb
$ sudo apt update
$ sudo apt -y install timescaledb-2-postgresql-14
Тюним конфиг PostgreSQL
$ sudo timescaledb-tune --quiet --yes
Добавляем параметр shared_preload_libraries = ‘timescaledb’ в конфиг Postgresql
$ echo "shared_preload_libraries = 'timescaledb'" | sudo tee -a /etc/postgresql/14/main/postgresql.conf
Перезапускаем Postgresql
$ sudo systemctl restart postgresql
Добавляем расширение в базу
$ echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
Скачиваем дистрибутив zabbix-6.2.1 и распаковываем его
$ wget https://cdn.zabbix.com/zabbix/sources/stable/6.2/zabbix-6.2.1.tar.gz
$ tar -zxvf zabbix-6.2.1.tar.gz
Добавляем данные в базу
$ cat zabbix-6.2.1/database/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix
Что б zabbix server не ругался на версию TimescaleDB, добавляем в самом конце конфига zabbix_server.conf
$ sudo nano /etc/zabbix/zabbix_server.conf
...
AllowUnsupportedDBVersions=1
Иначе в логах zabbix server будет ошибка:
Unsupported DB! timescaledb version is 20702 which is higher than maximum of 20699
Recommended version should not be higher than TimescaleDB Community Edition 2.6.
Перезапускаем сервисы
$ sudo systemctl restart postgresql zabbix-server
Установка Zabbix Agent 2 на хостах
Добавляем репозиторий Zabbix
$ wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-1+debian11_all.deb
$ sudo dpkg -i zabbix-release_6.2-1+debian11_all.deb
Устанавливаем Zabbix Agent 2
$ sudo apt update
$ sudo apt -y install zabbix-agent2
Правим конфиг zabbix_agent2.conf
$ sudo nano /etc/zabbix/zabbix_agent2.conf
Перезапускаем сервис и добавляем его в автозагрузку
$ sudo systemctl restart zabbix-agent2
$ sudo systemctl enable zabbix-agent2