„Änderungen an Azure-Diensten und der Azure-Plattform selbst sind unvermeidlich und nützlich, um eine kontinuierliche Bereitstellung von Updates, neuen Funktionen und Sicherheitsverbesserungen zu gewährleisten. Veränderungen sind jedoch auch eine Hauptursache für Service-Regressionen, die zu Zuverlässigkeitsproblemen beitragen können – für Hyperscale-Cloud-Anbieter, ja für jeden IT-Dienstleister. Daher ist es wichtig, solche Probleme während der Entwicklung und Bereitstellung so früh wie möglich zu erkennen, um die Auswirkungen auf das Kundenerlebnis zu minimieren. Im Rahmen unserer laufenden Steigerung der Zuverlässigkeit Blogserie, heute habe ich den Principal Program Manager gefragt Jian Zhang von unserem AIOps-Team, um vorzustellen, wie wir maschinelles Lernen zunehmend nutzen, um diese Änderungen zu minimieren und letztendlich die Zuverlässigkeit von Azure zu verbessern.“—Mark Russinovich, CTO, Azure


Dieser Beitrag enthält Beiträge der Principal Data Scientists Ken Hsieh und Ze Li, des Principal Data Scientist Managers Yingnong Dang und des Software Engineering Managers der Partnergruppe Murali Chintalapati.

In unserem früheren Blogbeitrag „Förderung sicherer Bereitstellungsverfahren” Cristina del Amo Casado beschrieb, wie wir Änderungen für die Produktion freigeben, sowohl für Code- als auch Konfigurationsänderungen, im gesamten Azurblau Plattform. Die Prozesse bestehen aus der schrittweisen Bereitstellung von Änderungen mit Phasen, die genügend Backzeit enthalten, um die Erkennung der meisten Regressionen, die während des Tests übersehen wurden, in kleinem Maßstab zu ermöglichen.

Die kontinuierliche Überwachung von Integritätsmetriken ist ein grundlegender Bestandteil dieses Prozesses, und hier spielt AIOps eine entscheidende Rolle – es ermöglicht die Erkennung von Anomalien, um Warnungen auszulösen und die Automatisierung von Korrekturmaßnahmen wie das Stoppen der Bereitstellung oder das Initiieren von Rollbacks.

Im folgenden Beitrag stellen wir vor, wie KI und maschinelles Lernen verwendet werden, um DevOps-Ingenieure zu stärken, den Azure-Bereitstellungsprozess in großem Maßstab zu überwachen, Probleme frühzeitig zu erkennen und Rollout- oder Rollback-Entscheidungen basierend auf dem Umfang und der Schwere der Auswirkungen zu treffen.

Warum AIOps für eine sichere Bereitstellung

Wie definiert durch Gärtner, AIOps verbessert den IT-Betrieb durch Erkenntnisse, die Big Data, maschinelles Lernen und Visualisierung kombinieren, um IT-Betriebsprozesse zu automatisieren, einschließlich Ereigniskorrelation, Anomalieerkennung und Kausalitätsbestimmung. In unserem früheren Beitrag “Verbesserung der Azure-Servicequalität mit künstlicher Intelligenz: AIOps,” teilten wir unsere Vision und einige der Möglichkeiten, wie wir AIOps bereits in der Praxis einsetzen, einschließlich der sicheren Bereitstellung. AIOps ist gut geeignet, um Fehler während der Bereitstellung zu erkennen, insbesondere aufgrund der Komplexität von dienstübergreifenden Abhängigkeiten und der Größe von Hyperscale-Cloud-Services und die Vielfalt der unterstützten Kundenszenarien.

