Zabbix ist ein Monitoring-System. Wie jedes andere System sieht es sich drei Hauptproblemen gegenĂŒber, die alle Monitoring-Systeme betreffen: Datenerfassung und -verarbeitung, Historienverwaltung und deren Bereinigung.
Die Phasen der Datenerfassung, -verarbeitung und -speicherung benötigen Zeit. Etwas, aber bei einem groĂen System kann dies zu erheblichen Verzögerungen fĂŒhren. Das Speicherproblem betrifft den Datenzugriff. Diese Daten werden fĂŒr Berichte, PrĂŒfungen und Trigger verwendet. Verzögerungen beim Datenzugriff wirken sich ebenfalls auf die Leistung aus. Wenn Datenbanken wachsen, mĂŒssen veraltete Daten gelöscht werden. Das Löschen ist ein ressourcenintensiver Vorgang.

Die Probleme bei Verzögerungen in der Datensammlung und -speicherung in Zabbix werden durch Caching gelöst: verschiedene Cache-Arten, Caching in der Datenbank. FĂŒr das dritte Problem eignet sich Caching jedoch nicht, daher wird in Zabbix TimescaleDB eingesetzt. Dazu wird unser Experten- Andrei Gushchin â technischer Support-Ingenieur . Andrei arbeitet seit ĂŒber 6 Jahren im Zabbix-Support und ist direkt mit der Leistungsoptimierung konfrontiert.
Wie funktioniert TimescaleDB und welche Leistung kann es im Vergleich zu herkömmlichem PostgreSQL bieten? Welche Rolle spielt Zabbix fĂŒr die TimescaleDB? Wie startet man von Grund auf und wie migriert man von PostgreSQL, und welche Konfiguration bietet die beste Leistung? All das erfahren Sie im Folgenden.

Leistungsherausforderungen
Jedes Ăberwachungssystem steht vor bestimmten Leistungsherausforderungen. Ich werde ĂŒber drei davon sprechen: Datenerfassung und -verarbeitung, Speicherung und die Bereinigung von Verlauf.
Schnelle Datenerfassung und -verarbeitung. Ein gutes Ăberwachungssystem muss schnell alle Daten erfassen und sie gemÀà den Trigger-AusdrĂŒcken â nach eigenen Kriterien â verarbeiten. Nach der Verarbeitung sollte das System die Daten auch zĂŒgig in der Datenbank speichern, um sie spĂ€ter nutzen zu können.
Speicherung der Historie. Ein gutes Ăberwachungssystem sollte die Historie in der Datenbank speichern und einfachen Zugriff auf die Metriken bieten. Die Historie ist erforderlich, um sie in Berichten, Grafiken, Triggern, Schwellenwerten und berechneten Datenpunkten fĂŒr Benachrichtigungen zu verwenden.
Bereinigung der Historie. Manchmal kommt der Tag, an dem Sie keine Metriken mehr speichern mĂŒssen. Wozu benötigen Sie Daten, die vor 5 Jahren gesammelt wurden, oder solche aus einem Monat oder zwei? Einige Knoten wurden entfernt, einige Hosts oder Metriken sind nicht mehr erforderlich, da sie veraltet sind und nicht mehr erfasst werden. Ein gutes Monitoringsystem sollte historische Daten speichern und diese von Zeit zu Zeit löschen, um das Datenbankwachstum zu kontrollieren.
Die Bereinigung veralteter Daten ist ein drÀngendes Thema, das die Datenbankleistung erheblich beeinflusst.
Caching in Zabbix
In Zabbix werden die erste und zweite Abfrage durch Caching gelöst. Zur Sammlung und Verarbeitung von Daten wird der Arbeitsspeicher genutzt. FĂŒr die Speicherung gibt es Historien in Triggern, Grafiken und berechneten Datenelementen. Auf der Datenbankseite gibt es ein bestimmtes Caching fĂŒr grundlegende Abfragen, wie beispielsweise Grafiken.
Caching auf der Seite des Zabbix-Servers umfasst:
- ConfigurationCache;
- ValueCache;
- HistoryCache;
- TrendsCache.
Betrachten wir sie im Detail.
ConfigurationCache
Dies ist der Hauptcache, in dem wir Metriken, Hosts, Datenelemente und Trigger speichern â alles, was fĂŒr die Vorverarbeitung und das Sammeln von Daten benötigt wird.

