Skip to content

Инструкция по установке Glaber 3.5 на AstraLinux 1.7.x

Общая информация

Установка Glaber на Debian10 и AstraLinux не отличается, используются одни и те же пакеты из линейки Debian Buster (Debian 10).

В зависимости от версии AstraLinux, есть различные варианты установки фронтенда.

В AstraLinux 1.7.3 поставляется php версии 7.3, для работы Glaber необходимо использовать версию 7.4 или выше.

В качестве решения можно использовать php версии 8.1, от версии AstraLinux 1.7.5

Подготовка (для чистой астры)

Если устанавливаем не с диска:

Раскомментируем официальные репозитории астры, в /etc/apt/sources.list, добавляем репозиторий для вашей версии astra и обновляем списки, например от 1.7.6:

deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-base/ 1.7_x86-64 main contrib non-free
Желательно добавить в начало файла.

image

Не забываем сконфигурировать локали, если этого не делали

sudo dpkg-reconfigure locales
Пробелом отметить:

en_US.UTF-8

en_US ISO-8859-1

en_US.ISO-8859-15

ru_RU.UTF-8

ru_RU.ISO-8859-5

image

По умолчанию выбрать ru_RU.UTF-8

image

Устанавливаем правильный часовой пояс

timedatectl set-timezone Asia/Yekaterinburg
Вместо Asia/Yekaterinburg ваш часовой пояс, например Europe/Moscow.

В файле /etc/systemd/timesyncd.conf прописываем

NTP=192.168.1.1
(Строку раскомментировать)

image

Установка пакетов

Устанавливаем необходимые утилиты и библиотеки:

apt install libopenipmi0 fping libssh-4 fontconfig-config fonts-dejavu fonts-dejavu-core fonts-dejavu-extra libfontconfig1 libgd3 libjbig0 libjpeg62-turbo libjpeg62-turbo-dev libodbc1 libonig5 libpq5 libsensors-config libsensors5 libtiff5 libwebp6 libxpm4

Работа с snmp v3, поддержка сильного шифрования

В Astra Linux включена поддержка протоколов сильного шифрования в SNMP. Поэтому в версии для Astra, Glaber собирается с версией 5.9 net-snmp с включенным сильным шифрованием.

Даже если в конфигурации не используется протокол SNMP версии 3, для корректной работы программы, требуется правильная версия библиотеки, можно скачать и установить готовые бинарные пакеты или собрать поддержку самостоятельно:

Удалить установленные пакеты net-snmp

По умолчанию в системе могут быть установлены пакеты от net-snmp версии 5.7, в которой шифрование работать не будет. Их нужно удалить.

Получите имена пакетов командой

apt list --installed | grep snmp
После чего удалите пакеты, относящиеся к net-snmp, в том числе snmp, libsnmp30 и прочие командой:
apt remove libsnmp30 libsnmp-perl snmp snmpd libsnmp40 libsnmp-base

Скачиваем готовые версии

Для поддержки snmpv3 нужно скачать готовые пакеты net-snmp 5.9, собранные с поддержкой сильного шифрования для AstraLinux. Необходимо скачать и вручную установить пакеты net-snmp https://glaber.io/repo/common/astra/pool/main/n/net-snmp/ в каталоге находятся три основных пакета которые нужно установить поочередно, согласно их именованию:

wget https://glaber.io/repo/common/astra/pool/main/n/net-snmp/s1_libsnmp-base_5.9%2Bastra173.deb
wget https://glaber.io/repo/common/astra/pool/main/n/net-snmp/s2_libsnmp40_5.9%2Bastra173.deb
wget https://glaber.io/repo/common/astra/pool/main/n/net-snmp/s3_snmp_5.9%2Bastra173.deb
dpkg -i s1_libsnmp-base_5.9+astra173.deb
dpkg -i s2_libsnmp40_5.9+astra173.deb 
dpkg -i s3_snmp_5.9+astra173.deb
Только эти пакеты нужны для нормальной работы Glaber и установки его из пакетов. Остальные пакеты из стандартной поставки net-snmp находятся в подкаталоге extra.

Для приема snmp трапов рекомендуем использовать worker glb_snmp_worker вместо траппера и службы snmptrapd. Поэтому устанавливать демон траппера необходимости нет.

Для самостоятельной сборки Glaber в системе Astra потребуется установить dev пакет libsnmp-dev_5.9+dfsg-4+deb11u1_amd64 из каталога extra.

