Установка Zabbix 6.0 на Almalinux 9.3
Используемый стек
Almalinux 9.3 (4 ядра ЦП, 6 ГБ оперативной памяти, можно меньше)
Zabbix 6.0
PostgreSQL 15.5
TimescaleDB 2.13.1
Описание стека
Almalinux — дистрибутив Linux на основе исходных кодов Red Hat Enterprise Linux. Almalinux — замена CentOS 7.
Zabbix — программный инструмент с открытым исходным кодом для мониторинга ИТ-инфраструктуры.
PostgreSQL — свободная объектно-реляционная СУБД.
TimescaleDB — ПО с открытым исходным кодом, является расширением для PostgreSQL, которое оптимизирует работу с временными рядами в обычной базе данных PostgreSQL.
Временные ряды (time series) — собранные в разные моменты времени данные о характеристиках исследуемого процесса.
Временные ряды состоят из двух элементов:
1. временная метка;
2. характеристики, называемые уровнями ряда.
Установка и настройка PostgreSQL и TimescaleDB
Установите репозиторий PostgreSQL:
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Отключите встроенный модуль PostgreSQL:
dnf -qy module disable PostgreSQL
Установите сервер PostgreSQL:
dnf install -y postgresql15-server
Создайте репозиторий TimescaleDB (скопировать все строки и вставить в CLI):
tee /etc/yum.repos.d/timescale_timescaledb.repo <
Обновите список локальных репозиториев:
yum -y update
Установите TimescaleDB и инструмент для тюнинга:
yum -y install timescaledb-2-postgresql-15 timescaledb-tools
Инициализируем базу данных и включаем автоматический запуск сервера PostgreSQL:
/usr/pgsql-15/bin/postgresql-15-setup initdb
systemctl enable postgresql-15 && systemctl start postgresql-15
Тюнинг postgresql через timescaledb:
-cpus — количество ядер процессора, для PostgreSQL.
-memory — объем ОП, для PostgreSQL.
-dry-run — вывести информацию о том, какие строки будут записаны в конфиг файл (предпросмотр).
-quiet — тихая установка.
-yes — отвечать «да» на каждый вопрос.
Предпросмотр:
timescaledb-tune --pg-config=/usr/pgsql-15/bin/pg_config -cpus 2 -memory 2GB -dry-run -quiet -yes
Применим заданные настройки:
timescaledb-tune --pg-config=/usr/pgsql-15/bin/pg_config -cpus 2 -memory 2GB -quiet -yes
Ещё немного тюнинга postgresql:
Редактируем /var/lib/pgsql/15/data/postgresql.conf
Максимальное количество подключений.
max_connections = 100
Уровень журнала WAL=minimal, т.к. журнал WAL содержит меньше информации и быстрее работает, а репликацию БД не используем в данном примере.
wal_level = minimal
Отключение режима синхронного записи журнала WAL.
synchronous_commit = off
С какой периодичность записывать данные в журнал WAL (С ОП на диск (раз в 2 секунды)).
wal_writer_delay = 2000ms
Количество реплик.
max_wal_senders = 0
Добавить в конец конфиг файла. Отключаем телеметрию.
timescaledb.telemetry_level = off
Перезагрузим postgresql, чтобы изменения вступили в силу.
systemctl restart postgresql-15
Установка и настройка Zabbix
Исключите пакеты Zabbix поставляемые в репозитории EPEL,
если он у Вас установлен. Отредактируйте файл /etc/yum.repos.d/epel.repo и добавьте следующую директиву:
[epel]
...
excludepkgs=zabbix*
Примечание. Как должно получиться, 11-я строка:
Пример конфиг файла
Установка репозитория Zabbix.
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm; dnf clean all
Установка Zabbix-сервера, Nginx, Zabbix-агента.
dnf install -y zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2
Установка Русского и Английского языка для Zabbix.
dnf install -y glibc-langpack-ru glibc-langpack-en
Создаём пользователя «zabbix» в БД PostgreSQL и придумываем для него пароль.
sudo -u postgres createuser --pwprompt zabbix
Создаём базу данных в PostgreSQL с именем «zabbix» под пользователем «zabbix».
sudo -u postgres createdb -O zabbix zabbix
Импортируем структуру БД «zabbix».
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
Включение расширения TimescaleDB.
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
Запустим скрип для редактирование БД под timescaledb.
cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix
Подключаемся к БД, чтобы проверить, что расширение TimescaleDB было установлено.
sudo -u postgres psql zabbix
Посмотреть все установленные расширения PostgreSQL
\dx
Отключится от базы данных
\q
Редактируем конфиг файл Zabbix-сервера /etc/zabbix/zabbix_server.conf.
Задаём пароль от учётной записи «zabbix» в БД PostgreSQL, который ранее указывали.
DBPassword=password
Poller — это процесс, который стягие метрики с хостов. (Указываем их количество).
StartPollers=100
PollersUnreachable — это процесс, который опрашивает недоступные хосты. (Указываем их количество).
StartPollersUnreachable=75
Pingers — это процесс, который пингует хосты для проверки их доступности. (Указываем их количество).
StartPingers=5
Discoverers — это процесс, отвечающий за автоматическое обнаружение хостов.
StartDiscoverers=5
Задаём размер кэша Zabbix.
CacheSize=2G
DBSyncers — это процессы, которые отвечаю за соединение с БД.
StartDBSyncers=5
Размер кэша истории.
HistoryCacheSize=256M
Размер кэша индекса истории.
HistoryIndexCacheSize=128M
Размер кэша записи тренда.
TrendCacheSize=512M
Размер кэша значений истории.
ValueCacheSize=1G
Указывает, как долго мы ждем агента, SNMP-устройства или внешней проверки (в секундах).
Timeout=3
По истечении скольких секунд недоступности считайте хост недоступным.
UnreachablePeriod=15
Как часто хост проверяется на доступность в течение периода недоступности, в секундах.
UnavailableDelay=180
Как часто хост проверяется на доступность в течение периода недостижимости, в секундах
UnreachableDelay=5
Настройка Nginx и PHP
Настройка PHP. Редактируем /etc/php.ini
Закроем доступ ко всем не существующим файлам .php (для безопасности)
cgi.fix_pathinfo=0
Устанавливаем часовой пояс
date.timezone = "Asia/Irkutsk"
Настройка Nginx
Редактируем файл /etc/nginx/conf.d/zabbix.conf, раскомментируем и настроим директивы 'listen' и 'server_name'.
listen 80;
server_name zabbix.lan;
Настройка фаервола
Порт TCP 80 — для подключения к веб zabbix по HTTP.
Порт TCP 10050 — порт агента, по нему zabbix сервер опрашивает клиентов.
Порт TCP 10051 — порт, на котором zabbix сервер получает данные от клиентов.
Откроем порты 80, 10050, 10051 и посмотрим, что они применились:
firewall-cmd --permanent --add-port={80/tcp,10050/tcp,10051/tcp}; firewall-cmd --reload; firewall-cmd --list-all
Запуск Zabbix-сервера
Запустите процессы Zabbix сервера, агента, nginx, php и настройте их запуск при загрузке ОС.
systemctl restart zabbix-server zabbix-agent2 nginx php-fpm && systemctl enable zabbix-server zabbix-agent2 nginx php-fpm
Откройте веб-страницу Zabbix
http://zabbix.lan/ или http://ip-адрес/
По умолчанию, логин: Admin, пароль: zabbix
Источники
https://www.postgresql.org/download/linux/redhat/
https://www.zabbix.com/ru/download? zabbix=6.0&os_distribution=alma_linux&os_version=9&components=server_frontend_agent&db=pgsql&ws=nginx
https://www.youtube.com/watch? v=7y2UtSoS3Xo
https://docs.timescale.com/self-hosted/latest/install/installation-linux/