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 supported version TimescaleDB paplašinājums. Instalēšanas norādījumus skatiet TimescaleDB documentation.

Pirms TimescaleDB instalēšanas instalējiet atbalstītu PostgreSQL laidienu no official 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 datubāzes shēmu, kas nav '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 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ēšana 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:

  1. Palaidiet Zabbix serveri; tā tiks jaunināta esošā datubāze.
  2. 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.
  3. 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 no postgresql/timescaledb.sql uz postgresql/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

Vietējā TimescaleDB saspiešana tiek atbalstīta visām Zabbix tabulām, kas ir TimescaleDB hipertabulas. Jaunināšanas vai migrācijas laikā uz TimescaleDB lielo tabulu sākotnējā saspiešana var aizņemt daudz laika.

Ņemiet vērā, ka saspiešana tiek atbalstīta ar "timescale" Timescale Community licenci, un tā netiek atbalstīta 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ē.

Lietotāji tiek aicināti pirms saspiešanas izmantošanas iepazīties ar saspiešanu TimescaleDB dokumentācijā.

Ņemiet vērā, ka saspiešanai ir noteikti ierobežojumi, konkrēti:

  • Saspiestu gabalu modificēšana (ievietošana, dzēšana, atjaunināšana) nav atļauta
  • Shēmas izmaiņas saspiestām tabulām nav atļautas.

Saspiešanas iestatījumus var mainīt blokā Vēstures, tendenču un audita žurnāla saspiešana sadaļā Administrēšana > Housekeeping 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 nekavējoties. Tā kā saspiešanu apstrādā Housekeeper, izmaiņas stāsies spēkā ne vēlāk kā pēc 2 × HousekeepingFrequency stundām (iestatīts zabbix_server.conf)

Pēc saspiešanas atspējošanas jauni gabali, kas ietilpst saspiešanas periodā, netiks saspiesti. Tomēr visi iepriekš saspiestie dati paliks saspiesti. Lai atspiestu iepriekš saspiestos gabalus, sekojiet norādījumiem TimescaleDB dokumentācijā.

Jauninot no vecākām Zabbix versijām ar TimescaleDB atbalstu, saspiešana pēc noklusējuma netiks iespējota.
Compress records older than 7d Šis parametrs nevar būt mazāks par 7 dienām.

Saspiestu gabalu nemainīguma dēļ visi novēlotie dati (piemēram, starpniekservera aizkavēti dati), kas ir vecāki par šo vērtību, tiks atmesti.

:::note Lai uzlabotu tendenču atjaunināšanas veiktspēju, iespējams, vēlēsieties samazināt "chunk_time_interval" tabulām trends un trends_uint 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 gabalu izmērs nepārsniedz sistēmā pieejamos resursus. :::