[comment]: # ({7ba28cfb-98c082ce})
# 6 Konfiguracja TimescaleDB

[comment]: # ({/7ba28cfb-98c082ce})

[comment]: # ({36fb6804-acb21280})
#### Przegląd

Zabbix obsługuje TimescaleDB, rozwiązanie bazodanowe oparte na PostgreSQL, które automatycznie partycjonuje dane na fragmenty oparte na czasie, aby zapewnić wyższą wydajność przy dużej skali.

::: notewarning
Obecnie TimescaleDB nie jest obsługiwany przez Zabbix proxy.
:::

Instrukcje na tej stronie można wykorzystać w następujących scenariuszach:

-   Tworzenie bazy danych TimescaleDB lub migracja z istniejących tabel PostgreSQL do TimescaleDB (zobacz [Konfiguracja](#configuration)).
-   Aktualizacja schematu istniejącej bazy danych TimescaleDB podczas aktualizacji Zabbix (zobacz [Aktualizacja schematu TimescaleDB](#upgrading-timescaledb-schema)).

[comment]: # ({/36fb6804-acb21280})

[comment]: # ({96defbd4-f731725c})
#### Konfiguracja

**Wymagania wstępne**: Zainstalowane rozszerzenie TimescaleDB w [obsługiwanej wersji](/manual/installation/requirements#thirdparty-external-surrounding-software) na serwerze bazy danych.
Instrukcje instalacji znajdują się w [dokumentacji TimescaleDB](https://docs.tigerdata.com/self-hosted/latest/install/).

::: notewarning
Przed instalacją TimescaleDB zainstaluj obsługiwaną wersję PostgreSQL z repozytorium [oficjalnego PostgreSQL](https://www.postgresql.org/download/).
:::

Włącz rozszerzenie TimescaleDB dla określonej bazy danych, wykonując:

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

Wykonanie tego polecenia wymaga uprawnień administratora bazy danych.

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

Następnie uruchom skrypt `postgresql/timescaledb/schema.sql`.
W przypadku nowych instalacji skrypt musi zostać uruchomiony po utworzeniu standardowej bazy danych PostgreSQL z początkowym schematem/danymi (zobacz [tworzenie bazy danych](/manual/appendix/install/db_scripts)).

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

::: noteimportant
Zignoruj komunikaty ostrzegawcze informujące, że podczas uruchamiania skryptu `schema.sql` w wersji TimescaleDB 2.9.0 i nowszych nie są stosowane najlepsze praktyki.
Niezależnie od tego ostrzeżenia konfiguracja zostanie ukończona pomyślnie.
:::

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

Skrypt `schema.sql` ustawia następujące parametry housekeeping:

-   Nadpisz okres przechowywania historii pozycja
-   Nadpisz okres trendów pozycja

Aby używać partycjonowanego housekeeping dla historii i trendów, obie te opcje muszą być włączone.
Możliwe jest również włączenie nadpisywania osobno tylko dla historii albo tylko dla trendów.

Skrypt `postgresql/timescaledb/schema.sql` ustawia dwa dodatkowe parametry:

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

[comment]: # ({/96defbd4-f731725c})

[comment]: # ({5c6ac2c3-60e46db2})
Aby housekeeper mógł pomyślnie usuwać skompresowane dane, muszą być włączone obie opcje: *Override item history period* oraz *Override item trend period*.
Jeśli nadpisywanie jest wyłączone, a tabele zawierają skompresowane fragmenty, housekeeper nie będzie usuwał danych z tych tabel, a ostrzeżenia o nieprawidłowej konfiguracji będą wyświetlane w sekcjach [*Housekeeping*](/manual/web_interface/frontend_sections/administration/housekeeping) oraz [*System information*](/manual/web_interface/frontend_sections/reports/status_of_zabbix).

[comment]: # ({/5c6ac2c3-60e46db2})

[comment]: # ({56721869-8c3a80a9})
Wszystkie te parametry można zmienić w *Administracja* > [*Housekeeping*](/manual/web_interface/frontend_sections/administration/housekeeping) po instalacji.

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

[comment]: # ({/56721869-8c3a80a9})

[comment]: # ({bfdcad2b-60c5c806})
##### Aktualizacja schematu TimescaleDB

Podczas aktualizacji Zabbixa do wersji zawierającej nowe hypertables TimescaleDB, serwer Zabbix nie konfiguruje ich automatycznie (na przykład podczas aktualizacji z Zabbix 6.4 do 7.0.3, ponieważ wersje 7.0.0 i 7.0.2 wprowadziły nowe hypertables).

Aby skonfigurować nowe hypertables TimescaleDB, wykonaj następujące kroki:

1. Uruchom serwer Zabbix; spowoduje to aktualizację istniejącej bazy danych.
2. Sprawdź w pliku dziennika serwera, czy aktualizacja bazy danych została zakończona; po zakończeniu zatrzymaj serwer Zabbix.
   Zwróć uwagę, że serwer zapisuje ostrzeżenie, jeśli próbuje włączyć kompresję dla tabeli, która nie jest hypertable.
3. Uruchom skrypt `postgresql/timescaledb/schema.sql`; skonfiguruje on nowe hypertables TimescaleDB.
   Zwróć uwagę, że od Zabbix 7.0.0 lokalizacja i nazwa skryptu zmieniły się z `postgresql/timescaledb.sql` na `postgresql/timescaledb/schema.sql`.

::: noteimportant
Zignoruj komunikaty ostrzegawcze informujące, że podczas uruchamiania skryptu `schema.sql` w wersji TimescaleDB 2.9.0 i nowszych nie są przestrzegane najlepsze praktyki.
Niezależnie od tego ostrzeżenia konfiguracja zostanie pomyślnie zakończona.
:::

[comment]: # ({/bfdcad2b-60c5c806})

[comment]: # ({dc9d91b5-2012f0a6})
#### Kompresja TimescaleDB

Natywna kompresja TimescaleDB jest obsługiwana dla wszystkich tabel Zabbix, które są hypertabelami TimescaleDB.
Podczas aktualizacji lub migracji do TimescaleDB początkowa kompresja dużych tabel może zająć dużo czasu.

Należy pamiętać, ż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".
Jeśli Zabbix wykryje, że kompresja nie jest obsługiwana, do logu serwera Zabbix zostanie zapisany komunikat ostrzegawczy, a użytkownicy nie będą mogli włączyć kompresji w frontend.

::: notetip
Zaleca się zapoznanie z kompresją w [dokumentacji TimescaleDB](https://docs.tigerdata.com/use-timescale/latest/compression/) przed jej użyciem.
:::

Należy pamiętać, że kompresja nakłada pewne ograniczenia, w szczególności:

-   Modyfikacje skompresowanych chunków (wstawianie, usuwanie, aktualizacje) nie są dozwolone
-   Zmiany schematu dla skompresowanych tabel nie są dozwolone.

Ustawienia kompresji można zmienić w bloku *Kompresja historii, trendów i dziennika audytu* w sekcji *Administracja* > *Housekeeping* frontend Zabbix.

|Parameter|Default|Comments|
|--|--|------|
|*Enable compression*|Enabled|Zaznaczenie lub odznaczenie pola wyboru nie aktywuje/dezaktywuje kompresji natychmiast. Ponieważ kompresją zarządza Housekeeper, zmiany zaczną obowiązywać w ciągu maksymalnie 2 razy `HousekeepingFrequency` godzin (ustawione w [zabbix\_server.conf](/manual/appendix/config/zabbix_server))<br><br>Po wyłączeniu kompresji nowe chunki, które trafią do okresu kompresji, nie będą kompresowane. Jednak wszystkie wcześniej skompresowane dane pozostaną skompresowane. Aby zdekompresować wcześniej skompresowane chunki, postępuj zgodnie z instrukcjami w [dokumentacji TimescaleDB](https://docs.tigerdata.com/use-timescale/latest/compression/).<br><br>Podczas aktualizacji ze starszych wersji Zabbix z obsługą TimescaleDB kompresja nie będzie domyślnie włączona.|
|*Compress records older than*|7d|Ten parametr nie może być mniejszy niż 7 dni.<br><br>Ze względu na niezmienność skompresowanych chunków wszystkie późne dane (np. dane opóźnione przez proxy), które są starsze niż ta wartość, zostaną odrzucone.|

:::note
Aby uzyskać lepszą wydajność aktualizacji trendów, warto zmniejszyć wartość "chunk_time_interval" dla tabel `trends` i `trends_uint` z 30 dni do 7 dni lub mniej, w zależności od liczby pozycji korzystających z trendów.
Celem tego ustawienia jest dostosowanie się do najlepszych praktyk TimescaleDB oraz zapewnienie, że rozmiar chunków pozostaje w granicach dostępnych zasobów systemowych.
:::

[comment]: # ({/dc9d91b5-2012f0a6})