Phasenweise Rollouts und angereicherte Integritätssignale werden verwendet, um die Überwachung und Entscheidungsfindung im Bereitstellungsprozess zu erleichtern, aber die Menge an Signalen und die Komplexität der Bereitstellungsentscheidungen übersteigen das, was jeder Mensch vernünftigerweise über Tausende von sich ständig weiterentwickelnden Servicekomponenten nachdenken könnte , die mehr als 200 Rechenzentren in mehr als 60 Regionen umfasst. Einige latente Probleme treten erst nach mehreren Tagen nach ihrer Bereitstellung auf, und globale Probleme, die sich über verschiedene Cluster erstrecken, sich jedoch nur geringfügig in einem einzelnen Cluster manifestieren, sind mit einem lokalen Watchdog nur schwer zu erkennen. Während die lose Kopplung die unabhängige Bereitstellung der meisten Dienstkomponenten ermöglicht, können ihre Bereitstellungen komplizierte Auswirkungen aufeinander haben. Eine einfache Änderung an einem vorgelagerten Dienst könnte sich beispielsweise möglicherweise auf einen nachgelagerten Dienst auswirken, wenn sie den Vertrag von API-Aufrufen zwischen den beiden Diensten bricht.

Diese Herausforderungen erfordern automatisierte Überwachung, Anomalieerkennung und Rollout-Impact-Assessment-Lösungen, um schnelle Bereitstellungsentscheidungen zu erleichtern.

Abbildung 1: Sicherer Einsatz von Gandalf

Gandalf Safe Deployment Service: Eine AIOps-Lösung

Um sich der oben beschriebenen Herausforderung zu stellen, hat das Azure Compute Insights-Team den sicheren Bereitstellungsdienst „Gandalf“ entwickelt – ein End-to-End-, kontinuierliches Überwachungssystem für eine sichere Bereitstellung. Wir betrachten diesen Teil der Gandalf AIOps-Lösungssuite, die einige andere intelligente Überwachungsdienste umfasst. Der Codename Gandalf wurde von dem Protagonisten aus Der Herr der Ringe inspiriert, wie in Abbildung 1 gezeigt, er dient als globaler Watchdog, der basierend auf den gesammelten Signalen intelligente Einsatzentscheidungen trifft. Es arbeitet mit lokalen Watchdogs, sicheren Bereitstellungsrichtlinien und Präqualifikationstests zusammen, um die Bereitstellungssicherheit und -geschwindigkeit zu gewährleisten.

Wie in Abbildung 2 dargestellt, überwacht das Gandalf-System reichhaltige und repräsentative Signale von Azure, führt Anomalieerkennung und Korrelation durch und leitet dann Erkenntnisse ab, um die Entscheidungsfindung und Aktionen bei der Bereitstellung zu unterstützen.

Gandalf-Systemübersicht – zeigt Datenquellen, das Erkennungs-/Korrelations-/Entscheidungsmodul, die Ergebnisorchestrierung, Verbraucher und das Bereitstellungsmodul.

Abbildung 2: Gandalf-Systemübersicht

Datenquellen

Gandalf überwacht Signale über Leistung, Fehler und Ereignisse hinweg, wie unten beschrieben. Es verarbeitet die Daten vor, um sie um ein einheitliches Datenschema herum zu strukturieren, um nachgelagerte Datenanalysen zu unterstützen. Es nutzt auch einige andere Analysedienste in Azure für Integritätssignale, darunter unseren Dienst zur Kategorisierung von Fehlern virtueller Maschinen und den Dienst zur Verarbeitung der Fehlerzuordnung in Echtzeit. Wenn neue Servicekomponenten integriert werden, ist eine Signalregistrierung bei Gandalf erforderlich, um eine vollständige Abdeckung sicherzustellen.

  • Leistungsdaten: Gandalf überwacht Leistungsindikatoren, CPU-Auslastung, Speicherauslastung und mehr – alles für einen umfassenden Überblick über die Leistungs- und Ressourcenverbrauchsmuster gehosteter Dienste.
  • Fehlersignale: Gandalf überwacht sowohl die Hosting-Umgebung der virtuellen Maschinen des Kunden (Datenebene) als auch Dienste auf Mandantenebene (Steuerungsebene). Für die Datenebene überwacht es Fehlersignale wie Betriebssystemabstürze, Knotenfehler und Neustarts, um den Zustand der Hosting-Umgebung der VM zu bewerten. Gleichzeitig überwacht es Fehlersignale der Steuerungsebene wie API-Aufruffehler, um den Zustand der Dienste auf Mandantenebene zu bewerten.
  • Ereignisse aktualisieren: Zusätzlich zu den gesammelten Telemetriedaten hält Gandalf auch die Bereitstellungsereignisse am Puls der Zeit, die den Bereitstellungsfortschritt und die Bereitstellungsprobleme melden.