All dies wird im ConfigurationCache gespeichert, um ĂŒberflĂŒssige Datenbankanfragen zu vermeiden. Nach dem Start des Servers aktualisieren wir diesen Cache, erstellen und aktualisieren die Konfigurationen regelmĂ€Ăig.
Daten sammeln
Das Schema ist recht umfangreich, aber das Wichtigste daran ist Sammler. Dies sind verschiedene "Poller" â Sammelprozesse. Sie sind fĂŒr verschiedene Arten der Datensammlung verantwortlich: sie sammeln Daten ĂŒber SNMP, IPMI und leiten alles an PreProcessing weiter.
Die Sammler sind durch eine orange Linie umrandet.
In Zabbix gibt es berechnete aggregierte Datenelemente, die benötigt werden, um PrĂŒfungen zu aggregieren. Wenn wir diese haben, holen wir die Daten direkt aus ValueCache.
PreProcessing HistoryCache
Alle Sammler verwenden ConfigurationCache, um Aufgaben zu erhalten. Dann leiten sie diese an PreProcessing weiter.

PreProcessing nutzt ConfigurationCache, um Schritte des PreProcessings zu erhalten. Es verarbeitet diese Daten auf verschiedene Weise.
Nach der Datenverarbeitung mit PreProcessing speichern wir sie im HistoryCache, um sie zu verarbeiten. Damit endet die Datensammlung und wir gehen zum Hauptprozess in Zabbix ĂŒber â history syncer, da es sich um eine monolithische Architektur handelt.
Hinweis: PreProcessing ist eine rechenintensive Operation. Ab Version 4.2 wurde sie auf den Proxy ausgelagert. Wenn Sie ein sehr groĂes Zabbix mit vielen Datenelementen und hoher Erfassungsfrequenz haben, erleichtert dies die Arbeit erheblich.
ValueCache, Verlauf & Trends Cache
Der History Syncer ist der Hauptprozess, der jedes Datenelement atomar verarbeitet, d.h. jeden Wert.
Der History Syncer entnimmt Werte aus dem HistoryCache und prĂŒft in der Konfiguration, ob Trigger fĂŒr Berechnungen vorhanden sind. Wenn ja, fĂŒhrt er die Berechnungen durch.
Der History Syncer erstellt ein Ereignis, eine Eskalation, um Benachrichtigungen zu generieren, wenn dies in der Konfiguration erforderlich ist, und zeichnet es auf. Wenn Trigger fĂŒr weitere Verarbeitung vorhanden sind, speichert er diesen Wert im ValueCache, um nicht auf die Verlaufstabelle zugreifen zu mĂŒssen. So wird der ValueCache mit den benötigten Daten fĂŒr die Triggerberechnungen gefĂŒllt.
Der History Syncer zeichnet alle Daten in der Datenbank auf, die wiederum auf die Festplatte geschrieben wird. Der Verarbeitungsprozess endet hier.

Caching in der Datenbank
Auf der Seite der Datenbank gibt es verschiedene Caches, wenn Sie Grafiken oder Berichte zu Ereignissen betrachten möchten:
Innodb_buffer_poolauf der MySQL-Seite;shared_buffersauf der PostgreSQL-Seite;effective_cache_sizeauf der Oracle-Seite;shared_poolauf der DB2-Seite.
Es gibt viele andere Caches, aber dies sind die wichtigsten fĂŒr alle Datenbanken. Sie ermöglichen es, Daten, die hĂ€ufig fĂŒr Abfragen benötigt werden, im Arbeitsspeicher zu halten. DafĂŒr gibt es spezielle Technologien.
Die Leistung der Datenbank ist entscheidend.
Der Zabbix-Server sammelt stĂ€ndig Daten und speichert sie. Beim Neustart liest er ebenfalls aus der Historie, um den ValueCache zu fĂŒllen. Skripte und Berichte werden verwendet. Zabbix API, das auf dem Web-Interface basiert. Die Zabbix API greift auf die Datenbank zu und erhĂ€lt die benötigten Daten fĂŒr Diagramme, Berichte, Ereignisliste und aktuelle Probleme.

