6 TimescaleDB-Einrichtung

Ü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, die auf dem Datenbankserver installiert ist. 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, indem Sie Folgendes ausführen:

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

Für die Ausführung dieses Befehls sind Administratorrechte für die Datenbank erforderlich.

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

Führen Sie anschließend 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 Datenbankerstellung).

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 nicht eingehalten werden, während das Skript schema.sql auf TimescaleDB Version 2.9.0 und höher ausgeführt wird. Unabhängig von dieser Warnung wird die Konfiguration erfolgreich abgeschlossen.

Die Migration vorhandener History-, Trend- und Audit-Log-Daten kann sehr viel Zeit in Anspruch nehmen. Server und Frontend müssen während der Migration heruntergefahren sein.

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

  • History-Zeitraum für Datenpunkte überschreiben
  • Trend-Zeitraum für Datenpunkte überschreiben

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

Das Skript postgresql/timescaledb/schema.sql setzt 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.

TimescaleDB-Schema aktualisieren

Wenn Zabbix auf eine Version aktualisiert wird, die neue TimescaleDB-Hypertables enthält, konfiguriert der Zabbix-Server diese Hypertables nicht automatisch (zum Beispiel beim Upgrade von Zabbix 6.4 auf 7.0.3, da die Versionen 7.0.0 und 7.0.2 neue Hypertables eingeführt haben).

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

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

Bitte ignorieren Sie Warnmeldungen, die darauf hinweisen, dass die Best Practices nicht eingehalten werden, wenn Sie das Skript schema.sql mit TimescaleDB Version 2.9.0 und höher ausführen. Unabhängig von dieser Warnung wird die Konfiguration erfolgreich abgeschlossen.

TimescaleDB-Komprimierung

Die native TimescaleDB-Komprimierung wird für alle Zabbix-Tabellen unterstützt, die TimescaleDB-Hypertables 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"-Lizenz der Timescale Community unterstützt wird und unter der "apache"-Lizenz Apache 2.0 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 im Frontend nicht aktivieren.

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

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

  • Änderungen an komprimierten Chunks (Einfügungen, Löschungen, Aktualisierungen) sind nicht zulässig
  • Schemaänderungen für komprimierte Tabellen sind nicht zulässig.

Die Komprimierungseinstellungen können im Block Verlauf, Trends und Audit-Log-Komprimierung im Abschnitt Administration > Housekeeping des Zabbix-Frontends 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-mal HousekeepingFrequency Stunden wirksam (gesetzt in zabbix_server.conf)

Nach dem Deaktivieren der Komprimierung werden neue Chunks, die in den Komprimierungszeitraum fallen, nicht komprimiert. Bereits 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 ist 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 Leistung bei der Aktualisierung von Trends sollten Sie den Wert "chunk_time_interval" für die Tabellen trends und trends_uint je nach Anzahl der Datenpunkte, die Trends verwenden, von 30 Tagen auf 7 Tage oder weniger verringern. Der Zweck dieser Einstellung besteht darin, die Best Practices von TimescaleDB einzuhalten und sicherzustellen, dass die Chunk-Größe innerhalb der verfügbaren Systemressourcen bleibt. :::