5 Konfiguracja TimescaleDB

Przegląd

Zabbix obsługuje TimescaleDB, rozwiązanie bazodanowe oparte na PostgreSQL, które automatycznie dzieli dane na fragmenty oparte na czasie, aby zapewnić szybszą wydajność przy skalowaniu.

Aktualnie TimescaleDB nie jest obsługiwany przez proxy Zabbix.

Instrukcje na tej stronie mogą być używane do tworzenia bazy danych TimescaleDB lub migracji z istniejących tabel PostgreSQL do TimescaleDB.

Konfiguracja

Zakładamy, że rozszerzenie TimescaleDB zostało już zainstalowane na serwerze baz danych (patrz instrukcje instalacji).

Rozszerzenie TimescaleDB musi również być włączone dla określonej bazy danych poprzez wykonanie polecenia:

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

Uruchomienie tego polecenia wymaga uprawnień administratora bazy danych.

Jeśli używasz schematu bazy danych innego niż 'public', musisz dodać klauzulę SCHEMA do powyższego polecenia. Np.:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix

Następnie uruchom skrypt postgresql/timescaledb.sq. Dla nowych instalacji skrypt musi zostać uruchomiony po utworzeniu regularnej bazy danych PostgreSQL z początkowym schematem/danymi (patrz tworzenie bazy danych):

cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix

Zignoruj ostrzeżenia informujące, że nie są przestrzegane najlepsze praktyki podczas uruchamiania skryptu timescaledb.sql w wersji TimescaleDB 2.9.0 i nowszej. Pomimo tego ostrzeżenia konfiguracja zostanie pomyślnie ukończona.

Migracja istniejących danych historii i trendów może zająć dużo czasu. Serwer Zabbix oraz frontend muszą być wyłączone na czas migracji.

Skrypt timescaledb.sql ustawia następujące parametry porządkowania:

  • Nadpisz okres historii pozycji
  • Nadpisz okres trendu pozycji

Aby używać porządkowania na podstawie partycji dla historii i trendów, obie te opcje muszą być włączone. Można również indywidualnie włączyć nadpisanie tylko dla historii lub tylko dla trendów.

Dla PostgreSQL w wersji 10.2 lub nowszej i TimescaleDB w wersji 1.5 lub nowszej, skrypt timescaledb.sql ustawia dodatkowo dwa parametry:

  • Włącz kompresję
  • Kompresuj rekordy starsze niż 7 dni

Aby pomyślnie usunąć skompresowane dane za pomocą porządkowania, obie opcje Nadpisz okres historii pozycji i Nadpisz okres trendu pozycji muszą być włączone. Jeśli nadpisanie jest wyłączone, a tabele mają skompresowane fragmenty, porządkowanie nie usunie danych z tych tabel i zostaną wyświetlone ostrzeżenia dotyczące nieprawidłowej konfiguracji na ekranie administracyjnym dla Porządkowania i sekcji Informacje o systemie.

Wszystkie te parametry można zmienić w sekcji AdministracjaOgólnePorządkowanie po zainstalowaniu.

Możesz chcieć uruchomić narzędzie timescaledb-tune dostarczone przez TimescaleDB, aby zoptymalizować parametry konfiguracji PostgreSQL w pliku postgresql.conf.

Kompresja TimescaleDB

Natywna kompresja TimescaleDB jest obsługiwana począwszy od Zabbix 5.0 dla PostgreSQL w wersji 10.2 lub nowszej i TimescaleDB w wersji 1.5 lub nowszej dla wszystkich tabel Zabbix zarządzanych przez TimescaleDB. Podczas aktualizacji lub migracji do TimescaleDB, początkowa kompresja dużych tabel może zająć dużo czasu.

Należy zauważyć, że kompresja jest obsługiwana w ramach licencji społecznościowej Timescale "timescale" i nie jest obsługiwana w ramach licencji Apache 2.0 "apache". Począwszy od Zabbix 6.0.7, Zabbix wykrywa, czy kompresja jest obsługiwana. Jeśli nie jest obsługiwana, do logu serwera Zabbix zostanie zapisane ostrzeżenie, a użytkownicy nie będą mogli włączyć kompresji w frontendzie.

Użytkownicy są zachęcani do zapoznania się z dokumentacją dotyczącą kompresji TimescaleDB przed użyciem kompresji.

Należy zauważyć, że istnieją pewne ograniczenia narzucane przez kompresję, w szczególności:

  • Modyfikacje skompresowanych fragmentów (wstawianie, usuwanie, aktualizacja) nie są dozwolone
  • Zmiany schematu dla tabel skompresowanych nie są dozwolone.

Ustawienia kompresji można zmienić w bloku Kompresja historii i trendów w sekcji AdministracjaOgólnePorządkowanie w frontendzie Zabbix.

Parametr Domyślnie Komentarze
Włącz kompresję Włączone Zaznaczenie lub odznaczenie pola wyboru nie aktywuje/dezaktywuje kompresji natychmiast. Ponieważ kompresja jest obsługiwana przez Porządkowanie, zmiany będą obowiązywać w ciągu maksymalnie 2 razy HousekeepingFrequency godzin (ustawione w zabbix_server.conf)

Po wyłączeniu kompresji nowe fragmenty, które wpadają w okres kompresji, nie będą kompresowane. Jednak wszystkie wcześniej skompresowane dane pozostaną skompresowane. Aby zdekompresować wcześniej skompresowane fragmenty, postępuj zgodnie z instrukcjami w dokumentacji TimescaleDB.

Podczas aktualizacji z wcześniejszych wersji Zabbix z obsługą TimescaleDB, kompresja nie będzie domyślnie włączona.
Kompresuj rekordy starsze niż 7d Ten parametr nie może być mniejszy niż 7 dni.

Z uwagi na niezmienność skompresowanych fragmentów wszystkie opóźnione dane (np. dane opóźnione przez proxy), które są starsze niż ta wartość, zostaną odrzucone.