Skip to content

Clickinstall

Установка ClickHouse (debian-like):

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

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

Запускаем клиент

clickhouse-client --password --multiquery < history.sql

Тюнинг clickhouse Инструкция

Настройка 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

Обращение к истории напрямую из фронта

C версии 3.5.157 фронтенд glaber умеет обращаться в клик напрямую, минуя сервер (Эта настройка не обязательна, по умолчанию история будет получена через сервер). Чтобы использовать эту функцию нужно (После настройки через веб интерфейс) в конце файла /etc/glaber/web/zabbix.conf.php дописать:

global $HISTORY_SOURCES;
Далее варианты настройки разнятся. Если у нас только одна нода клика и мы хотим получать историю только из него, то дописываем:
$HISTORY_SOURCES = [
      'type' => 'clickhouse', \\обязательно
      'url' => 'http://127.0.0.1:8123', \\адрес ноды
      'username' => 'default', \\имя пользователя клика
      'password' => '', \\пароль
      'database' => 'glaber']; \\название БД

Если мы хотим одновременно использовать и сервер и клик (источник будет выбран случайно):

$HISTORY_SOURCES = [
    [ 'type' => 'clickhouse',
      'url' => 'http://127.0.0.1:8123',
      'username' => 'default',
      'password' => '',
      'database' => 'glaber'],
    [ 'type' => 'glaber_server' ]
];
Таким же образом можно добавить несколько нод кликхауса:
$HISTORY_SOURCES = [
     [ 'type' => 'clickhouse',
      'url' => 'http://127.0.0.1:8123',
      'username' => 'default',
      'password' => '',
      'database' => 'glaber'],
     [ 'type' => 'clickhouse',
      'url' => 'http://127.0.0.1:8124',
      'username' => 'default',
      'password' => '',
      'database' => 'glaber'],
     [ 'type' => 'clickhouse',
      'url' => 'http://127.0.0.1:8125',
      'username' => 'default',
      'password' => '',
      'database' => 'glaber']
];