Установка Zabbix 5.4, Nginx, PostgreSQL 13 + TimescaleDB в Centos 8 / Rocky Linux

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

По умол­ча­нию будет исполь­зо­вать­ся ста­биль­ная вер­сия. Если нуж­на основ­ная версия(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

Про­ве­ря­ем

 

Добав­ля­ем репо­зи­то­рий 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

Установка TimescaleDB

Добав­ля­ем репо­зи­то­рий TimescaleDB

Уста­нав­ли­ва­ем утилиты

$ 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

 

Редак­ти­ру­ем кон­фиг PostgreSQL

$ sudo nano /var/lib/pgsql/13/data/pg_hba.conf

Пере­за­пус­ка­ем сервис

$ sudo systemctl restart postgresql-13

Настра­и­ва­ем под­клю­че­ние Zabbix к PostgreSQL

Настра­и­ва­ем Nginx

Пере­за­пус­ка­ем сер­ви­сы и добав­ля­ем их в автозагрузку

$ 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