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

[comment]: # ({/6b30eb7c-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]: # ({082fb7aa-f731725c})
#### Konfiguracja

**Wymagania wstępne**: Rozszerzenie TimescaleDB w [obsługiwanej wersji](/manual/installation/requirements#thirdparty-external-surrounding-software) zainstalowane 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 [oficjalnego repozytorium 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
```

Uruchomienie tego polecenia wymaga uprawnień administratora bazy danych.

::: noteclassic
Jeśli używasz schematu bazy danych innego niż 'public', musisz dodać klauzulę SCHEMA do powyższego polecenia.
Np.:<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 należy uruchomić 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 o nieprzestrzeganiu najlepszych praktyk podczas uruchamiania skryptu `schema.sql` w TimescaleDB w wersji 2.9.0 i nowszej.
Niezależnie od tego ostrzeżenia konfiguracja zostanie ukończona pomyślnie.
:::

Migracja istniejących danych historii, 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:

-   Zastąp okres przechowywania historii pozycji
-   Zastąp okres przechowywania trendów pozycji

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

Dla PostgreSQL i TimescaleDB skrypt `postgresql/timescaledb/schema.sql` ustawia dwa dodatkowe parametry:

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

[comment]: # ({/082fb7aa-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]: # ({0bea3ea4-d6ee4f10})
##### Aktualizacja schematu TimescaleDB

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

Aby skonfigurować nowe hypertabele 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 spróbuje włączyć kompresję dla tabeli, która nie jest hypertabelą.
3. Uruchom skrypt `postgresql/timescaledb/schema.sql`; skonfiguruje on nowe hypertabele 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]: # ({/0bea3ea4-d6ee4f10})

[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 Timescale Community "timescale", natomiast 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 we frontendzie.

::: notetip
Przed użyciem kompresji zaleca się użytkownikom zapoznanie się z mechanizmem kompresji w [dokumentacji TimescaleDB](https://docs.tigerdata.com/use-timescale/latest/compression/).
:::

Należy pamiętać, że istnieją pewne ograniczenia wynikające z kompresji, 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 *History, trends and audit log compression* w sekcji *Administration* > *Housekeeping* frontendu Zabbix.

|Parametr|Domyślnie|Uwagi|
|--|--|------|
|*Enable compression*|Włączone|Zaznaczenie lub odznaczenie pola wyboru nie aktywuje/dezaktywuje kompresji natychmiast. Ponieważ kompresja jest obsługiwana przez Housekeeper, zmiany zaczną obowiązywać maksymalnie po 2 × `HousekeepingFrequency` godzinach (ustawianych w [zabbix\_server.conf](/manual/appendix/config/zabbix_server))<br><br>Po wyłączeniu kompresji nowe chunki, które mieszczą się w okresie 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>W przypadku 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 opóźnione dane (np. dane opóźnione przez proxy), które są starsze niż ta wartość, zostaną odrzucone.|

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

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