ClickHouse iestatīšana

Zabbix var glabāt vēstures datus ClickHouse kā alternatīvu relāciju datubāzei.

Šajā rokasgrāmatā ir aprakstīta atbalstīto versiju ClickHouse iestatīšana. Ja izmantojat citu versiju, dažas funkcijas var nedarboties, kā paredzēts.

ClickHouse var glabāt šādus vērtību tipus:

Vienuma vērtības tips Datubāzes tabula ClickHouse tips
Skaitlisks (neparakstīts) history_uint uint
Skaitlisks (peldošais punkts) history dbl
Rakstzīmju history_str str
Žurnāls history_log log
Teksts history_text text
Binārs history_bin nav atbalstīts Zabbix
JSON history_json json

ClickHouse nepieņem JSON masīvus. JSON vērtībai jābūt vai nu vienam objektam, vai objektu kopai. Turklāt ClickHouse apstrādā JSON atslēgas ar NULL tāpat kā trūkstošas atslēgas.

Svarīgas piezīmes

  • housekeeper nedzēš datus no ClickHouse. Lai kontrolētu, cik ilgi dati tiek glabāti, konfigurējiet ClickHouse datu glabāšanas periodu programmā ClickHouse.
  • Zabbix neaprēķina un neglabā trendus programmā ClickHouse. Apsveriet iespēju pagarināt vēstures glabāšanas periodu, lai saglabātu vecākus datus.
  • Ja vēlaties migrēt vēstures datus no esošas Zabbix datubāzes (MySQL vai PostgreSQL) uz ClickHouse, skatiet ClickHouse shēmu un vēstures migrācijas skriptus.
  • ClickHouse netiek atbalstīts Zabbix starpniekserveriem.

ClickHouse konfigurēšana

Jums ir jāizveido un jākonfigurē Zabbix datubāze un lietotājs, kā arī jāimportē datubāzes shēma.

Šajā rokasgrāmatā ir sniegtas instrukcijas par ClickHouse Docker vai pakotņu instalācijām.

Docker

1. Izveidojiet un konfigurējiet Zabbix datubāzi un lietotāju, palaižot ClickHouse konteineru:

sudo docker run -d \
  --name clickhouse \
  -e CLICKHOUSE_DB=zabbix \
  -e CLICKHOUSE_USER=zabbix \
  -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 \
  -e CLICKHOUSE_PASSWORD=<password> \
  -p 8123:8123/tcp \
  -p 9000:9000/tcp \
  --cap-add=SYS_NICE \
  --cap-add=NET_ADMIN \
  --cap-add=IPC_LOCK \
  --ulimit nofile=262144:262144 \
  -v clickhouse_data:/var/lib/clickhouse \
  clickhouse/clickhouse-server:26.4

2. Pārliecinieties, ka ClickHouse darbojas un ka varat tam pieslēgties:

sudo docker exec -it clickhouse \
  clickhouse-client \
  --query "SELECT version()"

# 26.4.4.38

3. Importējiet datubāzes shēmu, izmantojot history_all.sh skriptu no sava Zabbix direktorija:

./usr/share/zabbix/sql-scripts/clickhouse/history_all.sh \
  --user zabbix \
  --password <password> \
  --db zabbix \
  --server http://localhost:8123

ClickHouse datu glabāšanas periods (Time-To-Live jeb TTL) pēc noklusējuma ir 31 diena. Lai to mainītu, importējot datubāzes shēmu izmantojiet opciju --ttl (piemēram, --ttl 604800 7 dienām), vai arī konfigurējiet to vēlāk.

4. Pārbaudiet, vai tabulas ir izveidotas:

sudo docker exec -it clickhouse \
  clickhouse-client \
  --user zabbix \
  --password <password> \
  --query "SHOW TABLES FROM zabbix"

# history
# history_json
# history_log
# history_str
# history_text
# history_uint

Pakotnes

1. Startējiet ClickHouse:

sudo service clickhouse-server start

2. Izveidojiet un konfigurējiet Zabbix datubāzi un lietotāju:

clickhouse-client --user default

localhost :) CREATE DATABASE IF NOT EXISTS zabbix
localhost :) CREATE USER IF NOT EXISTS zabbix IDENTIFIED WITH sha256_password BY '<password>'
localhost :) GRANT CREATE, ALTER, DROP, INSERT, SELECT, UPDATE, OPTIMIZE ON zabbix.* TO zabbix
localhost :) quit

3. Importējiet datubāzes shēmu, izmantojot history_all.sh skriptu no jūsu Zabbix direktorijas:

./usr/share/zabbix/sql-scripts/clickhouse/history_all.sh \
  --user zabbix \
  --password <password> \
  --db zabbix \
  --server http://localhost:8123