Также рекомендуется установить пакет snmp-mibs-downloader, содержащий в себе библиотеку mib файлов.

Пакет не входит в дистрибутив Astra Linux, но может быть использован от Debian 10 версии. Glaber будет работать без этого пакета, но не сможет транслировать текстовые описания MIB в числовые, если таковые используются.

apt install snmp-mibs-downloader

Установка приложения - сервера

При наличии доступа в интернет пакеты устанавливать можно из репозитариев напрямую через пакетные менеджеры.\ Получаем ключ и подключаем репозиторий

wget --quiet -O - https://glaber.io/repo/key/repo.gpg | apt-key add - 
echo "deb https://glaber.io/repo/3.5/deb/astra-1.7 1.7.6 main" > /etc/apt/sources.list.d/glaber.list
Устанавливаем
apt update
apt install glaber-server-pgsql

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

dpkg -i glaber-server-pgsql_x.у.z-...-astra-1.7_amd64.deb
версия x.y.z меняется

Настройка и инициализация базы данных postgres

Имеющаяся в дистрибутиве AstraLinux 11-я версия будет нормально работать с Glaber.

apt install postgresql

стартуем сервер БД, добавляем в автозагрузку:

systemctl start postgresql
systemctl enable postgresql

Создаем пользователя БД, инициализируем БД начальными данными, БД будет называться glaber, имя пользователя для БД используем glaber:

sudo -u postgres createuser --pwprompt glaber
вводим пароль (например glaber), запоминаем, создаем базу glaber, владельцем которой будет пользователь glaber

sudo -u postgres createdb -O glaber glaber
SQL – бекап начальной базы для инициализации был установлен вместе с сервером и находится в каталоге /usr/share/doc/glaber-server-pgsql/create.sql.gz.

Инициализируем базу:

zcat /usr/share/doc/glaber-server-pgsql/create.sql.gz | sudo -u glaber psql glaber

Настройка сервера

Прописываем пользователя и пароль к БД в файле /etc/glaber/glaber_server.conf (пользователь glaber, пароль тот, который был задан)

image

Устанавливаем в конфигурации флаг совместимости со старыми версиями БД:

AllowUnsupportedDBVersions=1
image

Запуск сервера glaber:

systemctl start glaber-server
Убеждаемся, что сервер запустился и работает (наличие процессов glaber_server, отсутствие ошибок в /var/log/glaber/glaber_server.log)

Установка и настройка фронтенда

Важно установить пакеты php и расширений php версии 7.4 или более новые. В репозитории deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-base/ находятся пакеты php8.1, для примера поставим их.

apt install php8.1
Дополнительно ставим расширения:
apt install php8.1-pgsql php8.1-gd php8.1-fpm php8.1-mbstring php8.1-bcmath php8.1-cli php8.1-common php8.1-ldap php8.1-mysql php8.1-opcache php8.1-readline php8.1-xml php-bcmath php-json

Настраиваем PHP

В файле /etc/php/8.1/fpm/php.ini ставим значения:

memory_limit = 512M
post_max_size = 64M
max_execution_time = 300
upload_max_filesize = 32M
max_input_time = 300
Прописываем часовой пояс. Вместо Asia/Yekaterinburg вписываем ваш часовой пояс который устанавливали вначале.
date.timezone = Asia/Yekaterinburg
Раскомментировать строчки с расширениями gd и pgsql

image

Ставим фронтенд glaber

apt install glaber-frontend-php
Либо по аналогии с сервером
dpkg -i glaber-frontend-php_x.у.z-...-astra-1.7_amd64.deb

Установка nginx:

apt install nginx nginx-common nginx-core libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream

Если установлен apache2 то nginx будет с ним конфликтовать, его стоит либо удалить либо перенести на другой порт, пока что остановим его процесс и удалим из автозагрузки.

sudo apachectl stop
systemctl disable apache2
Запускаем nginx и добавляем в автозагрузку
systemctl start nginx
systemctl enable nginx
Скачиваем и устанавливаем конфигурацию glaber для nginx
apt install glaber-nginx-conf
Либо
dpkg -i glaber-nginx-conf_x.у.z-...-astra-1.7_amd64.deb

В репозитории, также, есть конфигурация для apache glaber-apache-conf, но данное руководство не покрывает его настройку, и рекомендуется использовать nginx.

Настраиваем фронтенд

В файле конфигурации /etc/nginx/nginx.conf в блоке http вписываем

client_max_body_size 32M;
image

Настройка сайта

