Im Cloud-Native-Zeitalter Vergleich gängiger Monitoring-Tools und Analyse von Nutzungsszenarien

Mit der kontinuierlichen Entwicklung und dem Wachstum von Unternehmen steigt auch die Anzahl der Online-Server, sodass auch die Wahrscheinlichkeit von Unternehmenssoftware- und -hardwareausfällen zunimmt. Wenn in der obigen Situation der Unternehmenshost oder die Anwendung anormal ist und das Unternehmen nicht über ein relativ vollständiges und leistungsfähiges Überwachungssystem verfügt, wird dies die Unterbrechung des Unternehmensbetriebs verursachen, und dieser Verlust ist für das Unternehmen enorm.

Autor: Edward Li, Cloud Intelligence Development Engineer. Mit langjähriger Erfahrung in Betrieb und Wartung sowie Devops engagiert er sich für die Erforschung und Umsetzung der Cloud-Native -Richtung.

Einführung in die Überwachung

Mit dem Aufkommen von Microservices sind Überwachungssysteme noch wichtiger geworden. Wenn Entwickler ein relativ kleines Programm schreiben, entscheiden sie sich dafür, ein Skript oder ein kleines Programm zur Überwachung zu schreiben; wenn der Umfang der eigenen Dienstanwendung eines Unternehmens relativ groß ist, wird eine kommerzielle Überwachungslösung übernommen, die für sein eigenes Geschäftssystem geeignet ist. Cloud Wisdom ist ein führender Anbieter von intelligenten Full-Stack-Lösungen für den Geschäftsbetrieb und die Wartung in China. Zu seinen Produkten gehören Monitoring Treasure, Perspective Treasure und andere Unternehmenssoftware. Darüber hinaus entscheiden sich einige Unternehmen für einige Open-Source-Überwachungslösungen wie Zabbix, Prometheus usw. In diesem Artikel erläutern wir, wie Sie im Cloud-Native-Zeitalter eine geeignete Überwachungslösung auswählen.

Zweck der Überwachung

Durch die Einrichtung eines soliden Überwachungssystems können folgende Ziele erreicht werden:

  • Alarm: Wenn das System auftritt oder kurz vor einem Ausfall steht, muss das Überwachungssystem schnell reagieren und den Administrator benachrichtigen, damit das Problem schnell behoben oder das Auftreten des Problems im Voraus verhindert werden kann, um die Auswirkungen auf die zu vermeiden Geschäft;

  • Langfristige Trendanalyse: Durchführung einer langfristigen Trendanalyse von Überwachungsindikatoren durch kontinuierliche Erfassung und Statistik von Überwachungsstichprobendaten;

  • Vergleichende Analyse: Wie unterscheidet sich der Betriebsmittelverbrauch der beiden Systemvarianten? Wie variiert die Parallelität und Belastung des Systems bei unterschiedlichen Kapazitäten? Durch die Überwachung kann das System leicht verfolgt und verglichen werden;

  • Fehleranalyse und -lokalisierung: Wenn ein Problem auftritt, muss das Problem untersucht und behoben werden. Durch die Analyse verschiedener Überwachungs- und Verlaufsdaten kann die Grundursache gefunden und behoben werden;

  • Datenvisualisierung: Über das visuelle Dashboard können Sie direkt intuitive Informationen wie den Betriebsstatus des Systems, die Ressourcennutzung und den Betriebsstatus des Dienstes abrufen.

Dimensionen der Überwachung

