Настройка сервера Glaber на Ubuntu 20.0
Обновление
Обновляем систему
apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get autoremove
Локализация
Устанавливаем локали
dpkg-reconfigure locales
Настройка времени
Выставляем часовой пояс
timedatectl set-timezone Europe/Moscow
vim /etc/systemd/timesyncd.conf
NTP=192.168.1.1
service systemd-timesyncd restart
timedatectl timesync-status
Настройка UFW (файервола)
Настройка UFW, если он вообще включён. Должен быть следующий набор
ufw app list
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Если чего-то нет, то
ufw allow 'Nginx HTTP'
Работает ufw, или не работает, можно проверить командой
ufw status
Особенности Glaber, файлов, настройки
Glaber это форк Zabbix с некоторыми отличиями. Для самой системы Ubuntu он как бы остаётся приложением Zabbix, используются те же команды service zabbix-server restart, используются конфигурационные файлы от Zabbix и так далее.
При установке используется родной пакет от Zabbix для импортирования параметров базы данных
В отличие от Zabbix, Glaber использует две базы данных. Одна (MySQL или PostrgeSQL) - стандартная от Zabbix, используется для хранения настроек, вторая (Clickhouse, VictoriaMetrics или InfluxDB) - используется для хранения истории как самого большого объёма данных мониторинга.
В Glaber используются собственные поллеры, их рассмотрим в настройке ниже
Установка Glaber (на примере связки PostgreSQL + Nginx + Clickhouse)
Ставим Glaber
Glaber использует имена от Zabbix, соответственно нужно подсунуть правильный репозиторий https://glaber.io/repo
Предварительно ставим зависимости (в том числе Nginx и PHP)
apt install fontconfig-config fonts-dejavu fonts-dejavu-core
fonts-dejavu-extra fping libfontconfig1 libgd3 libjbig0 libjpeg-turbo8
libjpeg8 libmysqlclient21 libnginx-mod-http-image-filter libnginx-mod
http-xslt-filter libnginx-mod-mail libnginx-mod-stream libodbc1 libonig5
libopenipmi0 libpq5 libsensors-config libsensors5 libsnmp-base libsnmp35
libtiff5 libwebp6 libxpm4 mysql-common nginx nginx-common nginx-core php
bcmath php-common php-fpm php-gd php-ldap php-mbstring php-mysql php-xml
php7.4-bcmath php7.4-cli php7.4-common php7.4-fpm php7.4-gd php7.4-json
php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-readline
php7.4-xml php-bcmath php-json
Обновляем информацию о доступных пакетах
apt update
И ставим все пакеты и PostgreSQL
apt install glaber-server-pgsql glaber-nginx-conf glaber-frontend-php
php7.4-pgsql zabbix-sql-scripts zabbix-agent postgresql
Настраиваем БД PostgreSQL
Создаём пользователя zabbix и базу zabbix, задаём желаемый пароль
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix
sudo -u postgres dropdb zabbix
Импортируем схему для БД Zabbix в PostgreSQL
zcat /usr/share/doc/zabbix-server-pgsql/create.sql.gz | sudo -u zabbix
psql zabbix
Конфигурим настройки сервера Glaber
vim /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
Настраиваем PHP
vim /etc/php/7.4/fpm/php.ini
memory_limit = 512M
post_max_size = 64M
max_execution_time = 60
upload_max_filesize = 32M
max_input_time = 60
date.timezone = Europe/Moscow
Настраиваем Nginx Основная настройка /etc/nginx/nginx.conf
vim /etc/nginx/nginx.conf
client_max_body_size 32M;
vim /etc/zabbix/nginx.conf
listen 80;
server_name glaber.yourcompany.loc glaber;
unlink /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
Устанавливаем и настраиваем Clickhouse
Ставим Clickhouse
Установка Clickhouse\ Импортируем репозиторий и ставим
apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4
echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main" | sudo
tee /etc/apt/sources.list.d/clickhouse.list
apt update
apt install clickhouse-server clickhouse-client
В процессе настройки задаём пользователя и пароль (можно оставить default, только пароль придумать)
Тюнинг Clickhouse
Создаём дополнительные файлы настройки с отключением лишних штук
Задаём ограничение времени хранения логов
vim /etc/clickhouse-server/config.d/query_log.xml
cat /etc/clickhouse-server/config.d/query_log.xml
<yandex>
<query_log replace="1">
<database>system</database>
<table>query_log</table>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
<engine>
ENGINE = MergeTree
PARTITION BY event_date
ORDER BY (event_time)
TTL event_date + interval 90 day
SETTINGS ttl_only_drop_parts=1
</engine>
</query_log>
</yandex>
vim /etc/clickhouse-server/config.d/disable_query_thread_log.xml
<yandex>
<query_thread_log remove="1"/>
</yandex>
Отключаем встроенные метрики Clickhouse если хотим мониторить его параметры внешним мониторингом
vim /etc/clickhouse-server/config.d/disable_metric_logs.xml
<yandex>
<metric_log remove="1" />
<asynchronous_metric_log remove="1" />
</yandex>
vim /etc/clickhouse-server/config.d/part_log.xml
<yandex>
<part_log remove="1" />
</yandex>
Включаем log queries (в новых версиях Clickhouse включен по-умолчанию)
vim /etc/clickhouse-server/users.d/log_queries.xml
<yandex>
<profiles>
<default>
<log_queries>1</log_queries>
</default>
</profiles>
</yandex>
vim /etc/clickhouse-server/users.d/enable_on_disk_operations.xml
<yandex>
<profiles>
<default>
<max_bytes_before_external_group_by>2000000000</max_bytes_before_external_group_by>
<max_bytes_before_external_sort>2000000000</max_bytes_before_external_sort>
</default>
</profiles>
</yandex>
Настройка Clickhouse для Glaber
Создаём таблицы из файла https://gitlab.com/mikler/glaber/-/blob/master/database/clickhouse/history.sql (при этом надо задать желаемый TTL хранения данных и синхронизировать его с аналогичным настройками в веб-интерфейсе Glaber. По-умолчанию данные хранятся 6 месяцев)
Создаём себе в любом месте файл history.sql и копируем туда содержимое с гита
Создаем БД
clickhouse-client --password --multiquery < history.sql
Конфиги Clickhouse хранятся тут (на всякий случай)
/etc/clickhouse-server/config.xml
/etc/clickhouse-server/users.xml
Настройка Glaber
Есть пример файла с комментариями со специфичными настройками
vim /etc/zabbix/zabbix_server.conf
Сначала меняем стандартные настройки
Нужно увеличить кеш для конфигурации, ориентир - 1,5G на каждые 1млн items, минимум 256Мб.
CacheSize=256M
StartDBSyncers=1
StartPollers=10
StartPollersUnreachable=1
Процесс чистки базы housekeeping очень легковесный в Glaber, можно запускать как можно чаще
HousekeepingFrequency=1
В Glaber трапперы слушают два разных порта чтобы разделить нагрузку мониторинга и UI/API, классические трапперы нужны для proxy, активных агентов и snmp traps
StartTrappers=4
Классические пингеры могут быть полезны для старых железок, у которых могут возникнуть проблемы с методом glbmap. А так же для localhost
StartPingers=2
Специфичные настройки для Glaber
Воркеры - если используются воркер-серверы (прием логов, прием данных в режиме сервера по другим протоколам), то нужно запустить хотя бы один контроллирующий сервер:
StartGlbWorkers=1
Асинхронный поллер SNMP
один поллер может снимать метрики со скоростью около 10kNVPS. Рекомендуется запускать такое количество поллеров, чтобы на каждый приходилось не более 2млн метрик. Поллер использует один порт, но много соединений, может потребоваться увеличение conntrack таблиц фаервола.
StartGlbSNMPPollers=1
Продвинутый опрос ICMP для Glaber
DefaultICMPMethod=glbmap
DefaultICMPMethod=fping
StartGlbPingers=1
ВАЖНО: Пингер glbmap не поддерживает Vlan и маршрутизацию локального компьютера. Нужно или ставить перед ним какой-то роутер, который будет этим заниматься, или жёстко прописать работу через один Vlan, указав номер интерфейса и мак маршрутизатора. Или использовать по старинке fping
GlbmapOptions=-i ens160 -G 00:50:56:9e:7c:9e
GlbmapLocation=/usr/sbin/glbmap
Пингеру Glaber нужны дополнительные права на запуск
chmod +s /usr/sbin/glbmap
Асинхронный поллер агентов.
Один поллер держит 6-7kNVPS
StartGlbAgentPollers=1
Отдельный траппер для UI и API
APITrappers используются для ответа на API запросы, опция позволяет разделить мониторинговую и пользователькую нагрузку на трапперы
StartAPITrappers=2
Менеджер препроцессов
Количество препроцессоров задается опцией "StartGlbPreprocessors=8". Каждый препроцессор способен обработать до 40-50 тысяч метрик в секунду.
Настройка дополнительных путей и коннектов в БД
С версии 2.9.0 вернулась встроенная поддержка clickhouse, поэтому предпочтительнее использовать её вместо glb_hist_clickhouse
HistoryModule=clickhouse;{"url":"http://127.0.0.1:8123",
"username":"default", "password":"123456",
"dbname":"glaber", "disable_reads":100, "timeout":10 }
Путь к папке с скриптами workers
WorkerScripts=/usr/lib/zabbix/workerscripts
Настройка ValueCache
Glaber перодически дампит кэш метрик, чтобы быстрее запускаться и работать. Просмотр кеша иногда полезен при диагностике проблем. Указываем путь
ValueCacheDumpLocation=/tmp/vcdump
Частота дампинга. Значения 300 хватит для большинства инсталляций
ValueCacheDumpFrequency = 300
Нужно создать эту директорию и раздать права на неё
mkdir /tmp/vcdump/
chmod 777 /tmp/vcdump/
chown -R zabbix:zabbix /tmp/vcdump/ (возможно не нужно)
Настройка фронтена Glaber
vim /etc/zabbix/web/zabbix.conf.php
global $HISTORY;
$HISTORY['storagetype']='server';
Запускаем все установленные сервисы
Запускаем сервисы
service clickhouse-server restart
service postgresql restart
service nginx restart
service php7.4-fpm restart
service zabbix-server restart
service zabbix-agent restart
Добавляем все сервисы в автозапуск
systemctl enable nginx php7.4-fpm clickhouse-server postgresql
zabbix-server zabbix-agent
Завершаем инсталляцию Glaber
Заходим на наш сервер по web-интерфейсу и проводим финишную настройку Логинимся, пользователь по-умолчанию:
Логин: Admin Пароль: zabbix
Дальше просто следуем инструкциям на экране