В блоке server раскомментируем порт и вписываем адрес сервера

listen 80;
server_name glaber.yourcompany.loc glaber;
image

Прописываем сокет и скрипт файл

fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param   SCRIPT_FILENAME /usr/share/glaber$fastcgi_script_name;
image

Удаляем ссылку на дефолтный сайт, чтобы вместо заглушки Nginx у нас загружалась страничка Glaber

unlink /etc/nginx/sites-enabled/default
Копируем пример конфигурации фронтенда, позже он будет заменен на автоматически сгенерированный
cp /usr/share/glaber/conf/glaber.conf.php.example /etc/glaber/web/glaber.conf.php
Редактируем файл конфигурации /etc/glaber/web/glaber.conf.php указываем тип базы POSTGRESQL, имя пользователя glaber, пароль, который был задан при создании пользователя glaber.

image

Копируем шрифт для графиков в каталог с фронтендом, так как по умолчанию устанавливается симлинк.

rm /usr/share/glaber/assets/fonts/graphfont.ttf
cp /etc/alternatives/glaber-frontend-font /usr/share/glaber/assets/fonts/graphfont.ttf
Перезапускаем nginx и php
systemctl restart nginx
systemctl restart php8.1-fpm
Проверяем веб интерфейс (localhost) должна открываться страница: image

Логин Admin

Пароль zabbix

Видим что веб интерфейсе нет ошибок

image

Установка ClickHouse:

Скачиваем публичный ключ и прописываем репозиторий

apt-key adv --keyserver keyserver.ubuntu.com --recv 3E4AD4719DDE9A38

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 (например glaber), запоминаем.

Добавляем в автозагрузку и стартуем

systemctl enable clickhouse-server
clickhouse start
Создаем базу данных и таблицы
touch history.sql
В содержимое history.sql вставить следующее
CREATE DATABASE glaber;
CREATE TABLE glaber.history_dbl (   day Date, 
                                itemid UInt64, 
                                clock DateTime, 
                                hostname String,
                                itemname String,
                                ns UInt32,
                                value Float64
                            ) ENGINE = MergeTree()
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + INTERVAL 6 MONTH;

--                           
CREATE TABLE glaber.history_uint (   day Date, 
                                itemid UInt64, 
                                clock DateTime, 
                                hostname String,
                                itemname String,
                                ns UInt32,
                                value UInt64 
                            ) ENGINE = MergeTree()
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + INTERVAL 6 MONTH;

CREATE TABLE glaber.history_str (   day Date, 
                                itemid UInt64, 
                                clock DateTime, 
                                hostname String,
                                itemname String,
                                ns UInt32,
                                value String 
                            ) ENGINE = MergeTree()
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + INTERVAL 6 MONTH;

--
CREATE TABLE glaber.history_log (   day Date, 
                                itemid UInt64, 
                                clock DateTime, 
                                logeventid UInt64,
                                source  String,
                                severity Int16,
                                hostname String,
                                itemname String,
                                ns UInt32,
                                value String
                            ) ENGINE = MergeTree()
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + INTERVAL 6 MONTH;

