Описание:
Платформа виртуализации: VMWare ESXi 7
Операционная система: Rocky Linux 9
База данных: PostgreSQL 16 + TimescaleDB
Веб сервер: Nginx
Создание виртуальной машины и установка ОС
Заранее подготовьте образ ОС Rocky Linux 9. Скачайте с сайта rockylinux.org образ системы. Для установки и работы Zabbix можно использовать Minimal ISO. Загрузите iso файл в среду виртуализации.
По возможности разместите диск виртуальной машины на самом быстром хранилище которое у Вас есть в распоряжении. Выделите как можно больше CPU и памяти. Можно воспользоваться этой страницей для определения конфигурации виртуальной машины requirements Если хранить точную историю метрик 7 дней и 365 дней усредненные значения, то 300 - 500 Gb хватит даже для крупной инсталляции (1000 - 3000 nvps) Для хранения точной истории метрик 14 - 30 дней потребуется диск размером от 1Tb.
У Zabbix нет особых требований к установке ОС Linux. Тюнинг ОС не требуется.
Установка Zabbix 7.0 из пакетов
Далее последует набор команд из консоли Linux для минимальной установки и запуска zabbix. Все команды будут выполняться под учетной записью root. У системы должен быть доступ в интернет. ОС назначен статический ip 10.224.2.22
Обновляем систему
[root@Zabbix-server ~]# dnf update -y
Добавляем Русскую локализацию
[root@Zabbix-server ~]# dnf install -y glibc-langpack-ru
Добавляем правила в firewalld
[root@Zabbix-server ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@Zabbix-server ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent
[root@Zabbix-server ~]# systemctl restart firewalld
Устанавливаем PostgreSQL 16
[root@Zabbix-server ~]# dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
[root@Zabbix-server ~]# dnf -qy module disable postgresql
[root@Zabbix-server ~]# dnf install postgresql16 postgresql16-server -y
[root@Zabbix-server ~]# dnf install postgresql16-contrib -y
[root@Zabbix-server ~]# /usr/pgsql-16/bin/postgresql-16-setup initdb
[root@Zabbix-server ~]# systemctl enable postgresql-16
[root@Zabbix-server ~]# systemctl start postgresql-16
[root@Zabbix-server ~]# systemctl status postgresql-16
Проверяем что PostgreSQL 16 запустился
Установка пакетов Zabbix 7.0
[root@Zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
[root@Zabbix-server ~]# dnf clean all
[root@Zabbix-server ~]# dnf -y install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2
[root@Zabbix-server ~]# dnf install -y zabbix-get zabbix-sender zabbix-agent2-plugin-p*
Настройка базы данных Zabbix
Создание базы данных, пользователя для zabbix и импорт схемы (пароль 12345678)
[root@Zabbix-server ~]# sudo -u postgres createuser --pwprompt zabbix
[root@Zabbix-server ~]# sudo -u postgres createdb -O zabbix zabbix
[root@Zabbix-server ~]# zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
Настройка Zabbix 7.0 zabbix-server
Добавить пароль пользователя zabbix в файл конфигурации zabbix-server от базы данных zabbix
[root@Zabbix-server ~]# nano /etc/zabbix/zabbix_server.conf
DBPassword=12345678
Настроить файл конфигурации веб сервера Nginx. Первый старт веб сервер будет на 80 порту, в дальнейшем мы выпустим самоподписанный сертификат и запустим сервер на 443 порту.
[root@Zabbix-server ~]# nano /etc/nginx/conf.d/zabbix.conf
listen 80;
server_name 10.224.2.22;
Запускаем сервер zabbix и проверяем, что все службы работают.
[root@Zabbix-server ~]# systemctl start zabbix-server zabbix-agent2 nginx php-fpm
[root@Zabbix-server ~]# systemctl enable zabbix-server zabbix-agent2 nginx php-fpm
[root@Zabbix-server ~]#systemctl status zabbix-server zabbix-agent2 nginx php-fpm
Установка и настройка TimescaleDB.
Установка расширения TimescaleDB не обязательно, но крайне полезно для крупных инсталляций, так как решает проблему с удалением устаревшей историей метрик.
[root@Zabbix-server ~]# dnf -y install https://download.postgresql.org/pub/repos/yum/non-free/16/redhat/rhel-9-x86_64/timescaledb-tsl_16-2.13.0-1PGDG.rhel9.x86_64.rpm
[root@Zabbix-server ~]# systemctl stop zabbix-server
[root@Zabbix-server ~]# cat /var/lib/pgsql/16/data/postgresql.conf | grep shared_preload_libraries
[root@Zabbix-server ~]# systemctl restart postgresql-16
[root@Zabbix-server ~]# echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
[root@Zabbix-server ~]# cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix
[root@Zabbix-server ~]# systemctl start zabbix-server
Проверьте, что установили расширение timescaledb 2.13.0 Community Edition
[root@Zabbix-server ~]# sudo -u postgres psql zabbix
zabbix=# \dx
Настройка Zabbix 7.0 web-server
Переходим по url http://10.224.2.22/setup.php и завершаем настройку, для доступа к базе данных вводим пароль 12345678
Zabbix сервер готов к работе
Сервер zabbix с производительностью до 1000 nvps не требует тюнинга базы данных и операционной системы. В процессе работы нужно будет увеличивать количество процессов в файле конфигурации zabbix_server.conf при возникновении проблем у узла сети "Zabbix server" (этот узел сети создается по умолчанию при установке системы мониторинга). Даже с дефолтными настройками всех компонентов сервер будет работать быстро. Для более крупных инсталляций требуется дополнительная настройка и тюнинг.