Die Dimensionen des Monitorings umfassen im Wesentlichen folgende Aspekte:

  • Netzwerkschicht: einschließlich Überwachung von Netzwerkprotokollen (http, dns, tcp, icmp) und Netzwerkhardware (Router, Switches usw.);

  • Host-Schicht: überwacht hauptsächlich die Nutzung von Ressourcen wie CPU, MEM und Speicher;

  • Containerschicht: überwacht hauptsächlich die Nutzung von CPU, MEM, Speicher und anderen Ressourcen;

  • Anwendungsschicht: hauptsächlich Überwachung von Verzögerung, Fehler, QPS, internem Status usw.;

  • Middleware-Schicht: überwacht hauptsächlich die Ressourcennutzung und den Dienststatus;

  • Orchestrierungstoolebene: Überwacht hauptsächlich die Cluster-Ressourcennutzung, Zeitplanung usw.

Vier Überwachungsindikatoren für Gold

Golden Signals stellt eine Zusammenfassung der Erfahrungen von Google mit einer großen Anzahl verteilter Überwachungen dar. Die vier goldenen Indikatoren können dabei helfen, Probleme wie Endnutzererfahrung, Dienstunterbrechung und Geschäftsauswirkungen auf Dienstebene zu messen. Das Hauptaugenmerk liegt auf den folgenden vier Arten von Metriken: Latenz, Datenverkehr, Fehler und Sättigung:

  1. Latenz: Die Zeit, die benötigt wird, um eine Anfrage zu bedienen. Notieren Sie die Zeit, die für alle Anfragen des Benutzers benötigt wird, wobei der Schwerpunkt auf der Unterscheidung zwischen der Verzögerungszeit einer erfolgreichen Anfrage und der Verzögerungszeit einer fehlgeschlagenen Anfrage liegt;

  2. Verkehr: Überwacht den aktuellen Systemverkehr, um den Kapazitätsbedarf des Dienstes zu messen. Datenverkehr kann für verschiedene Arten von Systemen unterschiedliche Bedeutungen haben. Beispielsweise besteht der Datenverkehr in einer HTTP-REST-API normalerweise aus HTTP-Anforderungen pro Sekunde;

  3. Fehler: Überwachen Sie alle Fehleranforderungen, die im aktuellen System auftreten, und messen Sie die Rate, mit der Fehler im aktuellen System auftreten. Einige der Fehler sind explizit (z. B. HTTP 500-Fehler) und einige sind implizit (z. B. HTTP-Antwort 200, aber der eigentliche Geschäftsprozess ist immer noch fehlgeschlagen). Für einige Ausnahmen innerhalb des Systems müssen Sie möglicherweise Hook-Statistiken direkt vom Dienst hinzufügen und abrufen.

  4. Sättigung: Misst die Sättigung des aktuellen Dienstes. Der Schwerpunkt liegt auf den eingeschränkten Ressourcen, die sich am stärksten auf den Zustand des Dienstes auswirken. Denn wenn diese Ressourcen ausgelastet sind, sinkt die Leistung des Dienstes normalerweise erheblich. Gleichzeitig kann die Sättigung auch verwendet werden, um Vorhersagen über das System zu treffen. Beispiel: „Ist die Festplatte wahrscheinlich in 4 Stunden voll?“.

Prometheus-Überwachungssystem

Prometheus ist eine Open-Source-Überwachungslösung und ein Open-Source-Systemüberwachungs- und Warn-Framework. Wird verwendet, um Metriken als Zeitreihendaten zu sammeln und zu aggregieren, die als Open-Source-Community-Projekt entwickelt und 2015 offiziell veröffentlicht wurden.

