Thank you for reading this post, don't forget to subscribe!
Оригинал статьи:
Установка Zabbix 5.4, Nginx, PostgreSQL 13 + TimescaleDB в Centos 8 / Rocky Linux
Zabbix — свободная система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования.
TimescaleDB — это расширение PostgreSQL для работы с временными рядами (time series). Временные ряды можно хранить в PostgreSQL и просто так, но TimescaleDB обеспечивает большую производительность на том же железе.
Установка Zabbix и Nginx
Добавляем репозиторий Zabbix
$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm
Добавляем репозиторий Nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ sudo nano /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true |
По умолчанию будет использоваться стабильная версия. Если нужна основная версия(mainline), переключаемся
$ sudo dnf config-manager --set-enabled nginx-mainline
Удаляем все метаданные
$ sudo dnf clean all
Устанавливаем Zabbix для БД PostgreSQL и Nginx
$ sudo dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
Установка PostgreSQL 13
Отключаем модуль PostgreSQL в предустановленном по умолчанию репозитории AppStream
$ sudo dnf -qy module disable postgresql
Проверяем
1 2 3 4 5 6 7 |
$ sudo dnf module list postgresql CentOS-8 - AppStream Local Name Stream Profiles Summary postgresql 9.6 [x] client, server [d] PostgreSQL server and client module postgresql 10 [d][x] client, server [d] PostgreSQL server and client module postgresql 12 [x] client, server [d] PostgreSQL server and client module postgresql 13 [x] client, server [d] PostgreSQL server and client module |
Добавляем репозиторий PostgreSQL
$ sudo dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Устанавливаем PostgreSQL 13
$ sudo dnf -y install postgresql13 postgresql13-server
Инициализируем базу
$ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
Initializing database … OK
Основной конфиг PostgreSQL расположен тут:
/var/lib/pgsql/13/data/postgresql.conf
Запускаем PostgreSQL и добавляем сервис в автозагрузку
$ sudo systemctl enable --now postgresql-13
Проверяем статус
$ systemctl status postgresql-13
Устанавливаем пароль для пользователя postgres
1 2 3 4 |
sudo su - postgres $ psql -c "alter user postgres with password 'mysuperpassword'" ALTER ROLE $ exit |
Установка TimescaleDB
Добавляем репозиторий TimescaleDB
1 2 3 4 5 6 7 8 9 10 11 |
$ sudo nano /etc/yum.repos.d/timescale_timescaledb.repo [timescale_timescaledb] name=timescale_timescaledb baseurl=https://packagecloud.io/timescale/timescaledb/el/8/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 |
Устанавливаем утилиты
$ sudo yum install pygpgme yum-utils
Устанавливаем timescaledb
$ sudo yum install timescaledb-2-postgresql-13
Останавливаем PostgreSQL
$ sudo systemctl stop postgresql-13
Тюним PostgreSQL (от рута)
$ sudo su -c 'timescaledb-tune --pg-config=/usr/pgsql-13/bin/pg_config'
Запускаем PostgreSQL
$ sudo systemctl start postgresql-13
Настройка Zabbix и Nginx
Переключаемся на пользователя root
$ sudo su
Создаем пользователя БД для Zabbix
# sudo -u postgres createuser --pwprompt zabbix
Enter password for new role: zabbixpasswd
Enter it again: zabbixpasswd
Создадим БД для Zabbix
# sudo -u postgres createdb -O zabbix zabbix
Импортируем начальную схему и данные
# zcat /usr/share/doc/zabbix-sql-scripts/postgresql/create.sql.gz | sudo -u zabbix psql zabbix
Подключаем расширение timescaledb
# echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
Скачиваем исходники Zabbix и распаковываем архив
# cd /tmp
# wget https://cdn.zabbix.com/zabbix/sources/stable/5.4/zabbix-5.4.3.tar.gz
# tar -zxvf zabbix-5.4.3.tar.gz
Импортируем схему и данные для расширения timescaledb в PostgreSQL
1 2 3 4 5 6 7 |
# cat /tmp/zabbix-5.4.3/database/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix Creating home directory for zabbix. NOTICE: PostgreSQL version 13.3 is valid NOTICE: TimescaleDB extension is detected NOTICE: TimescaleDB version 2.4.0 is valid NOTICE: TimescaleDB is configured successfully DO |
Редактируем конфиг PostgreSQL
$ sudo nano /var/lib/pgsql/13/data/pg_hba.conf
1 2 3 |
... #host all all 127.0.0.1/32 scram-sha-256 host zabbix zabbix 127.0.0.1/32 md5 |
Перезапускаем сервис
$ sudo systemctl restart postgresql-13
Настраиваем подключение Zabbix к PostgreSQL
1 2 3 4 5 |
sudo nano /etc/zabbix/zabbix_server.conf DBHost=127.0.0.1 DBName=zabbix DBUser=zabbix DBPassword=zabbixpasswd |
Настраиваем Nginx
1 2 3 4 |
$ sudo nano /etc/nginx/conf.d/zabbix.conf listen 80; server_name zabbix.example.ru; ... |
Перезапускаем сервисы и добавляем их в автозагрузку
$ sudo systemctl restart zabbix-server zabbix-agent nginx php-fpm
$ sudo systemctl enable zabbix-server zabbix-agent nginx php-fpm
Настройка Firewall и SeLinux
Открываем порты 80/443
$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
$ sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
$ sudo firewall-cmd --reload
Выполним следующие команды, чтобы предоставить веб-интерфейсу Zabbix разрешение на соединение с сервером
$ sudo setsebool -P httpd_can_connect_zabbix on
Также нужно предоставить веб-интерфейсу Zabbix разрешение на соединение с базой данных
$ sudo setsebool -P httpd_can_network_connect_db on
Далее переходим в web-интерфейс и завершаем настройку Zabbix