Erkennung, Korrelation und Entscheidung

Gandalf wertet den Auswirkungsbereich der Bereitstellung aus – zum Beispiel die Anzahl der betroffenen Knoten, Cluster und Kunden –, um anhand von dynamisch trainierten Entscheidungskriterien eine Go/No-Go-Entscheidung zu treffen. Um Geschwindigkeit und Abdeckung auszugleichen, verwendet Gandalf eine Architektur mit Streaming- und Batch-Analyse-Engines.

Gandalf-Korrelationsprozess (Ermitteln, welche Rollouts verdächtig sind) und Entscheidungsprozess (Bewertung der Auswirkungen der beschuldigten Komponenten/Fehler auf den Kunden).

Abbildung 3: Gandalf-Anomalieerkennung und Korrelationsmodus

Abbildung 3 zeigt eine Übersicht über das Gandalf Machine Learning (ML)-Modell. Es besteht aus zwei Teilen – Anomalieerkennungs- und Korrelationsprozess (um verdächtige Bereitstellungen zu identifizieren) und einem Entscheidungsprozess (um die Auswirkungen auf den Kunden zu bewerten).

Anomalieerkennung und Korrelationsprozess

Um eine präzise Erkennung zu gewährleisten, leitet Gandalf Fehlersignaturen aus Eingangssignalen ab, die verwendet werden können, um den Fehler eindeutig zu identifizieren. Dann erkennt es basierend auf dem Auftreten der Fehlersignatur.

In großen Cloud-Systemen wie Azure ist eine einfache schwellenwertbasierte Erkennung nicht praktikabel, sowohl wegen der dynamischen Natur der gehosteten Systeme und Workloads als auch wegen der schieren Menge an Fehlersignaturen. Gandalf wendet maschinelle Lerntechniken an, um Basiseinstellungen basierend auf historischen Daten automatisch zu schätzen und kann die Einstellung bei Bedarf durch Training anpassen.

Wenn Gandalf eine Anomalie erkennt, korreliert es den beobachteten Fehler mit Bereitstellungsereignissen und bewertet den Umfang der Auswirkungen. Dies hilft, Fehler herauszufiltern, die durch Nichtbereitstellungsgründe wie zufällige Firmware-Probleme verursacht werden.

Da oft mehrere Systemkomponenten gleichzeitig eingesetzt werden, wird ein Vote-Veto-Mechanismus verwendet, um die Beziehung zwischen den Fehlern und den Rollout-Komponenten herzustellen. Darüber hinaus werden zeitliche und räumliche Korrelationen verwendet, um die fehlerhaften Komponenten zu identifizieren. Es wird davon ausgegangen, dass das Fehleralter, das die Zeit zwischen dem Rollout und der Erkennung der Fehlersignatur misst, einen stärkeren Fokus auf neue Rollouts als auf alte ermöglicht, da neu beobachtete Fehler mit geringerer Wahrscheinlichkeit durch den alten Rollout ausgelöst werden.

Auf diese Weise kann Gandalf frühzeitig eine Anomalie erkennen, die zu potenziellen Rückschritten im Kundenerlebnis führen würde – bevor sie weitreichende Auswirkungen auf den Kunden hat. Weitere Informationen finden Sie in unserem veröffentlichten Papier „Gandalf: Ein intelligenter End-to-End-Analysedienst für die sichere Bereitstellung in einer großen Cloud-Infrastruktur.“

Entscheidungsprozess

