Перейти к основному содержанию

Zabbix 5.0 — установка на Ubuntu, TimescaleDB и PostgreSQL

Zabbix

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

Репозиторий установлен.

Установка 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

zabbix

Установим TimescaleDB 2 для PostgreSQL 12:

apt install timescaledb-2-postgresql-12

zabbix

Нам предлагают затюнить конфигурационный файл PostgreSQL 12.

sql

В любом случае для использования TimescaleDB это нужно сделать, как минимум для подключения соответствующих библиотек.

timescaledb-tune --quiet --yes

zabbix

Судя по выводу такой тюнинг нужно производить каждый раз после изменения конфигурации сервера, например, после добавления памяти или процессоров.

Перезагружаем PostgreSQL.

service postgresql restart

zabbix

Установка TimescaleDB завершена.

Создание базы данных Zabbix

Выполняем:

sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix 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

Добро пожаловать в Zabbix 5.0. Next step.

zabbix

Убеждаемся, что всё OK. Next step.

zabbix

Указываем настройки для базы данных и пароль. Next step.

zabix

Настраиваю сервер. Next step.

zabbix

Убеждаемся, что всё указали верно. Next step.

zabbix

Натыкаюсь на ошибку. Почему-то веб-сервер не может загрузить файл, ладно скачиваю файл. Создаю файл /etc/zabbix/web/zabbix.conf.php:

cd /etc/zabbix/web
touch zabbix.conf.php
chown www-data\: ./zabbix.conf.php

Делаю владельцем пользователя, под которым запускается nginx, сохраняю содержимое в файл.

zabbix

Просят логин. При первом входе используем логин "Admin", пароль "zabbix".

После входа продолжаем конфигурацию. Next step.

zabbix

Фронтенд настроили. Finish.

zabbix

Интерфейс заработал, база подцепилась.

Параметры TimescaleDB

Переходим в Administration → General → Housekeeping.

zabbix

Enable compression (Включить сжатие) — установка или снятие флажка не активирует/деактивирует сжатие немедленно. Так как сжатием занимается процесс очистки истории (housekeeper), изменения вступят в силу в течение максимум двух периодов времени, заданных в параметре HousekeepingFrequency (в файле конфигурации сервера zabbix_server.conf). После отключения сжатия новые фрагменты, попавшие в период сжатия, не будут сжиматься. Однако все ранее сжатые данные останутся сжатыми. Чтобы распаковать ранее сжатые фрагменты, следуйте инструкциям в документации TimescaleDB. При обновлении старых версий Zabbix с поддержкой TimescaleDB сжатие не будет включено по умолчанию.

Compress records older than (Сжимать записи старше, чем) — этот параметр не может быть меньше 7 дней. Из-за неизменности сжатых фрагментов все запоздавшие данные (например, данные, задержанные прокси), которые старше этого значения, будут отброшены.

Настройка SSL в Nginx

По умолчанию nginx для Zabbix 5.0 настроен на работу по протоколу HTTP. Настроим HTTPS. Нам понадобятся SSL сертификаты SSL сертификат можно купить, можно сделать самоподписанные сертификаты. Я же буду делать SSL сертификаты, подписанные корпоративным центром сертификации. Генерирую CSR и KEY для SSL сертификатов с помощью подсистемы Linux.

Windows 10 — генерация CSR и KEY для SSL сертификатов с помощью подсистемы Linux

Подписываем CSR в корпоративном центре сертификации. Получаем приватный сертификат в Base 64.

В процессе работы мне понадобилось сконвертировать цепочку P7B в PEM.

Windows — конвертация P7B в PEM с помощью подсистемы Linux

Создаём папку /etc/zabbix/ssl для хранения ключей, в ней размещаем файлы ключа и приватного сертификата:

mkdir /etc/zabbix/ssl
cd /etc/zabbix/ssl
touch zabbix-cert.pem
touch zabbix-key.pem

Содержимое сертификата и ключа копируем в созданные файлы zabbix-cert.pem и zabbix-key.pem.

Поскольку центр сертификации корпоративный, понадобится добавить корневые сертификаты на Zabbix сервер:

Добавление корневых сертификатов в Ubuntu 18.04

Правим конфигурационный файл:

  • server {
            listen          80;
            listen          443 ssl;
            server_name     example.com www.example.com;
    
            charset utf-8;
    
            ssl_certificate     /etc/zabbix/ssl/zabbix-cert.pem;
            ssl_certificate_key /etc/zabbix/ssl/zabbix-key.pem;
    
            if ($scheme != "https") {
                return 301 https://$host$request_uri;
            }
    
            root    /usr/share/zabbix;
    
            index   index.php;
    
            location = /favicon.ico {
                    log_not_found   off;
            }
    
            location / {
                    try_files       $uri $uri/ =404;
            }
    
            location /assets {
                    access_log      off;
                    expires         10d;
            }
    
            location ~ /\.ht {
                    deny            all;
            }
    
            location ~ /(api\/|conf[^\.]|include|locale|vendor) {
                    deny            all;
                    return          404;
            }
    
            location ~ [^/]\.php(/|$) {
                    fastcgi_pass    unix:/var/run/php/zabbix.sock;
                    fastcgi_split_path_info ^(.+\.php)(/.+)$;
                    fastcgi_index   index.php;
    
                    fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;
                    fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
                    fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;
    
                    include fastcgi_params;
                    fastcgi_param   QUERY_STRING    $query_string;
                    fastcgi_param   REQUEST_METHOD  $request_method;
                    fastcgi_param   CONTENT_TYPE    $content_type;
                    fastcgi_param   CONTENT_LENGTH  $content_length;
    
                    fastcgi_intercept_errors        on;
                    fastcgi_ignore_client_abort     off;
                    fastcgi_connect_timeout         60;
                    fastcgi_send_timeout            180;
                    fastcgi_read_timeout            180;
                    fastcgi_buffer_size             128k;
                    fastcgi_buffers                 4 256k;
                    fastcgi_busy_buffers_size       256k;
                    fastcgi_temp_file_write_size    256k;
            }
    }

Теперь при входе на HTTP версию сайта будет происходить редирект на HTTPS версию.

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

systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm

Zabbix сервер работает по HTTPS.

Ссылки

https://docs.timescale.com/timescaledb/latest/how-to-guides/install-timescaledb/self-hosted/ubuntu/installation-apt-ubuntu/

Теги

 

Похожие материалы

Перемещение базы данных postgresql в Ubuntu 18.04 LTS

При установке на Ubuntu zabbix-server база данных по умолчанию пишется в папку /var/lib/postgresql. Со временем база растёт и поднимается вопрос переноса её на другой раздел диска. Перенесём базу данных в /opt/postgresql.

Теги

Мониторинг SQL запросов в Oracle Database через Zabbix

Понадобилось мне как-то мониторить в заббиксе свободное место на сервере Oracle. Всё бы ничего, однако задача свелась к более тонкой. Нужно мониторить свободное место внутри определённого tablespace. Данную задачу можно решить с помощью SQL запроса. Осталось только научиться передавать результат SQL запроса в zabbix. Приступим. 

Теги