Vorteile von Prometheus

  • Cloud-natives Halo: Es ist freundlich zur Kubernetes (Trend)-Unterstützung Da Kubernetes eine führende Position in der Containerplanung und -verwaltung aufgebaut hat, ist Prometheus auch zum Standard für die Kubernetes-Containerüberwachung geworden;

  • Leistungsstarke Abfragesprache: Prometheus verfügt über eine integrierte leistungsstarke Datenabfragesprache PromQL. Die Abfrage und Aggregation von Überwachungsdaten kann über PromQL realisiert werden. Gleichzeitig wird PromQL auch in der Datenvisualisierung (wie Grafana) und Alarmierung verwendet;

  • Dynamischer Diensterkennungsmechanismus: Kubernetes, Consul, Etcd usw. werden derzeit unterstützt, was den Arbeitsaufwand der manuellen Konfiguration durch Betriebs- und Wartungspersonal reduzieren kann (besonders wichtig in Containerumgebungen);

  • Erweiterbar: funktionale Partition (Sharding) + Föderationssatz (Federation) kann erweitert werden;

  • Einfach zu integrieren: Die Verwendung von Prometheus kann schnell Überwachungsdienste aufbauen und kann sehr bequem in die Anwendung integriert werden. Reiche Sammlungskunden (offiziell, Drittanbieter, benutzerdefiniert);

  • Effizient und einfach zu verwalten: Die Bereitstellung auf mehreren Plattformen ist mit Millionen von Überwachungsmetriken und Hunderttausenden von Datenpunkten pro Sekunde kompatibel.

Prometheus-Architektur

  • Prometheus-Server: Der Abruf ruft regelmäßig Metrikdaten von Zielen ab, die dynamisch vom Dienst über den HTTP-Server erkannt werden. Jedes Abrufziel muss eine HTTP-Dienstschnittstelle (konform mit der Prometheus-Spezifikation) bereitstellen, um regelmäßig mit Prometheus abzurufen. Die gesammelten Überwachungsdaten werden persistiert und in TSDB gespeichert;

  • PromQL-Abfrage: Sie können PromQL verwenden, um verschiedene Indikatordaten über Prometheus WebUi, Api Clients oder Grafana abzufragen;

  • Alarm-Push: Senden Sie die Alarme, die den Schwellenwert nach der Berechnung überschreiten, an den Alertmanager.Nach weiterer Gruppierung, Unterdrückung und Stummschaltung sendet der Alertmanager sie an einen reichhaltigeren Alarmkanal;

  • Erfassungsziel: Das erfasste Ziel kann entweder eine Vielzahl von offiziellen Exporteuren oder eine Schnittstelle eines Drittanbieters sein, die die Prometheus-Spezifikation implementiert (z. B. die Metrikschnittstelle von Nacos und Arrangodb), z. B. PushGateway usw.

Indikatortyp

  • Zähler: ein Zähler, der nur erhöht und nicht verringert wird, nützlich zum Speichern von Informationen wie der Anzahl der bedienten HTTP-Anforderungen oder der verwendeten CPU-Zeit;

  • Gauge: ein Dashboard, das vergrößert oder verkleinert werden kann, dieser Indikator konzentriert sich auf den aktuellen Zustand des Reaktionssystems;

  • Zusammenfassung: Die Zusammenfassung wird verwendet, um die durchschnittliche Größe von etwas aufzuzeichnen, beispielsweise die Berechnungszeit oder die Größe der verarbeiteten Datei. Die Zusammenfassung zeigt zwei verwandte Informationen: Anzahl (wie oft das Ereignis aufgetreten ist) und Summe (die Gesamtgröße aller Ereignisse) ;

  • Histogramm: Der Histogramm-Indikator spiegelt direkt die Anzahl der Proben in verschiedenen Intervallen wider, und das Intervall wird durch die Label-Datei definiert. Histogramme werden Haupthistogramme oder Histogramme genannt und werden hauptsächlich verwendet, um eine Verteilung von Indikatorwerten zu zählen. Bucket: Stellen Sie das Intervall der horizontalen Achse ein, stellen Sie nur die obere Grenze, aber nicht die untere Grenze ein. Es wird hauptsächlich verwendet, um die zeitraubende Verteilung von Anfragen zu zählen.

Gemeinsamer Exporteur

Zu den in der Community häufig verwendeten Exporteuren gehören hauptsächlich die folgenden:

Aufgaben und Beispiele

Durch Hinzufügen der folgenden Konfiguration in der Konfigurationsdatei prometheus.yml:

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

