Установка Zabbix 6.2 + Nginx + PostgreSQL 14 + TimescaleDB в Debian 11 Bullseye
Zabbix — свободная система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования, написанная Алексеем Владышевым. Для хранения данных используется MySQL, PostgreSQL, SQLite или Oracle Database, веб-интерфейс написан на PHP.
Подготовка
Обновляем ОС, устанавливаем софт
1
2
3
4
$ 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 из репозитория
Добавляем ключ репозитория
1
$ wget --quiet -O - https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
Добавляем репозиторий Nginx
1
2
3
4
$ 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
1
2
$ sudo apt update
$ sudo apt install -y nginx
Установка Postgresql 14 из репозитория
Добавляем репозиторий PostgreSQL
1
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Добавляем ключ репозитория
1
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Устанавливаем Postgresql 14
1
2
$ sudo apt update
$ sudo apt -y install postgresql-14
Установка Zabbix 6.2 из репозитория
Добавляем репозиторий
1
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
1
2
$ 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, удаляем его
1
2
$ sudo apt -y remove apache2
$ sudo apt -y autoremove
Настройка Postgresql 14
Редактируем конфиг pg_hba.conf
, включаем авторизацию по паролю для локальных соединений
1
2
3
4
5
6
7
8
$ 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
...
Перезапускаем сервис
1
$ sudo systemctl restart postgresql
Настройка PHP-FPM
Меняем timezone
и listen.mode
1
2
3
4
5
$ sudo nano /etc/zabbix/php-fpm.conf
...
listen.mode = 0777
...
php_value[date.timezone] = Europe/Moscow
Перезапускаем сервис
1
$ sudo systemctl restart php7.4-fpm
Настройка Nginx
Редактируем конфиг zabbix.conf
1
2
3
4
5
6
7
8
9
10
11
$ 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;
...
Отключаем дефолтный конфиг
1
$ sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.disabled
Перезапускаем сервис
1
$ sudo systemctl restart nginx
Настройка PostgreSQL для Zabbix
Создаем пользователя
1
2
$ sudo -u postgres createuser --pwprompt zabbix
Enter password for new role: mysuperpass
Создаем базу
1
$ sudo -u postgres createdb -O zabbix zabbix
Загружаем данные
1
$ zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
Правим конфиг zabbix_server.conf
, добавляем пароль пользователя
1
2
3
4
$ sudo nano /etc/zabbix/zabbix_server.conf
...
DBPassword=mysuperpass
...
Перезапускаем сервисы, добавляем их в автозагрузку
1
2
$ 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-интерфейс, завершаем установка
1
2
Default login: Admin
Default pass: zabbix
Установка TimescaleDB
Ставим софт
1
$ sudo apt -y install gnupg postgresql-common apt-transport-https lsb-release
Добавляем ключ репозитория
1
$ wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo sh -c "gpg --dearmor > /etc/apt/trusted.gpg.d/timescaledb.gpg"
Добавляем репозиторий TimescaleDB
1
$ echo "deb https://packagecloud.io/timescale/timescaledb/debian/ $(lsb_release -c -s) main" | sudo tee /etc/apt/sources.list.d/timescaledb.list
Устанавливаем TimescaleDB
1
2
$ sudo apt update
$ sudo apt -y install timescaledb-2-postgresql-14
Модифицируем конфиг PostgreSQL
1
$ sudo timescaledb-tune --quiet --yes
Добавляем параметр shared_preload_libraries = 'timescaledb'
в конфиг Postgresql
1
$ echo "shared_preload_libraries = 'timescaledb'" | sudo tee -a /etc/postgresql/14/main/postgresql.conf
Перезапускаем Postgresql
1
$ sudo systemctl restart postgresql
Добавляем расширение в базу
1
$ echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
Скачиваем дистрибутив zabbix-6.2.1
и распаковываем его
1
2
$ wget https://cdn.zabbix.com/zabbix/sources/stable/6.2/zabbix-6.2.1.tar.gz
$ tar -zxvf zabbix-6.2.1.tar.gz
Добавляем данные в базу
1
$ cat zabbix-6.2.1/database/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix
Что б Zabbix Server не ругался на версию TimescaleDB, добавляем в самом конце конфига zabbix_server.conf
1
2
3
$ 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.
Перезапускаем сервисы
1
$ sudo systemctl restart postgresql zabbix-server
Установка Zabbix Agent 2 на хостах
Добавляем репозиторий Zabbix
1
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 Agent 2
1
2
$ sudo apt update
$ sudo apt -y install zabbix-agent2
Правим конфиг zabbix_agent2.conf
1
$ sudo nano /etc/zabbix/zabbix_agent2.conf
Перезапускаем сервис и добавляем его в автозагрузку
1
2
$ sudo systemctl restart zabbix-agent2
$ sudo systemctl enable zabbix-agent2