ClickHouse datu glabāšanas periods (Time-To-Live jeb TTL) pēc noklusējuma ir 31 diena. Lai to mainītu, importējot datubāzes shēmu izmantojiet opciju --ttl (piemēram, --ttl 604800 7 dienām), vai arī konfigurējiet to vēlāk.

4. Pārbaudiet, vai tabulas ir izveidotas:

clickhouse-client \
  --user zabbix \
  --password <password> \
  --query "SHOW TABLES FROM zabbix"

# history
# history_json
# history_log
# history_str
# history_text
# history_uint

Zabbix servera konfigurēšana

Savā Zabbix servera konfigurācijas failā (zabbix_server.conf) iestatiet parametru HistoryProvider.

Piemēram, lai glabātu visus atbalstītos vērtību tipus ClickHouse:

HistoryProvider=clickhouse;value_types="uint,dbl,str,log,text,json",url=http://localhost:8123,db=zabbix,username=zabbix,password=<password>

Pēc izmaiņu veikšanas restartējiet Zabbix serveri:

systemctl restart zabbix-server

Zabbix lietotāja saskarnes konfigurēšana

Savā Zabbix lietotāja saskarnes konfigurācijas failā (zabbix.conf.php) iestatiet mainīgo $HISTORY_PROVIDERS, lai tas atbilstu servera konfigurācijai:

$HISTORY_PROVIDERS[] = [
  'types' => ['uint','dbl','str','log','text','json'],
  'provider' => 'clickhouse',
  'url' => 'http://localhost:8123',
  'db' => 'zabbix',
  'username' => 'zabbix',
  'password' => '<password>'
];

Papildu konfigurācija

Tālāk norādītās darbības ir izvēles. Tās nav nepieciešamas pamata iestatīšanai.

ClickHouse datu glabāšanas perioda konfigurēšana

ClickHouse datu glabāšanas periods (Time-To-Live jeb TTL) pēc noklusējuma ir 31 diena. Lai to mainītu, izpildiet tālāk norādītās komandas.

Tālāk sniegtajos piemēros tiek izmantots Docker. Ja ClickHouse ir instalēts, izmantojot pakotnes, vaicājumus izpildiet tieši ClickHouse klientā.

1. Mainiet tabulu (aizstājiet history_json un 3600 ar nepieciešamajām vērtībām):

sudo docker exec -it clickhouse \
  clickhouse-client \
  --user zabbix \
  --password <password> \
  --query "ALTER TABLE zabbix.history_json MODIFY TTL clock_ns + toIntervalSecond(3600)"

2. Nekavējoties lietojiet izmaiņas:

sudo docker exec -it clickhouse \
  clickhouse-client \
  --user zabbix \
  --password <password> \
  --query "OPTIMIZE TABLE zabbix.history_json FINAL"

3. Pārbaudiet, vai datu glabāšanas periods ir mainījies:

sudo docker exec -it clickhouse \
  clickhouse-client \
  --user zabbix \
  --password <password> \
  --query "SHOW CREATE TABLE zabbix.history_json"

# CREATE TABLE zabbix.history_json
# (
#     `itemid` UInt64,
#     `clock_ns` DateTime64(9),
#     `value` JSON,
#     `value_str` String
# )
# ENGINE = MergeTree
# PARTITION BY toDate(clock_ns)
# PRIMARY KEY (itemid, clock_ns)
# ORDER BY (itemid, clock_ns)
# TTL clock_ns + toIntervalSecond(3600)
# SETTINGS index_granularity = 8192

4. Restartējiet Zabbix serveri, lai atsvaidzinātu datu glabāšanas periodu sadaļā Administrēšana > Housekeeping:

systemctl restart zabbix-server

Problēmu novēršana

Tālāk norādītās darbības var palīdzēt novērst problēmas ar jūsu ClickHouse konfigurāciju:

  1. Pārbaudiet ClickHouse vai Zabbix servera žurnālus, lai atrastu kļūdas.

  2. Lai identificētu lēnus vaicājumus, izmantojiet log_slow_queries opciju Zabbix servera konfigurācijas parametrā HistoryProvider.

  3. Pārliecinieties, ka ClickHouse atļauj piekļuvi no Zabbix servera un Zabbix lietotāja saskarnes.

  4. Veiciet vaicājumu ClickHouse, lai pārbaudītu, vai Zabbix savāktie dati tiek saglabāti, piemēram:

sudo docker exec -it clickhouse \
  clickhouse-client \
  --user zabbix \
  --password <password> \
  --query "SELECT * FROM zabbix.history_uint WHERE itemid = 42269"