FĂŒr die Visualisierung â Grafana. Unter unseren Nutzern ist dies eine beliebte Lösung. Sie kann direkt ĂŒber die Zabbix API Abfragen sowohl an die Datenbank senden und schafft eine gewisse Konkurrenz um die Datenabfrage. Daher ist eine feinere und bessere Datenbankkonfiguration erforderlich, um eine schnelle Ergebnislieferung und Tests zu gewĂ€hrleisten.
Housekeeper
Der dritte Leistungsaspekt in Zabbix ist die Datenhistorienbereinigung durch Housekeeper. Er beachtet alle Einstellungen â in den Datenelementen ist angegeben, wie viele Tage die Ănderungsdynamik (Trends) aufbewahrt werden soll.
TrendsCache wird in Echtzeit berechnet. Wenn Daten eintreffen, aggregieren wir sie ĂŒber einen Zeitraum von einer Stunde und speichern sie in Tabellen, um die Dynamik der TrendverĂ€nderungen zu verfolgen.
Housekeeper wird gestartet und entfernt Informationen aus der Datenbank mit herkömmlichen âSelectsâ. Dies ist nicht immer effizient, wie man an den Diagrammen zur Leistung der internen Prozesse erkennen kann.

Das rote Diagramm zeigt, dass der History Syncer stÀndig beschÀftigt ist. Das orange Diagramm oben zeigt den Housekeeper, der immer wieder gestartet wird. Er wartet darauf, dass die Datenbank alle Zeilen löscht, die er festgelegt hat.
Wann sollte man den Housekeeper deaktivieren? Zum Beispiel, wenn es eine âItem IDâ gibt und die letzten 5.000 Zeilen ĂŒber einen bestimmten Zeitraum gelöscht werden mĂŒssen. NatĂŒrlich erfolgt dies ĂŒber Indizes. Aber in der Regel ist das Dataset sehr groĂ, und die Datenbank liest dennoch von der Festplatte und lĂ€dt in den Cache. Das ist immer eine sehr kostspielige Operation fĂŒr die Datenbank und kann, je nach GröĂe der DB, zu Leistungsproblemen fĂŒhren.

Der Housekeeper kann einfach deaktiviert werden. Im Web-Interface gibt es eine Einstellung unter âAllgemeine Verwaltungâ fĂŒr den Housekeeper. Wir deaktivieren die interne HaushaltsfĂŒhrung fĂŒr die interne History der Trends, wodurch er nicht mehr dafĂŒr zustĂ€ndig ist.
Housekeeper wurde deaktiviert, die ZeitplĂ€ne haben sich angeglichen â welche Probleme können in diesem Fall auftreten und wie kann man bei der dritten Leistungsanfrage helfen?
Partitionierung â Sektionierung oder Partionierung
In der Regel wird Partitionierung unterschiedlich in jeder relationalen Datenbank eingerichtet, die ich aufgelistet habe. Jede hat ihre eigene Technologie, aber grundsĂ€tzlich sind sie Ă€hnlich. Das Erstellen einer neuen Partition fĂŒhrt oft zu bestimmten Problemen.
In der Regel wird die Partitionierung je nach 'Setup' â der Menge an Daten, die an einem Tag erstellt werden â konfiguriert. Normalerweise wird Partitionierung fĂŒr einen Tag eingestellt, das ist das Minimum. FĂŒr die Trends einer neuen Partition â fĂŒr 1 Monat.
Die Werte können sich bei einem sehr groĂen 'Setup' Ă€ndern. Wenn ein kleines 'Setup' bis zu 5.000 nvps (neue Werte pro Sekunde) betrĂ€gt, ist das mittlere von 5.000 bis 25.000, und das groĂe ĂŒber 25.000 nvps. Dies sind groĂe und sehr groĂe Installationen, die eine sorgfĂ€ltige Datenbankkonfiguration erfordern.
Bei sehr groĂen Installationen kann ein Tagesabschnitt suboptimal sein. Ich habe in MySQL Partitionen gesehen, die ĂŒber 40 GB und mehr pro Tag umfassen. Das ist ein enormer Datenumfang, der zu Problemen fĂŒhren kann und muss reduziert werden.
Was bringt Partitionierung?
Tabellenpartitionierung. Oft handelt es sich um separate Dateien auf der Festplatte. Der Abfrageplan wĂ€hlt optimierter eine Partition aus. In der Regel wird Partitionierung basierend auf einem Bereich verwendet â das gilt auch fĂŒr Zabbix. Wir verwenden dort den âtimestampâ â die Zeit seit der Epoche. In unserem Fall sind das gĂ€ngige Zahlen. Sie geben den Beginn und das Ende des Tages an â das ist die Partition.
Schnelles Löschen â DELETE. Es wird eine Datei/Subtabelle ausgewĂ€hlt, nicht eine Zeilenabfrage zum Löschen.
Beschleunigt die Datenauswahl deutlich SELECT â es werden eine oder mehrere Partitionen verwendet, nicht die gesamte Tabelle. Wenn Sie auf Daten von vor zwei Tagen zugreifen, werden diese schneller aus der DB abgerufen, da nur eine Datei geladen und im Cache bereitgestellt wird, anstatt eine groĂe Tabelle.
Oft beschleunigt das auch viele DBs INSERT â EinfĂŒgungen in die Child-Tabelle.
TimescaleDB
FĂŒr v 4.2 haben wir uns mit TimescaleDB beschĂ€ftigt. Dies ist ein PostgreSQL-Erweiterung mit einer nativen Schnittstelle. Die Erweiterung arbeitet effizient mit Zeitreihendaten, ohne die Vorteile von relationalen Datenbanken zu verlieren. TimescaleDB partitioniert auch automatisch.
In TimescaleDB gibt es das Konzept der Hypertabelle (hypertable), die Sie erstellen. In ihr befinden sich Chunks â Partitionen. Chunks sind automatisch verwaltete Fragmente der Hypertabelle, die nicht die anderen Fragmente beeinflussen. Jeder Chunk hat seinen eigenen Zeitbereich.

