Zabbix 5.0 LTS в связке с PostgreSQL поддерживает TimescaleDB. Сегодня установим с нуля Zabbix 5.0 LTS на сервер Ubuntu. Используем базу данный PostgreSQL и TimescaleDB.
Должно получиться: Ubuntu 20.04 LTS + Zabbix 5.0 LTS + Nginx + PostgreSQL12 + TimescaleDB.
TimescaleDB — расширение, которое оптимизирует работу с временными рядами в базе данных PostgreSQL.
Я ожидаю получить значительный прирост производительности, в особенности для процесса housekeeping.
Кому интересно, можете посмотреть доклад Андрея Гущина из компании Zabbix про использование TimescaleDB в Zabbix.
Подготовка виртуальной машины
Я подготовил виртуальную машину с 8 CPU, 16 Гб ОЗУ и отдельным диском на 300 Гб. Установил Ubuntu 20.04 LTS.
Установка Ubuntu Server 20.04 LTS на виртуальную машину VMware ESXi 6.7
Диск для базы данных с файловой системой ext4 примонтировал к /opt.
Установка репозитория Zabbix
Установим репозиторий:
cd /tmp
wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
dpkg -i zabbix-release_5.0-1+focal_all.deb
apt update
После выполнение кода в /etc/apt/source.list.d появляется файл zabbix.list.
Репозиторий установлен.
Установка Zabbix сервера, веб-интерфейса и агента
apt install zabbix-server-pgsql zabbix-frontend-php php7.4-pgsql zabbix-nginx-conf zabbix-agent
Установка PostgreSQL 12
Установим PostgreSQL 12 на сервер с операционной системой Ubuntu 20.04 LTS. БД установим на отдельный диск объёмом 300 ГБ, примонтированный к /opt. Вынес этот этап в отдельную статью.
Установка PostgreSQL 12 на Ubuntu 20.04 LTS
Установка TimescaleDB
Не знаю, работает ли Zabbix с TimescaleDB 2, заодно проверим.
Установим репозиторий TimescaleDB:
add-apt-repository ppa:timescale/timescaledb-ppa
apt update
Установим TimescaleDB 2 для PostgreSQL 12:
apt install timescaledb-2-postgresql-12
Нам предлагают затюнить конфигурационный файл PostgreSQL 12.
В любом случае для использования TimescaleDB это нужно сделать, как минимум для подключения соответствующих библиотек.
timescaledb-tune --quiet --yes
Судя по выводу такой тюнинг нужно производить каждый раз после изменения конфигурации сервера, например, после добавления памяти или процессоров.
Перезагружаем PostgreSQL.
service postgresql restart
Установка TimescaleDB завершена.
Создание базы данных Zabbix
Выполняем:
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix
При этом нас попросят указать пароль от пользователя zabbix, придумываем и запоминаем. Укажем пароль в конфигурационном файле /etc/zabbix/zabbix_server.conf:
DBPassword=password
где вместо "password" пишем пароль.
Импортируем схему БД.
zcat /usr/share/doc/zabbix-server-pgsql*/create.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/doc/zabbix-server-pgsql*/timescaledb.sql | sudo -u zabbix psql zabbix
Настройка Nginx
В качестве веб-сервера у меня будет Nginx. Редактируем файл& /etc/zabbix/nginx.conf, раскомментируем и настроим директивы 'listen' и 'server_name'.
listen 80;
server_name example.com;
Редактируем файл /etc/zabbix/php-fpm.conf, раскомментируем строку и укажем свой часовой пояс:
; php_value[date.timezone] = Europe/Riga
меняю на:
php_value[date.timezone] = Europe/Moscow
Первый запуск
Запустим процессы Zabbix сервера и агента, настроим их запуск при загрузке ОС.
systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm
Дальнейшие настройки делаем через веб интерфейс http://server_ip_or_name.
Добро пожаловать в Zabbix 5.0. Next step.
Убеждаемся, что всё OK. Next step.
Указываем настройки для базы данных и пароль. Next step.
Настраиваю сервер. Next step.
Убеждаемся, что всё указали верно. Next step.
Натыкаюсь на ошибку. Почему-то веб-сервер не может загрузить файл, ладно скачиваю файл. Создаю файл /etc/zabbix/web/zabbix.conf.php:
cd /etc/zabbix/web
touch zabbix.conf.php
chown www-data\: ./zabbix.conf.php
Делаю владельцем пользователя, под которым запускается nginx, сохраняю содержимое в файл.
Просят логин. При первом входе используем логин "Admin", пароль "zabbix".
После входа продолжаем конфигурацию. Next step.
Фронтенд настроили. Finish.
Интерфейс заработал, база подцепилась.
Параметры TimescaleDB
Переходим в Administration → General → Housekeeping.
Enable compression (Включить сжатие) — установка или снятие флажка не активирует/деактивирует сжатие немедленно. Так как сжатием занимается процесс очистки истории (housekeeper), изменения вступят в силу в течение максимум двух периодов времени, заданных в параметре HousekeepingFrequency (в файле конфигурации сервера zabbix_server.conf). После отключения сжатия новые фрагменты, попавшие в период сжатия, не будут сжиматься. Однако все ранее сжатые данные останутся сжатыми. Чтобы распаковать ранее сжатые фрагменты, следуйте инструкциям в документации TimescaleDB. При обновлении старых версий Zabbix с поддержкой TimescaleDB сжатие не будет включено по умолчанию.
Compress records older than (Сжимать записи старше, чем) — этот параметр не может быть меньше 7 дней. Из-за неизменности сжатых фрагментов все запоздавшие данные (например, данные, задержанные прокси), которые старше этого значения, будут отброшены.
Ссылки
Источник:
https://internet-lab.ru/zabbix_5_0_install_ubuntu_timescaledb_postgresql
Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.