Lassen Sie uns über die verteilte Überwachung von Zeitseriendatenbanken sprechen.
Eine Zeitseriendatenbank ist für Zeitstempel oder Zeitseriendaten optimiert. Unter Zeitreihendaten versteht man Messungen oder Ereignisse, die über einen bestimmten Zeitraum verfolgt, überwacht, gesammelt oder aggregiert werden. Dabei kann es sich um Daten handeln, die von Herzschlägen von Sensoren zur Bewegungsverfolgung, JVM-Metriken von Java-Anwendungen, Markthandelsdaten, Netzwerkdaten, API-Antworten, Prozessbetriebszeiten usw. erfasst werden.
Zeitseriendatenbanken sind vollständig mit zeitgestempelten Daten ausgestattet, die indiziert und effizient geschrieben sind, so dass Sie Zeitseriendaten einfügen können. Sie können diese Zeitreihendaten viel schneller abfragen, als Sie es in einer relationalen oder NoSQL-Datenbank tun würden.
In letzter Zeit hat sie sehr an Popularität gewonnen. Und warum auch nicht? Es leistet fantastische Arbeit bei der Überwachung von Geschäfts- und IT-Abläufen. Die gute Nachricht ist, dass Sie aus einer Vielzahl von Optionen wählen können, und die meisten davon sind Open-Source.
InfluxDB
InfluxDB ist eine der beliebtesten Zeitreihen-Datenbanken unter DevOps, die in Go geschrieben ist. InfluxDB wurde von Grund auf als hoch skalierbare Datenaufnahme- und Speicher-Engine entwickelt. Sie ist sehr effizient beim Sammeln, Speichern, Abfragen, Visualisieren und Verarbeiten von Strömen von Zeitreihendaten, Ereignissen und Metriken in Echtzeit.
Sie bietet Downsampling und Datenaufbewahrungsrichtlinien, um die Speicherung von Daten mit hohem Wert und hoher Präzision im Speicher und von Daten mit geringerem Wert auf der Festplatte zu unterstützen. Die Lösung ist Cloud-nativ und bietet Skalierbarkeit in verschiedenen Einsatztopologien, einschließlich Cloud-, On-Premises- und Hybrid-Umgebungen.
InfluxDB ist eine Open-Source-Lösung und unternehmenstauglich. Sie verwendet InfluxQL, das einer Strukturabfragesprache sehr ähnlich ist, um mit Daten zu interagieren. Die neueste Version bietet Agenten, Dashboards, Abfragen und Aufgaben in einem Toolkit. Es ist ein All-in-One-Tool für Dashboarding, Visualisierung und Alarmierung.
Funktionen
- Hohe Leistung für Zeitreihendaten mit durchgehendem Ingest und Echtzeitabfragen
- InfluxQL zur Interaktion mit Daten, eine SQL-ähnliche Abfragesprache
- Kernkomponente des TICK (Telegraf, InfluxDB, Chronograf und Kapacitor) Stacks.
- Plugin-Unterstützung für Protokolle wie collectd, Graphite, OpenTSDB zur Datenaufnahme
- Kann Millionen von Datenpunkten in nur 1 Sekunde verarbeiten
- Aufbewahrungsrichtlinien zum automatischen Entfernen veralteter Daten
Da es sich um eine Open-Source-Lösung handelt, können Sie sie herunterladen und auf Ihrem Server einrichten. Sie bieten jedoch InfluxDB Cloud auf AWS, Azure und GCP an.
Prometheus
Prometheus ist eine Open-Source-Überwachungslösung, die dazu dient, Erkenntnisse aus Metrikdaten zu gewinnen und die notwendigen Warnungen zu senden. Es verfügt über eine lokale Zeitseriendatenbank auf der Festplatte, die Daten in einem benutzerdefinierten Format auf der Festplatte speichert.
Das Datenmodell von Prometheus ist mehrdimensional und basiert auf Zeitreihen; es speichert alle Daten als Ströme von Werten mit Zeitstempel. Dies ist sehr nützlich, wenn Sie mit einer vollständig numerischen Zeitreihe arbeiten. Das Sammeln von Microservices-Daten und deren Abfrage ist eine der Stärken von Prometheus.
Es ist eng mit Grafana zur Visualisierung integriert. Wenn Sie ein Neuling sind, lesen Sie diesen Artikel zur Einführung in Prometheus und Grafana.
Funktionen
- Verfügt über ein mehrdimensionales Modell, das Metriknamen und Schlüssel-Wert-Paare (Labels) verwendet
- PromQL für die Abfrage von Zeitseriendaten zur Erstellung von Tabellen, Warnungen und Adhoc-Grafiken
- Verwendet den HTTP-Pull-Modus zum Sammeln von Zeitreihendaten
- Verwendet ein zwischengeschaltetes Gateway zum Pushen von Zeitreihen
Prometheus verfügt über Hunderte von Exportern, um die Daten von Windows, Linux, Java, Datenbanken, APIs, Websites, Server-Hardware, PHP, Messaging und mehr zu exportieren. Um Linux zu überwachen, sehen Sie sich dieses Prometheus Grafana-Setup an.
TimescaleDB
TimescaleDB ist eine relationale Open-Source-Datenbank, die SQL für Zeitreihendaten skalierbar macht. Diese Datenbank basiert auf PostgreSQL.
Sie bietet zwei Produkte an – die erste Option ist eine kostenlose Community Edition, die Sie auf Ihrem Server installieren können. Die zweite Option ist TimescaleDB Cloud, bei der Sie eine vollständig gehostete und verwaltete Infrastruktur in der Cloud für Ihre Einsatzzwecke erhalten.
Es kann für die DevOps-Überwachung, das Verständnis von Anwendungsmetriken, die Verfolgung von Daten aus IoT-Geräten, das Verständnis von Finanzdaten usw. verwendet werden. Sie können Protokolle, Kubernetes-Ereignisse, Prometheus-Metriken und sogar benutzerdefinierte Metriken messen.
Produktverantwortliche können es nutzen, um die Leistung eines Produkts im Laufe der Zeit zu verstehen, was ihnen hilft, strategische Entscheidungen für das Wachstum zu treffen.
Funktionen
- Führt Abfragen 10-100x schneller aus als PostgreSQL, MongoDB
- Kann horizontal auf Petabytes skalieren und schreibt Millionen von Datenpunkten pro Sekunde
- Sehr ähnlich wie PostgreSQL, daher für Entwickler und Administratoren einfach zu bedienen
- Kombiniert relationale und Zeitreihen-Datenbankfunktionalitäten, um leistungsstarke Anwendungen zu erstellen.
- Eingebaute Algorithmen und Leistungsmerkmale, um eine Menge Kosten zu sparen.
Graphite
Graphite ist eine Komplettlösung für die Speicherung und effiziente Visualisierung von Echtzeit-Zeitreihendaten. Graphite kann zwei Dinge: Zeitreihendaten speichern und bei Bedarf Diagramme rendern. Aber es sammelt keine Daten für Sie. Dafür können Sie Tools wie collectd, Ganglia, Sensu, telegraf usw. verwenden.
Es besteht aus drei Komponenten – Carbon, Whisper und Graphite-Web. Carbon empfängt die Zeitreihendaten, aggregiert sie und speichert sie auf der Festplatte. Whisper ist eine Zeitserien-Datenbank, die die Daten speichert. Graphite-Web ist das Front-End für die Erstellung von Dashboards und die Visualisierung der Daten.
Graphite-Funktionen:
- Das Format der Metriken, in dem die Daten übermittelt werden, ist einfach zu handhaben.
- Umfassende API für das Rendern der Daten und die Erstellung von Diagrammen, Dashboards und Grafiken
- Bietet einen umfangreichen Satz an statistischen Bibliotheken und transformativen Rendering-Funktionen
- Verkettet mehrere Renderfunktionen, um eine Zielabfrage zu erstellen.
QuestDB
QuestDB ist eine relationale spaltenorientierte Datenbank, die Echtzeit-Analysen von Zeitreihendaten durchführen kann. Sie arbeitet mit SQL und einigen Erweiterungen, um ein relationales Modell für Zeitreihendaten zu erstellen. QuestDB wurde von Grund auf neu kodiert und hat keine Abhängigkeiten, was seine Leistung verbessert.
QuestDB unterstützt relationale und Zeitserien-Joins, die bei der Korrelation der Daten helfen. Der einfachste Weg, um mit QuestDB zu beginnen, ist die Bereitstellung in einem Docker-Container.
QuestDB-Funktionen:
- Interaktive Konsole zum Importieren und Abfragen von Daten per Drag & Drop
- Unterstützt Cloud-Native (AWS, Azure, GCP), On-Premises oder eingebettet
- Bietet Unternehmensintegration mit Funktionen wie Active Directory, Hochverfügbarkeit, Unternehmenssicherheit, Clustering
- Bietet Einblicke in Echtzeit durch operative und prädiktive Analysen
AWS Timestream
Wie kann AWS nicht auf der Liste stehen?
AWS Timestream ist ein serverloser Zeitreihen-Datenbankdienst, der schnell und skalierbar ist. Er wird hauptsächlich für IoT-Anwendungen verwendet, um Billionen von Ereignissen pro Tag zu speichern, und zwar 1000 Mal schneller und zu 1/10 der Kosten von relationalen Datenbanken.
Mit der speziell entwickelten Abfrage-Engine können Sie gleichzeitig aktuelle und historische gespeicherte Daten abfragen. Es bietet mehrere integrierte Funktionen zur Analyse von Zeitreihendaten, um nützliche Erkenntnisse zu gewinnen.
Amazon Timestream Funktionen:
- Sie müssen keine Server verwalten oder Instanzen bereitstellen; alles wird automatisch erledigt.
- Kostengünstig: Sie zahlen nur für das, was Sie aufnehmen, speichern und abfragen.
- Kann täglich Billionen von Ereignissen aufnehmen, ohne dass die Leistung abnimmt
- Integrierte Analysefunktionen mit Standard-SQL, Interpolations- und Glättungsfunktionen zur Ermittlung von Trends, Mustern und Anomalien
- Alle Daten werden über das AWS Key Management System (KMS) mit kundenverwalteten Schlüsseln (CMK) verschlüsselt
OpenTSDB
OpenTSDB ist eine skalierbare Zeitseriendatenbank, die auf HBase aufbaut. Sie ist in der Lage, Billionen von Datenpunkten mit Millionen von Schreibvorgängen pro Sekunde zu speichern. Sie können die Daten in OpenTSDB für immer mit ihrem ursprünglichen Zeitstempel und ihrem genauen Wert aufbewahren, so dass Sie keine Daten verlieren.
Es verfügt über einen Zeitserien-Daemon (TSD) und Befehlszeilen-Dienstprogramme. Der Zeitreihen-Daemon ist für das Speichern von Daten in HBase oder das Abrufen von Daten aus HBase zuständig. Sie können mit TSD über die HTTP-API, Telnet oder die einfache integrierte GUI kommunizieren. Sie benötigen Tools wie flume, collectd, vacuumetrix usw., um Daten aus verschiedenen Quellen in OpenTSDB zu sammeln.
OpenTSBD-Funktionen:
- Kann Metriken mit halsbrecherischer Geschwindigkeit aggregieren, filtern und herunterrechnen
- Speichert und schreibt Daten mit Millisekundengenauigkeit
- Läuft auf Hadoop und HBase und skaliert leicht durch Hinzufügen von Knoten zum Cluster
- Verwendet GUI zur Erstellung von Diagrammen
Fazit
Da heutzutage immer mehr IoT/Smart-Geräte zum Einsatz kommen, ein enormer Echtzeit-Traffic auf Websites mit Millionen von Ereignissen pro Tag erzeugt wird, der Handel auf dem Markt zunimmt, ist die Zeitreihendatenbank da! Zeitseriendatenbanken sind ein Muss in Ihrem Produktionsstack für die Überwachung.
Die meisten der oben aufgelisteten Zeitseriendatenbanken können Sie selbst hosten. Besorgen Sie sich also eine Cloud-VM und probieren Sie aus, was für Sie geeignet ist.