TimescaleDB vs PostgreSQL
TimescaleDB funktioniert wirklich effizient. Die Entwickler der Erweiterung behaupten, dass sie einen besseren Algorithmus zur Abwicklung von Anfragen verwenden, insbesondere fĂŒr <code>Inserts</code>. Wenn die GröĂen der Dataset-EinfĂŒgungen wachsen, unterstĂŒtzt der Algorithmus konstante Leistung.

Nach 200 Millionen Zeilen beginnt PostgreSQL normalerweise erheblich nachzulassen und verliert die Leistung auf 0. TimescaleDB ermöglicht es, Inserts bei jedem Datenvolumen effektiv einzufĂŒgen.
Installation von
Die Installation von TimescaleDB ist fĂŒr alle Pakete recht einfach. In wird alles ausfĂŒhrlich beschrieben â es hĂ€ngt von den offiziellen PostgreSQL-Paketen ab. TimescaleDB kann auch manuell gebaut und kompiliert werden.
FĂŒr die Zabbix-Datenbank aktivieren wir einfach die Erweiterung:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix Sie aktivieren die Erweiterung und erstellen sie fĂŒr die Zabbix-Datenbank. Der letzte Schritt ist die Erstellung einer Hypertabelle.
Migration der Verlaufstabellen auf TimescaleDB
Es gibt dafĂŒr eine spezielle Funktion create_hypertable:
SELECT create_hypertable(âhistoryâ, âclockâ, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(âhistory_unitâ, âclockâ, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(âhistory_logâ, âclockâ, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(âhistory_textâ, âclockâ, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(âhistory_strâ, âclockâ, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(âtrendsâ, âclockâ, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(âtrends_unitâ, âclockâ, chunk_time_interval => 86400, migrate_data => true);
UPDATE config SET db_extension=âtimescaledbâ, hk_history_global=1, hk_trends_global=1 Die Funktion hat drei Parameter. Der erste ist die Tabelle in der Datenbank, fĂŒr die eine Hypertabelle erstellt werden soll. Der zweite ist das Feld, nach dem die Hypertabelle erstellt werden muss. chunk_time_interval ist das Intervall der Partitionierungs-Chunks, das verwendet werden soll. In meinem Fall betrĂ€gt das Intervall einen Tag â 86.400.
Der dritte Parameter ist daten_migrieren. Wenn Sie einstellen true, werden alle aktuellen Daten in vordefinierte Chunks ĂŒbertragen. Ich habe es selbst verwendet daten_migrieren. Ich hatte etwa 1 TB, das hat mehr als eine Stunde gedauert. In einigen FĂ€llen habe ich beim Testen sogar optionale historische Daten vom Zeichentyp gelöscht, um sie nicht zu ĂŒbertragen.
Der letzte Schritt â UPDATE: In db_extension stellen wir timescaledb, damit die DB dieses Erweiterung versteht. Zabbix aktiviert es und nutzt die Syntax und Abfragen korrekt â die Funktionen, die fĂŒr TimescaleDB erforderlich sind.
Konfiguration der Hardware
Ich habe zwei Server verwendet. Der erste â VMware-Maschine. Sie ist ziemlich klein: 20 IntelÂź XeonÂź CPU E5-2630 v 4 @ 2,20 GHz, 16 GB RAM und eine 200 GB SSD.
Ich habe darauf PostgreSQL 10.8 mit Debian 10.8-1.pgdg90+1 und dem Dateisystem xfs installiert. Ich habe es minimal konfiguriert, um genau diese Datenbank zu verwenden, abgesehen davon, was Zabbix selbst verwenden wird.
Auf dieser Maschine liefen der Zabbix-Server, PostgreSQL und Lastagenten. Ich hatte 50 aktive Agenten, die LoadableModule, um sehr schnell verschiedene Ergebnisse zu generieren: Zahlen, Zeichenfolgen. Ich habe die Datenbank mit einer groĂen Menge Daten gefĂŒllt.
Die ursprĂŒngliche Konfiguration enthielt 5.000 Elemente Daten fĂŒr jeden Host. Fast jedes Element hatte einen Trigger, um es realen Installationen Ă€hnlich zu machen. In einigen FĂ€llen gab es mehr als einen Trigger. Auf einen Knoten im Netzwerk entfielen 3.000-7.000 Trigger.
Aktualisierungsintervall der Datenelemente â 4-7 Sekunden. Ich regulierte die Last, indem ich nicht nur 50 Agenten verwendete, sondern noch weitere hinzufĂŒgte. AuĂerdem passte ich mit Hilfe der Datenelemente die Last dynamisch an und senkte das Aktualisierungsintervall auf 4 s.
PostgreSQL. 35.000 nvps
Der erste Start auf dieser Hardware war mit reinem PostgreSQL â 35.000 Werte pro Sekunde. Wie man sieht, dauert das EinfĂŒgen von Daten Bruchteile von Sekunden â alles funktioniert gut und schnell. Einziges Manko ist, dass die SSD mit 200 GB schnell voll wird.

Das ist das Standard-Performance-Dashboard von Zabbix â Server.

Der erste blaue Graph zeigt die Anzahl der Werte pro Sekunde. Der zweite Graph rechts zeigt die Auslastung der Sammelprozesse. Der dritte zeigt die Auslastung interner Sammelprozesse: History Syncers und Housekeeper, die hier ĂŒber lĂ€ngere ZeitrĂ€ume aktiv waren.
Das vierte Diagramm zeigt die Nutzung des HistoryCache. Dies ist ein Puffer vor der Einspeisung in die Datenbank. Das grĂŒne fĂŒnfte Diagramm zeigt die Nutzung des ValueCache, das heiĂt, wie viele Zugriffe der ValueCache fĂŒr die Trigger hat â das sind mehrere Tausend Werte pro Sekunde.
PostgreSQL. 50.000 nvps
Ich habe die Last auf 50.000 Werte pro Sekunde auf derselben Hardware erhöht.

Beim Laden mit dem Housekeeper wurden 10.000 Werte in 2-3 Sekunden geschrieben.

Der Housekeeper beginnt bereits, die Arbeit zu stören.
Im dritten Diagramm sieht man, dass die Auslastung der Trapper und History Syncers insgesamt noch bei 60% liegt. Im vierten Diagramm beginnt der HistoryCache wĂ€hrend der Arbeit des Housekeepers bereits aktiv gefĂŒllt zu werden. Er wurde zu 20% gefĂŒllt â das sind etwa 0,5 GB.
PostgreSQL. 80.000 nvps
Ich habe die Last auf 80.000 Werte pro Sekunde erhöht. Das sind etwa 400.000 Datenelemente und 280.000 Trigger.

Die Einspeisung mit der Last von dreiĂig History Syncers ist bereits recht hoch.
Ich habe auch verschiedene Parameter angepasst: History Syncers, Caches.

Auf meiner Hardware stieg die Auslastung der History Syncers bis zum Maximum. Der HistoryCache fĂŒllte sich schnell mit Daten â im Puffer sammelten sich die Daten zur Verarbeitung.
WĂ€hrend dieser gesamten Zeit habe ich beobachtet, wie die CPU, der Arbeitsspeicher und andere Systemparameter genutzt werden, und festgestellt, dass die Auslastung der Festplatten maximal war.

Ich habe erreicht, dass die maximalen Möglichkeiten der Festplatte genutzt werden auf dieser Hardware und dieser virtuellen Maschine. Bei einer solchen IntensitÀt begann PostgreSQL recht aktiv Daten zu verwalten, und die Festplatte konnte nicht mehr ausreichend lesen und schreiben.
Zweiter Server
Ich habe einen anderen Server genommen, der bereits 48 Prozessoren und 128 GB Arbeitsspeicher hatte. Ich habe ihn optimiert â 60 history syncer installiert und akzeptable Leistung erzielt.

TatsÀchlich ist dies bereits das Leistungsmaximum, wo etwas unternommen werden muss.
TimescaleDB. 80.000 nvps
Meine Hauptaufgabe ist es, die Möglichkeiten von TimescaleDB unter der Last von Zabbix zu testen. 80.000 Werte pro Sekunde sind viel, die Frequenz der Metrik-Sammlung (auĂer bei Yandex, natĂŒrlich) und ein ziemlich groĂes âSetupâ.

In jedem Diagramm gibt es einen Einbruch â das ist die Datenmigration. Nach den EinbrĂŒchen im Zabbix-Server hat sich das Profil der Belastung des history syncer erheblich verĂ€ndert â es ist um das Dreifache gefallen.
TimescaleDB ermöglicht es, Daten nahezu dreimal schneller einzufĂŒgen und weniger HistoryCache zu verwenden.
Somit werden Ihnen die Daten rechtzeitig zur VerfĂŒgung gestellt.
TimescaleDB. 120.000 nvps
AnschlieĂend habe ich die Anzahl der Datenelemente auf 500.000 erhöht. Die Hauptaufgabe bestand darin, die Möglichkeiten von TimescaleDB zu ĂŒberprĂŒfen â ich erhielt eine berechnete Rate von 125.000 Werten pro Sekunde.

Das ist ein funktionierendes Setup, das lange betrieben werden kann. Da meine Festplatte jedoch nur 1,5 TB hatte, habe ich sie innerhalb von ein paar Tagen gefĂŒllt.

Das Wichtigste ist, dass gleichzeitig neue Partitionen in TimescaleDB erstellt wurden.
FĂŒr die Leistung ist das völlig unauffĂ€llig. Wenn zum Beispiel in MySQL Partitionen erstellt werden, sieht das ganz anders aus. Das geschieht normalerweise nachts, da es die gesamte EinfĂŒgung blockiert, die Arbeit mit Tabellen beeintrĂ€chtigen kann und möglicherweise eine Dienstverschlechterung verursacht. Bei TimescaleDB tritt das nicht auf.
Zum Beispiel zeige ich ein Diagramm von vielen in der Community. Auf dem Bild ist TimescaleDB aktiviert, wodurch die I/O-Nutzung auf dem Prozessor gesenkt wurde. Auch die Nutzung interner Prozesselemente nahm ab. Dabei handelt es sich um eine gewöhnliche virtuelle Maschine auf normalen Festplatten, nicht SSDs.

Fazit
TimescaleDB ist eine gute Lösung fĂŒr kleine Setups., die die Leistung der Festplatte betreffen. Es ermöglicht ein reibungsloses Arbeiten bis zur Migration der Datenbank auf schnellere Hardware.
TimescaleDB ist einfach einzurichten, bietet Leistungssteigerungen und arbeitet gut mit Zabbix sowie hat Vorteile gegenĂŒber PostgreSQL..
Wenn Sie PostgreSQL verwenden und nicht planen, es zu wechseln, empfehle ich, PostgreSQL mit der TimescaleDB-Erweiterung zusammen mit Zabbix zu nutzen.Diese Lösung funktioniert effizient bis zu mittleren Setups.
Wenn wir von âhoher Leistungâ sprechen, meinen wir . Es ist nicht mehr lange hin, um Technologien und Praktiken kennenzulernen, die es Diensten ermöglichen, Millionen von Benutzern zu bedienen. Die Liste fĂŒr den 7. und 8. November haben wir bereits erstellt, aber kann man immer noch vorschlagen.
Abonnieren Sie unsere und , in denen wir die Highlights der bevorstehenden Konferenz vorstellen und erlĂ€utern, wie man den gröĂtmöglichen Nutzen daraus zieht.
Quelle: habr.com
