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.
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:
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):
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:
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:
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 Administracja → Ogólne → Porządkowanie po zainstalowaniu.
Możesz chcieć uruchomić narzędzie timescaledb-tune dostarczone przez TimescaleDB, aby zoptymalizować parametry konfiguracji PostgreSQL w pliku postgresql.conf
.
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:
Ustawienia kompresji można zmienić w bloku Kompresja historii i trendów w sekcji Administracja → Ogólne → Porzą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. |