Schließlich bewertet Gandalf den Auswirkungsbereich der Bereitstellung, z. B. die Anzahl der betroffenen Cluster/Knoten/Kunden, und trifft schließlich eine Entscheidung „go/no-go“. Es ist erwähnenswert, dass Gandalf Entwicklern ermöglicht, die Gewichtungszuweisung von Signalen basierend auf ihrer Erfahrung anzupassen. Auf diese Weise kann es Domänenwissen von menschlichen Experten integrieren, um seine Machine-Learning-Lösungen zu ergänzen.

Ergebnisorchestrierung

Um Geschwindigkeit und Abdeckung auszugleichen, verwendet Gandalf sowohl Streaming- als auch Batch-Verarbeitung von eingehenden Signalen. Die Streaming-Verarbeitung verwendet Daten aus Azure Data Explorer, einer Cloudspeicherlösung, die Analysen mit hoher Geschwindigkeit unterstützt. Die Streaming-Verarbeitung wird verwendet, um Fehlersignale zu verarbeiten, die 1 Stunde vor und nach jeder Bereitstellung in jedem Knoten auftreten, und führt einfache Analysealgorithmen für eine schnelle Reaktion aus.

Die Stapelverarbeitung verbraucht Daten aus Cosmos, einem Hadoop-ähnlichen Dateisystem, das extrem große Datenmengen unterstützt. Es wird verwendet, um Fehler über ein größeres Zeitfenster (in der Regel einen Zeitraum von 30 Tagen) mit fortschrittlichen Algorithmen zu analysieren.

Sowohl die Stream- als auch die Batch-Verarbeitung werden inkrementell in 5-Minuten-Intervallen ausgeführt. Im Allgemeinen werden die eingehenden Telemetriesignale von Gandalf sowohl in Kusto gestreamt als auch stündlich/täglich in Cosmos gespeichert. Bei derselben Datenquelle kann es gelegentlich zu inkonsistenten Ergebnissen aus der Verarbeitungspipeline kommen. Dies ist beabsichtigt, da die Stapelverarbeitung fundiertere Entscheidungen trifft und latente Probleme abdeckt, die der Schnell-/Streaming-Prozess nicht erkennen kann.

Transformation der Bereitstellungserfahrung

Das Gandalf-System ist jetzt gut in unseren DevOps-Workflow in Azure integriert und wird weithin für die Überwachung des Bereitstellungszustands in der gesamten Flotte übernommen. Es hilft nicht nur, schlechte Rollouts so schnell wie möglich zu verhindern, sondern hat auch die Erfahrung der Ingenieure und Release-Manager bei der Bereitstellung von Softwareänderungen verändert – von der Suche nach verstreuten Beweisen zur Verwendung einer einzigen Quelle der Wahrheit, von Ad-hoc-Diagnose zu interaktiven using Fehlerbehebung – und dabei haben sich auch viele der Ingenieure, die mit Gandalf interagieren, ihre Meinung dazu geändert und sich von Skeptikern zu Fürsprechern entwickelt.

In vielen Azure-Diensten ist Gandalf zur Standardbasis für alle Release-Validierungen geworden, und es ist spannend zu hören, wie sehr unsere Bereitschaftstechniker Gandalf vertrauen.

Zusammenfassung

In diesem Beitrag haben wir die Gandalf Safe Deployment Service, ein intelligenter End-to-End-Analysedienst für die sichere Bereitstellung von Azure-Diensten. Durch hochmoderne Anomalieerkennung, spezielle und zeitliche Korrelation sowie Ergebnisorchestrierung ermöglicht der sichere Bereitstellungsservice von Gandalf DevOps-Ingenieuren, Go/No-Go-Entscheidungen genau und mit der Geschwindigkeit zu treffen, die von hyperskalierten Cloud-Plattformen wie Azurblau.

Wir werden weiterhin in die Anwendung von KI- und Machine-Learning-basierten Technologien investieren, um das Cloud-Service-Management zu verbessern und letztendlich das Kundenerlebnis weiter zu verbessern. Suchen Sie nach uns, um mehr über unsere AIOps-Lösungen zu teilen, einschließlich Pre-Production-Analysen, die uns helfen, die Qualität weiter nach links zu schieben.

.



Source link

Leave a Reply