7 Einrichtung von TimescaleDB

Übersicht

Zabbix unterstützt TimescaleDB, eine auf PostgreSQL basierende Datenbanklösung, die Daten automatisch in zeitbasierte Chunks partitioniert, um bei Skalierung eine schnellere Leistung zu ermöglichen.

Derzeit wird TimescaleDB von Zabbix Proxy nicht unterstützt.

Die Anweisungen auf dieser Seite können für die folgenden Szenarien verwendet werden:

  • Erstellen einer TimescaleDB-Datenbank oder Migration von bestehenden PostgreSQL-Tabellen zu TimescaleDB (siehe Konfiguration).
  • Aktualisierung eines bestehenden TimescaleDB-Datenbankschemas beim Upgrade von Zabbix (siehe Upgrade des TimescaleDB-Schemas).

Konfiguration

Voraussetzungen: TimescaleDB-Erweiterung einer unterstützten Version, installiert auf dem Datenbank-Server. Installationsanweisungen finden Sie in der TimescaleDB-Dokumentation.

Bevor Sie TimescaleDB installieren, installieren Sie eine unterstützte PostgreSQL-Version aus dem offiziellen PostgreSQL-Repository.

Aktivieren Sie die TimescaleDB-Erweiterung für die jeweilige Datenbank durch Ausführen von:

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

Zum Ausführen dieses Befehls sind Datenbankadministratorrechte erforderlich.

Wenn Sie ein anderes Datenbankschema als 'public' verwenden, müssen Sie dem obigen Befehl eine SCHEMA-Klausel hinzufügen. Z. B.:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix

Führen Sie dann das Skript postgresql/timescaledb/schema.sql aus. Bei Neuinstallationen muss das Skript ausgeführt werden, nachdem die reguläre PostgreSQL-Datenbank mit dem initialen Schema/den initialen Daten erstellt wurde (siehe Erstellung der Datenbank).

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

Bitte ignorieren Sie Warnmeldungen, die darauf hinweisen, dass die Best Practices beim Ausführen des Skripts schema.sql unter TimescaleDB Version 2.9.0 und höher nicht eingehalten werden. Ungeachtet dieser Warnung wird die Konfiguration erfolgreich abgeschlossen.

Die Migration vorhandener Verlaufs-, Trend- und Audit-Log-Daten kann viel Zeit in Anspruch nehmen. Zabbix-Server und Frontend müssen für die Dauer der Migration heruntergefahren sein.

Das Skript schema.sql setzt die folgenden Housekeeping-Parameter:

  • Überschreiben des Datenpunkt-Verlaufszeitraums
  • Überschreiben des Datenpunkt-Trendzeitraums

Um partitioniertes Housekeeping für Verlauf und Trends zu verwenden, müssen beide Optionen aktiviert sein. Es ist auch möglich, die Überschreibung einzeln zu aktivieren, entweder nur für den Verlauf oder nur für Trends.

Für PostgreSQL und TimescaleDB setzt das Skript postgresql/timescaledb/schema.sql zwei zusätzliche Parameter:

  • Komprimierung aktivieren
  • Datensätze komprimieren, die älter als 7 Tage sind

Um komprimierte Daten erfolgreich durch den Housekeeper zu entfernen, müssen sowohl die Optionen Verlaufsspeicherzeitraum für Datenpunkte überschreiben als auch Trend-Speicherzeitraum für Datenpunkte überschreiben aktiviert sein. Wenn die Überschreibung deaktiviert ist und Tabellen komprimierte Chunks enthalten, entfernt der Housekeeper keine Daten aus diesen Tabellen, und in den Abschnitten Housekeeping und System information werden Warnungen über eine fehlerhafte Konfiguration angezeigt.

Alle diese Parameter können nach der Installation unter Administration > Housekeeping geändert werden.

Möglicherweise möchten Sie das von TimescaleDB bereitgestellte Tool timescaledb-tune ausführen, um die PostgreSQL-Konfigurationsparameter in Ihrer postgresql.conf zu optimieren.

Upgrade des TimescaleDB-Schemas

Beim Upgrade von Zabbix auf eine Version, die neue TimescaleDB-Hypertabellen enthält, konfiguriert der Zabbix Server diese Hypertabellen nicht automatisch (zum Beispiel beim Upgrade von Zabbix 6.4 auf 8.0, da in den Versionen 7.0.0 und 7.0.2 neue Hypertabellen eingeführt wurden).

