7 TimescaleDB iestatīšana
Pārskats
Zabbix atbalsta TimescaleDB — uz PostgreSQL balstītu datubāzes risinājumu, kas automātiski sadala datus laika intervālos balstītos gabalos, lai nodrošinātu ātrāku veiktspēju lielā mērogā.
Pašlaik TimescaleDB netiek atbalstīts Zabbix starpniekserverī.
Šajā lapā sniegtās instrukcijas var izmantot šādos scenārijos:
- TimescaleDB datubāzes izveidei vai migrēšanai no esošajām PostgreSQL tabulām uz TimescaleDB (skatiet Konfigurācija).
- Esošās TimescaleDB datubāzes shēmas jaunināšanai, ja tiek jaunināts Zabbix (skatiet TimescaleDB shēmas jaunināšana).
Konfigurācija
Priekšnosacījumi: datubāzes serverī ir instalēts atbalstītas versijas TimescaleDB paplašinājums supported version. Instalēšanas norādījumus skatiet TimescaleDB dokumentācijā.
Pirms TimescaleDB instalēšanas instalējiet atbalstītu PostgreSQL laidienu no oficiālās PostgreSQL repozitorija.
Iespējojiet TimescaleDB paplašinājumu konkrētajai datubāzei, izpildot:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
Šīs komandas izpildei ir nepieciešamas datubāzes administratora privilēģijas.
Ja izmantojat citu datubāzes shēmu, nevis 'public', iepriekš norādītajai komandai jāpievieno SCHEMA klauzula.
Piemēram:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix
Pēc tam palaidiet skriptu postgresql/timescaledb/schema.sql.
Jaunām instalācijām skripts ir jāpalaiž pēc tam, kad parastā PostgreSQL datubāze ir izveidota ar sākotnējo shēmu/datiem (skatiet database creation).
cat /usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix
Lūdzu, ignorējiet brīdinājuma ziņojumus, kas informē, ka, palaižot schema.sql skriptu ar TimescaleDB versiju 2.9.0 un jaunāku, netiek ievērota labākā prakse.
Neskatoties uz šo brīdinājumu, konfigurēšana tiks veiksmīgi pabeigta.
Esošo vēstures, tendenču un audita žurnāla datu migrācija var aizņemt daudz laika. Migrācijas laikā Zabbix serverim un lietotāja saskarnei jābūt apturētiem.
Skripts schema.sql iestata šādus housekeepinga parametrus:
- Pārrakstīt vienuma vēstures periodu
- Pārrakstīt vienuma tendenču periodu
Lai izmantotu sadalītu housekeeping vēsturei un tendencēm, abām šīm opcijām jābūt iespējotām. Ir iespējams arī iespējot pārrakstīšanu atsevišķi — tikai vēsturei vai tikai tendencēm.
PostgreSQL un TimescaleDB gadījumā skripts postgresql/timescaledb/schema.sql iestata vēl divus papildu parametrus:
- Iespējot saspiešanu
- Saspiest ierakstus, kas ir vecāki par 7 dienām
Lai housekeeper veiksmīgi noņemtu saspiestos datus, jābūt iespējotām abām opcijām — Override item history period un Override item trend period. Ja pārrakstīšana ir atspējota un tabulās ir saspiesti gabali, housekeeper nenoņems datus no šīm tabulām, un sadaļās Housekeeping un System information tiks parādīti brīdinājumi par nepareizu konfigurāciju.
Visus šos parametrus pēc instalēšanas var mainīt sadaļā Administrēšana > Housekeeping.
Iespējams, vēlēsieties palaist TimescaleDB nodrošināto rīku timescaledb-tune, lai optimizētu PostgreSQL konfigurācijas parametrus savā postgresql.conf.
TimescaleDB shēmas jaunināšana
Jauninot Zabbix uz versiju, kurā ir iekļautas jaunas TimescaleDB hipertabulas, Zabbix serveris šīs hipertabulas automātiski nekonfigurē (piemēram, jauninot no Zabbix 6.4 uz 8.0, jo versijās 7.0.0 un 7.0.2 ir ieviestas jaunas hipertabulas).
Lai konfigurētu jaunās TimescaleDB hipertabulas, izpildiet šādas darbības:
- Palaidiet Zabbix serveri; tā tiks jaunināta esošā datubāze.
- Pārbaudiet servera žurnālfailā, vai datubāzes jaunināšana ir pabeigta; kad tā ir pabeigta, apturiet Zabbix serveri. Ņemiet vērā, ka serveris reģistrē brīdinājumu, ja tas mēģina iespējot saspiešanu tabulai, kas nav hipertabula.
- Palaidiet skriptu
postgresql/timescaledb/schema.sql; tas konfigurē jaunās TimescaleDB hipertabulas. Ņemiet vērā, ka kopš Zabbix 7.0.0 skripta atrašanās vieta un nosaukums ir mainīti nopostgresql/timescaledb.sqluzpostgresql/timescaledb/schema.sql.
Lūdzu, ignorējiet brīdinājuma ziņojumus, kas informē, ka, palaižot schema.sql skriptu TimescaleDB versijā 2.9.0 un jaunākās versijās, netiek ievērota labākā prakse.
Neatkarīgi no šī brīdinājuma konfigurēšana tiks veiksmīgi pabeigta.
TimescaleDB saspiešana
TimescaleDB iebūvētā saspiešana tiek atbalstīta visām Zabbix tabulām, kas ir TimescaleDB hypertables. Jaunināšanas vai migrācijas uz TimescaleDB laikā lielo tabulu sākotnējā saspiešana var aizņemt daudz laika.
Ņemiet vērā, ka saspiešana tiek atbalstīta saskaņā ar "timescale" Timescale Community licenci un netiek atbalstīta saskaņā ar "apache" Apache 2.0 licenci. Ja Zabbix konstatē, ka saspiešana netiek atbalstīta, Zabbix servera žurnālā tiek ierakstīts brīdinājuma ziņojums, un lietotāji nevar iespējot saspiešanu lietotāja saskarnē.
Pirms saspiešanas izmantošanas lietotājiem ieteicams iepazīties ar saspiešanu TimescaleDB dokumentācijā.
Ņemiet vērā, ka saspiešanai ir noteikti ierobežojumi, proti:
- Saspiesto chunk modifikācijas (ievietošana, dzēšana, atjaunināšana) nav atļautas
- Saspiestām tabulām shēmas izmaiņas nav atļautas.
Saspiešanas iestatījumus var mainīt blokā Vēstures, tendenču un audita žurnāla saspiešana sadaļā Administrēšana > Apkope Zabbix lietotāja saskarnē.
| Parameter | Default | Comments |
|---|---|---|
| Enable compression | Enabled | Atzīmējot vai noņemot atzīmi izvēles rūtiņā, saspiešana netiek aktivizēta/deaktivizēta uzreiz. Tā kā saspiešanu apstrādā Housekeeper, izmaiņas stāsies spēkā līdz pat 2 reizēm HousekeepingFrequency stundu laikā (iestatīts zabbix_server.conf)Pēc saspiešanas atspējošanas jauni chunk, kas nonāk saspiešanas periodā, netiks saspiesti. Tomēr visi iepriekš saspiestie dati paliks saspiesti. Lai atspiestu iepriekš saspiestus chunk, sekojiet norādījumiem TimescaleDB dokumentācijā. Jauninot no vecākām Zabbix versijām ar TimescaleDB atbalstu, saspiešana pēc noklusējuma nebūs iespējota. |
| Compress records older than | 7d | Šis parametrs nevar būt mazāks par 7 dienām. Ņemot vērā saspiesto chunk nemainīgumu, visi novēlotie dati (piemēram, dati, ko aizkavējis starpniekserveris), kas ir vecāki par šo vērtību, tiks noraidīti. |
:::note
Lai uzlabotu tendenču atjaunināšanas veiktspēju, iespējams, vēlēsieties samazināt trends un trends_uint tabulu "chunk_time_interval" no 30 dienām līdz 7 dienām vai mazāk, atkarībā no tā, cik daudz vienumu izmanto tendences.
Šī iestatījuma mērķis ir ievērot TimescaleDB labāko praksi un nodrošināt, ka chunk lielums paliek sistēmas pieejamo resursu robežās.
:::