Sammlungsziel

Prometheus unterstützt bereits mehrere integrierte Diensterkennungsmechanismen. Entwickler können es über den Abschnitt scrape_config in der Prometheus-Konfigurationsdatei konfigurieren. Prometheus aktualisiert kontinuierlich die dynamische Crawling-Zielliste, stoppt automatisch das Crawlen alter Instanzen und beginnt mit dem Crawlen neuer Instanzen. Prometheus eignet sich besonders für den Betrieb unter dem Kubernetes-Cluster und kann Überwachungsziele automatisch erkennen. Unter Kubernetes unterstützt Promethues hauptsächlich 5 Diensterkennungsmodi durch die Integration mit der Kubernetes-API, nämlich: Node, Service, Pod, Endpoints, Ingress.

Kubernetes-Clusterüberwachungslösung

  • cAdvisor: cAdvisor ist Googles Open-Source-Tool zur Überwachung und Leistungsanalyse von Containerressourcen, das speziell für Container entwickelt wurde und Docker-Container unterstützt. Es ist derzeit in die Kubelet-Komponente integriert.

  • kube-state-metrics: kube-state-metrics generiert Zustandsmetriken zu Ressourcenobjekten wie Deployment, Node und Pod, indem es auf den API-Server lauscht. Es sollte beachtet werden, dass kube-state-metrics lediglich Metrikdaten bereitstellt und speichert sie nicht. Diese Metrikdaten, sodass wir Prometheus verwenden können, um diese Daten zu erfassen und zu speichern. Das Hauptaugenmerk liegt auf einigen Metadaten, die sich auf das Geschäft beziehen, wie z. B. Bereitstellung, Pod, Replikatstatus usw.

  • metrics-server: metrics-server ist auch ein clusterweites Tool zur Ressourcendatenaggregation und stellt einen Ersatz für Heapster dar. In ähnlicher Weise zeigt metrics-server nur Daten an und stellt keine Datenspeicherdienste bereit. Das Hauptanliegen ist die Implementierung von APIs zur Ressourcenmessung, wie z. B. CPU, Dateideskriptoren, Speicher, Anforderungslatenz und andere Indikatoren.

Grafana-Datenvisualisierung

Typ des Datenpanels

  • Zeitreihen: Datenvisualisierung von zeitbasierten Linien-, Flächen- und Balkendiagrammen;

  • Balkendiagramm: Visualisierung der Datenklassifizierung;

  • Stat: zur Datenvisualisierung im Zusammenhang mit Datenstatistiken;

  • Messgerät: eine Visualisierung, die den aktuellen Wert im Verhältnis zu den minimalen und maximalen Werten zeigt;

  • Tabelle: Der Dateninhalt wird im Tabellenlayout angezeigt;

  • Kreisdiagramm: Visualisierung des Bereichs Kreisdiagramm;

  • Heatmap: Zeigt die Verteilung der Werte an.

Prometheus-Hochverfügbarkeit

Verfügbarkeitsszenario

In Prometheus wird eine Instanz, wenn sie auflegt, automatisch aus dem LB entfernt, außerdem hat sie die Funktion des Lastausgleichs, was den Druck auf Prometheus verringern kann. Dieser Modus hat jedoch offensichtliche Mängel, das heißt, er erfüllt nicht die Probleme der Datenkonsistenz und -persistenz.Da Prometheus eine Pull-Methode ist, können die erfassten Werte nicht garantiert werden, selbst wenn mehrere Instanzen dieselben Überwachungsindikatoren erfassen konsistent. Darüber hinaus wird es im tatsächlichen Verwendungsprozess einige Probleme mit Netzwerkverzögerungen geben, sodass das Problem der Dateninkonsistenz verursacht wird. Für Überwachungs- und Alarmszenarien ist jedoch im Allgemeinen keine starke Datenkonsistenz erforderlich, sodass diese Methode aus geschäftlicher Sicht akzeptabel ist. Das Prometheus-Verfügbarkeitsszenario eignet sich für Szenarien, in denen der Überwachungsumfang nicht groß ist und Überwachungsdaten nur für kurze Zeit gespeichert werden müssen.

