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:
-
Pārbaudiet ClickHouse vai Zabbix servera žurnālus, lai atrastu kļūdas.
-
Lai identificētu lēnus vaicājumus, izmantojiet
log_slow_queriesopciju Zabbix servera konfigurācijas parametrāHistoryProvider. -
Pārliecinieties, ka ClickHouse atļauj piekļuvi no Zabbix servera un Zabbix lietotāja saskarnes.
-
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"