--
CREATE TABLE glaber.trends_dbl
(
    day Date,
    itemid UInt64,
    clock DateTime,
    value_min Float64,
    value_max Float64,
    value_avg Float64,
    count UInt32,
    hostname String,
    itemname String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + toIntervalMonth(24)
SETTINGS index_granularity = 8192;

--
CREATE TABLE glaber.trends_uint
(
    day Date,
    itemid UInt64,
    clock DateTime,
    value_min UInt64, 
    value_max UInt64,
    value_avg UInt64,
    count UInt32,
    hostname String,
    itemname String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(day)
ORDER BY (itemid, clock)
TTL day + toIntervalMonth(24)
SETTINGS index_granularity = 8192;
Запускаем клиент
clickhouse-client --password --multiquery < history.sql

Тюнинг Clickhouse

Создаём дополнительные файлы настройки с отключением лишних штук.

Задаём ограничение времени хранения логов. В /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>
Отключаем thread log. В /etc/clickhouse-server/config.d/disable_query_thread_log.xml пишем:
<yandex>
    <query_thread_log remove="1"/>
</yandex>
Отключаем встроенные метрики Clickhouse если хотим мониторить его параметры внешним мониторингом. В /etc/clickhouse-server/config.d/disable_metric_logs.xml пишем:
<yandex>
  <metric_log remove="1" />
  <asynchronous_metric_log remove="1" />
</yandex>
Отключаем part_log. В /etc/clickhouse-server/config.d/part_log.xml пишем:
<yandex>
    <part_log remove="1" />
</yandex>
Включаем log queries (в новых версиях Clickhouse включен по-умолчанию). В /etc/clickhouse-server/users.d/log_queries.xml пишем:
<yandex>
  <profiles>
    <default>
      <log_queries>1</log_queries>
    </default>
  </profiles>
</yandex>
Запись данных на диск сразу в отсортированном виде. В /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>

Настройка glaber для clickhouse

В конфигурации /etc/glaber/glaber_server.conf

Сначала меняем стандартные настройки

Большинство настроек уже прописано по умолчанию, далее приведены описания настроек и стандартные значения

Нужно увеличить кеш для конфигурации, ориентир - 1,5G на каждые 1млн items, минимум 256Мб.

CacheSize=256M
dbsyncer в Glaber переваривает 20-30kNVPS, так что на большинстве систем достаточно одного. Если вычисляется много триггеров, то следует увеличить. В среднем хватает одного синкера на 100тыс триггеров и 2млн метрик.
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
Если требуется вернуть fping:
DefaultICMPMethod=fping
Больше одного запускать нет смысла, один поллер может отослать примерно 100-150тысяч пакетов в секунду.
StartGlbPingers=1

Пингер glbmap не поддерживает Vlan и маршрутизацию локального компьютера. Нужно или ставить перед ним какой-то роутер, который будет этим заниматься, или жёстко прописать работу через один Vlan, указав номер интерфейса и мак маршрутизатора. Или использовать по старинке fping

GlbmapOptions=-i ens160 -G 00:50:56:9e:7c:9e
Также для работы icmp через glbmap требуется указать, где находится утилита glbmap:
GlbmapLocation=/usr/sbin/glbmap

Асинхронный поллер агентов.

Один поллер держит 6-7kNVPS

StartGlbAgentPollers=1

Отдельный траппер для UI и API

APITrappers используются для ответа на API запросы, опция позволяет разделить мониторинговую и пользовательскую нагрузку на трапперы

StartAPITrappers=2

Менеджер препроцессов

Каждый препроцессор способен обработать до 40-50 тысяч метрик в секунду.

Количество препроцессоров задается опцией

StartGlbPreprocessors=8

Настройка дополнительных путей и коннектов в БД

С версии 2.9.0 вернулась встроенная поддержка clickhouse, поэтому предпочтительнее использовать её вместо glb_hist_clickhouse

HistoryModule=clickhouse;{"url":"http://127.0.0.1:8123", "username":"default", "password":"glaber", "dbname":"glaber", "disable_reads":100, "timeout":10 }
Путь к папке с скриптами workers
WorkerScripts=/usr/lib/glaber/workerscripts/

Настройка ValueCache

Glaber периодически дампит кэш метрик, чтобы быстрее запускаться и работать. Просмотр кеша иногда полезен при диагностике проблем.\ Указываем путь

ValueCacheDumpLocation=/tmp/vcdump
Частота дампинга.

Значения 300 хватит для большинства инсталляций

ValueCacheDumpFrequency = 300
Нужно создать эту директорию и раздать права на неё
mkdir /tmp/vcdump/
chmod 777 /tmp/vcdump/
chown -R glaber:glaber /tmp/vcdump/
Пингеру Glaber нужны дополнительные права на запуск
mkdir /usr/sbin/glbmap
chmod +s /usr/sbin/glbmap
Завершаем настройку прописав пароль от clickhouse-client который выбрали для пользователя default при установке
nano /etc/clickhouse-server/users.xml
<password>ваш пароль</password>

image

Установка агента

Скачиваем и устанавливаем пакет

apt install glaber-agent
Или
dpkg -i glaber-agent_x.y.z-...-astra-1.7_amd64.deb

Завершение настройки

Удаляем файл конфигурации

rm /etc/glaber/web/glaber.conf.php
Перезапускаем все установленные сервисы
clickhouse restart
service postgresql restart
service nginx restart
service php8.1-fpm restart
service glaber-server restart
service glaber-agent restart
Удостоверяемся что все сервисы добавлены в автозапуск
systemctl enable nginx php8.1-fpm clickhouse-server postgresql glaber-server glaber-agent
Заходим в веб интерфейс и завершаем настройку

image

image

image

image

image

image

Далее вход для суперадмина по умолчанию

Логин: Admin Пароль: zabbix