Gehen Sie wie folgt vor, um neue TimescaleDB-Hypertabellen zu konfigurieren:

  1. Starten Sie den Zabbix Server; dadurch wird die bestehende Datenbank aktualisiert.
  2. Prüfen Sie in der Server-Logdatei, dass das Datenbank-Upgrade abgeschlossen ist; sobald es abgeschlossen ist, stoppen Sie den Zabbix Server. Beachten Sie, dass der Server eine Warnung protokolliert, wenn er versucht, die Komprimierung für eine Tabelle zu aktivieren, die keine Hypertabelle ist.
  3. Führen Sie das Skript postgresql/timescaledb/schema.sql aus; dadurch werden die neuen TimescaleDB-Hypertabellen konfiguriert. Beachten Sie, dass sich seit Zabbix 7.0.0 Speicherort und Name des Skripts von postgresql/timescaledb.sql zu postgresql/timescaledb/schema.sql geändert haben.

Bitte ignorieren Sie Warnmeldungen, die darauf hinweisen, dass beim Ausführen des Skripts schema.sql unter TimescaleDB Version 2.9.0 und höher die Best Practices nicht eingehalten werden. Ungeachtet dieser Warnung wird die Konfiguration erfolgreich abgeschlossen.

TimescaleDB-Komprimierung

Die native TimescaleDB-Komprimierung wird für alle Zabbix-Tabellen unterstützt, die TimescaleDB-Hypertabellen sind. Während des Upgrades oder der Migration zu TimescaleDB kann die anfängliche Komprimierung großer Tabellen sehr viel Zeit in Anspruch nehmen.

Beachten Sie, dass die Komprimierung unter der Timescale-Community-Lizenz „timescale“ unterstützt wird und unter der Apache-2.0-Lizenz „apache“ nicht unterstützt wird. Wenn Zabbix erkennt, dass die Komprimierung nicht unterstützt wird, wird eine Warnmeldung in das Zabbix-Server-Log geschrieben und Benutzer können die Komprimierung nicht im Frontend aktivieren.

Benutzern wird empfohlen, sich vor der Verwendung der Komprimierung mit der Komprimierung in der TimescaleDB-Dokumentation vertraut zu machen.

Beachten Sie, dass es bestimmte durch die Komprimierung bedingte Einschränkungen gibt, insbesondere:

  • Änderungen an komprimierten Chunks (Inserts, Deletes, Updates) sind nicht zulässig
  • Schemaänderungen für komprimierte Tabellen sind nicht zulässig.

Die Komprimierungseinstellungen können im Block Komprimierung von Verlauf, Trends und Audit-Log im Abschnitt Administration > Housekeeping des Zabbix-Frontend geändert werden.

Parameter Standard Kommentare
Komprimierung aktivieren Aktiviert Das Aktivieren oder Deaktivieren des Kontrollkästchens aktiviert/deaktiviert die Komprimierung nicht sofort. Da die Komprimierung vom Housekeeper verarbeitet wird, werden die Änderungen innerhalb von bis zu 2 × HousekeepingFrequency Stunden wirksam (festgelegt in zabbix_server.conf)

Nach dem Deaktivieren der Komprimierung werden neue Chunks, die in den Komprimierungszeitraum fallen, nicht komprimiert. Bereits zuvor komprimierte Daten bleiben jedoch komprimiert. Um zuvor komprimierte Chunks zu dekomprimieren, folgen Sie den Anweisungen in der TimescaleDB-Dokumentation.

Beim Upgrade von älteren Zabbix-Versionen mit TimescaleDB-Unterstützung wird die Komprimierung standardmäßig nicht aktiviert.
Datensätze komprimieren, die älter sind als 7d Dieser Parameter darf nicht kleiner als 7 Tage sein.

Aufgrund der Unveränderlichkeit komprimierter Chunks werden alle verspätet eintreffenden Daten (z. B. durch einen Proxy verzögerte Daten), die älter als dieser Wert sind, verworfen.

:::note Für eine bessere Performance bei Trendaktualisierungen sollten Sie möglicherweise das „chunk_time_interval“ für die Tabellen trends und trends_uint von 30 Tagen auf 7 Tage oder weniger reduzieren, abhängig davon, wie viele Datenpunkte Trends verwenden. Der Zweck dieser Einstellung besteht darin, die Best Practices von TimescaleDB einzuhalten und sicherzustellen, dass die Chunk-Größe innerhalb der im System verfügbaren Ressourcen bleibt. :::