Szenario Datenpersistenz

Nachdem Sie den Remote-Speicher für Prometheus konfiguriert haben, müssen Sie sich keine Gedanken mehr über Datenverlust machen, denn selbst wenn eine Prometheus-Instanz ausfällt oder Daten verloren gehen, können sie über die remote gespeicherten Daten wiederhergestellt werden.

föderierter Cluster

Wenn eine einzelne Promthues-Instanz eine große Anzahl von Erfassungsaufgaben nicht bewältigen kann, können Entwickler den föderierten Cluster-basierten Ansatz von Prometheus verwenden, um Überwachungsaufgaben auf verschiedene Prometheus-Instanzen aufzuteilen. Entwickler können verschiedene Arten von Erfassungsaufgaben zur Ausführung auf verschiedene Prometheus-Instanzen aufteilen und funktionales Sharding durchführen. Beispielsweise ist ein Prometheus für die Erfassung von Knotenindikatordaten verantwortlich, ein anderer Prometheus für die Erfassung von anwendungsbezogenen Überwachungsindikatordaten und schließlich der Daten der oberen Schicht werden durch einen Prometheus aggregiert.

Es sollte beachtet werden, dass, wenn die Anzahl der Ziele in einer einzelnen Sammelaufgabe zu groß ist, eine funktionale Partitionierung auf Instanzebene in Betracht gezogen werden kann. Teilen Sie die Überwachungsdatenerfassungsaufgaben verschiedener Instanzen einer Aufgabe auf verschiedene Prometheus-Instanzen auf.

Hochverfügbarkeitsarchitektur

  • Sidecar: Stellen Sie eine Verbindung zu Prometheus her und stellen Sie Prometheus dem Abfrage-Gateway (Querier/Query) für Echtzeitabfragen zur Verfügung und laden Sie Prometheus-Daten zur Langzeitspeicherung in den Cloud-Speicher hoch;

  • Abfrager/Abfrage: Implementiert die Prometheus-API und aggregiert Daten von zugrunde liegenden Komponenten (z. B. der Sidecar-Komponente Sidecar oder dem Speicher-Gateway Store Gateway);

  • Store Gateway: Verfügbarmachen von Dateninhalten im Cloud-Speicher;

  • Compactor: Komprimieren und Downsampling von Daten im Cloud-Speicher;

  • Lineal: Bewerten und alarmieren Sie Überwachungsdaten.

  • Abfrager/Abfrage: Implementiert die Prometheus-API und aggregiert Daten von zugrunde liegenden Komponenten (z. B. der Sidecar-Komponente Sidecar oder dem Speicher-Gateway Store Gateway);

  • Store Gateway: Verfügbarmachen von Dateninhalten im Cloud-Speicher;

  • Compactor: Komprimieren und Downsampling von Daten im Cloud-Speicher;

  • Empfänger: Holen Sie sich Daten von Prometheus' Remote-Write-WAL (Prometheus Remote Write-Ahead Log), stellen Sie sie bereit oder laden Sie sie in den Cloud-Speicher hoch;

  • Lineal: Bewerten und alarmieren Sie Überwachungsdaten

Vorteile von Thanos

Thanos ist eine auf Prometheus basierende Überwachungslösung mit Hochverfügbarkeits- (HA), Speicherpersistenz- und Multi-Cluster-Abfragefunktionen, die im Wesentlichen folgende Vorteile bietet:

  • Einheitlicher Abfrageeintrag: Unter Verwendung von Querier als einheitlicher Abfrageeintrag implementiert es die Abfrageschnittstelle und StoreAPI von Prometheus und kann Abfragedienste für andere Queriers bereitstellen. Während der Abfrage erhält es Indikatordaten von Sidecar und Store Gateway jeder Prometheus-Instanz. ;

  • Hohe Speicherplatznutzung: Jeder Prometheus selbst speichert keine Langzeitdaten, und Sidecar lädt die persistenten Datenblöcke von Prometheus in den Objektspeicher hoch. Der Compactor komprimiert regelmäßig die Langzeitdaten im Remote-Objektspeicher und bereinigt sie entsprechend der Abtastzeit, um Speicherplatz zu sparen;

  • Cross-Cluster-Abfrage: Wenn Sie die Abfrageergebnisse mehrerer Cluster kombinieren müssen, müssen Sie nur eine weitere Querier-Schicht über dem Querier jedes Clusters hinzufügen. Diese Art der Verschachtelung kann die Skalierung des Clusters unbegrenzt erweitern.

  • Horizontale Erweiterung: Wenn der Indikatorerfassungsdruck von Prometheus zu hoch ist, können Sie eine neue Prometheus-Instanz erstellen, den Scrape-Job in mehrere Prometheus aufteilen, und Querier aggregiert Ergebnisse aus mehreren Prometheus-Abfragen, wodurch der Druck auf einen einzelnen Prometheus verringert wird;

  • Hochverfügbarkeit: Querier ist ein zustandsloser Dienst, der von Natur aus horizontale Skalierung und Hochverfügbarkeit unterstützt. Store, Rule und Sidecar sind zustandsbehaftete Dienste, die auch eine hohe Verfügbarkeit im Fall einer Bereitstellung mit mehreren Kopien unterstützen, aber Datenredundanz erzeugen und Speicherplatz opfern müssen;

  • Deduplizierung von Abfragen: Jeder Datenblock hat ein bestimmtes Cluster-Label. Der Abfrager entfernt das Cluster-Label bei der Abfrage und führt die Sequenzen mit demselben Indexnamen und Label in zeitlicher Reihenfolge zusammen. Obwohl die Indikatordaten aus verschiedenen Erfassungsquellen stammen, reagieren sie nur auf ein Ergebnis statt auf mehrere Wiederholungen.

Open-Source-Vorteile

Heute verfügt Cloud Wisdom über die Open-Source-Datenvisualisierungs-Orchestrierungsplattform FlyFish. Durch die Konfiguration des Datenmodells werden den Benutzern Hunderte von visuellen Grafikkomponenten bereitgestellt, und ohne Codierung kann ein cooler visueller Großbildschirm erzielt werden, der ihren eigenen Geschäftsanforderungen entspricht. Gleichzeitig bietet FlyFish auch flexible Erweiterungsmöglichkeiten, unterstützt Komponentenentwicklung, benutzerdefinierte Funktionen und globale Ereignisse und andere Konfigurationen und kann eine effiziente Entwicklung und Bereitstellung für komplexe Bedarfsszenarien sicherstellen.

Klicken Sie auf den unten stehenden Adresslink und laden Sie alle ein, FlyFish ein Like zu geben und einen Stern zu senden. Beteiligen Sie sich an der Komponentenentwicklung und es warten mehr als 10.000 Yuan in bar auf Sie.

GitHub-Adresse: https://github.com/CloudWise-OpenSource/FlyFish

Gitee-Adresse: https://gitee.com/CloudWise/fly-fish

Geldleistung in Höhe von zehntausend Yuan: http://bbs.aiops.cloudwise.com/t/Activity

Wechat scannen, um den QR-Code unten zu identifizieren, beachten Sie [Flying Fish] Treten Sie der Flying Fish-Entwickleraustauschgruppe der AIOps-Community bei und kommunizieren Sie persönlich mit dem FlyFish-Projekt PMC~

{{o.name}}
{{m.name}}

Ich denke du magst

Origin my.oschina.net/yunzhihui/blog/5530977
Empfohlen
Rangfolge