Verwendung generativer KI zur Problembehebung und Softwarezuverlässigkeit
HeimHeim > Nachricht > Verwendung generativer KI zur Problembehebung und Softwarezuverlässigkeit

Verwendung generativer KI zur Problembehebung und Softwarezuverlässigkeit

Jun 29, 2023

25. Juli 2023 von Dotan Horovits

In der schnelllebigen digitalen Landschaft von heute ist die Aufrechterhaltung der Verfügbarkeit und Leistung Ihrer Dienste, insbesondere bei Cloud-basierten und Online-Diensten, von entscheidender Bedeutung, um wettbewerbsfähig zu bleiben. Ausfallzeiten oder Latenzprobleme können Kunden abschrecken, insbesondere wenn ein Klick genügt, um zu einer konkurrierenden SaaS-Lösung zu wechseln. DevOps- und Site Reliability Engineering (SRE)-Teams stehen bei der Bearbeitung von Fehlern und Problemen ständig vor der Herausforderung, die mittlere Zeit bis zur Behebung (MTTR) zu minimieren. So wertvoll Suchmaschinen wie Google auch sind, die schiere Menge an verfügbaren Informationen kann die Suche nach den richtigen Lösungen zu einer zeitaufwändigen Aufgabe machen. Was wäre, wenn es eine Möglichkeit gäbe, diesen Prozess zu automatisieren und zu rationalisieren und so die Fehleruntersuchung intelligenter, zielgerichteter und effizienter zu gestalten?

Dieser Artikel führt Sie durch den Weg der Fehlerbeseitigung von der ersten unklaren Protokollzeile bis zur Identifizierung des darin verborgenen Problems. Wir werden das Problem mit mehreren Taktiken lösen, die letztendlich zum Einsatz generativer KI führen, um die MTTR zu reduzieren und präzise IT-Empfehlungen bereitzustellen. Diese Reise umfasst nützliche Maßnahmen und Prinzipien, die von DevOps-Teams angewendet werden können, und untersucht das Potenzial für die Anwendung generativer KI.

Stellen Sie sich Folgendes vor: Es erscheint eine Protokollzeile mit einer obskuren Fehlermeldung, und der erste Instinkt ist, bei Google nach dieser Meldung zu suchen, um mögliche Lösungen zu finden. Schließlich muss jemand anders auf ein ähnliches Problem gestoßen sein, oder? Allerdings kann die Fülle an Ressourcen und Suchergebnissen überwältigend sein. Die Suchergebnisse werden oft basierend auf der Website-Relevanz angezeigt, nicht unbedingt auf der Relevanz des Fehlers selbst. Dadurch wird wertvolle Zeit mit der Durchsicht unzähliger Suchergebnisse verschwendet, was dazu führt, dass es länger dauert, den Fehler zu verstehen und zu beheben. Für DevOps- und SRE-Teams, die für die Aufrechterhaltung der Systemstabilität verantwortlich sind, ist die Reduzierung der MTTR ein entscheidender Key Performance Indicator (KPI). Dies wirft die Frage auf: Wie können wir Automatisierung und künstliche Intelligenz nutzen, um den Suchprozess zu verbessern und die Fehlerbehebung zu beschleunigen?

Beim ersten Versuch unserer Organisation, diese Herausforderung anzugehen, konzentrierten wir uns auf die Nutzung von Crowdsourcing-Techniken, um relevantere Ergebnisse als die brutale Google-Suche zu erhalten. Darüber hinaus wollten wir den Prozess automatisieren und offline ausführen, damit wir im Falle eines Vorfalls nützliche Erkenntnisse liefern können, anstatt die Suche zu starten, wenn das System ausgefallen ist oder eine Fehlfunktion aufweist.

Der Ansatz umfasst eine Offline-Phase und eine Online-Phase. Die Offline-Phase umfasste die Analyse aller unserer aufgenommenen Protokolle und die Identifizierung allgemeiner Protokollmuster. Dadurch konnten wir auch zählen, wie oft dieses Muster in unserem System vorkam und wie verbreitet es ist. Anschließend haben wir relevante Technologieforen wie StackOverflow, Google Groups und Bing Groups nach relevanten Diskussionen zu diesen Protokollmustern durchsucht, die relevante Lösungen bieten könnten. Der nächste Schritt bestand darin, die Suchergebnisse nach Relevanz zu ordnen und die fünf relevantesten Links auszuwählen.

Die Offline-Phase führte zu einer Bibliothek bekannter Protokollmuster und für jedes einzelne zu einem kognitiven Einblick, der diese Links sowie zusätzliche Informationen wie den Schweregrad, die Häufigkeit des Auftretens dieses Musters in den Protokollen und das Datum des ersten Auftretens enthielt und zusätzliche Tags der beteiligten Technologien, Tools und Domänen.

Die Online-Phase erfolgt in Echtzeit, wenn neue Protokolle eingehen. Bei der Aufnahme des Protokolls wird es automatisch mit allen bekannten Mustern abgeglichen; Wenn es mit einem übereinstimmt, erhält es die kognitiven Erkenntnisse für dieses Muster. Das bedeutet, dass der DevOps-Ingenieur, sobald das problematische Protokoll eingeht, die Suchergebnisse und den Kontext bereits fokussiert und geordnet hat, um damit zu beginnen, was den Untersuchungsprozess beschleunigt.

Nachdem wir über unseren ursprünglichen Ansatz nachgedacht hatten, hatten wir eine Offenbarung. Große Sprachmodelle (LLMs) wie ChatGPT hatten bereits das Web durchsucht und eine große Menge an Informationen aufgenommen. Warum also nicht ihre Fähigkeiten nutzen und sie direkt um Erkenntnisse bitten? Die Idee war einfach: Lassen Sie die KI „die Beiträge für uns lesen“ und geben Sie uns Empfehlungen. Wir begannen mit der Formulierung spezifischer Fragen wie „Was könnten mögliche Fehler sein?“ und ging sogar noch einen Schritt weiter und forderte weitere Ermittlungsschritte. Die Umsetzung dieses scheinbar einfachen Ansatzes war jedoch mit eigenen Herausforderungen verbunden. Wir mussten eine Vorverarbeitung durchführen, bevor wir die generative KI befragten, und eine Nachverarbeitung der zurückgegebenen Antworten durchführen, um das zu erhalten, was wir erwartet hatten. Mal sehen, was dieser Prozess mit sich bringt.

Bevor ChatGPT (oder ein anderes generatives KI-Tool) um Hilfe gebeten wurde, waren mehrere vorbereitende Schritte erforderlich. Zuerst mussten wir eingehende Protokolle analysieren, Muster identifizieren und sie nach Schweregrad bewerten. Dadurch konnten wir die kritischsten Probleme priorisieren.

Zweitens mussten wir mithilfe von Prompt Engineering unsere Eingabeaufforderungen für die generative KI sorgfältig entwerfen und sicherstellen, dass wir unsere Fragen so formulieren, dass wir präzise und relevante Antworten erhalten. Unter Prompt Engineering versteht man das strategische Entwerfen effektiver Eingabeaufforderungen oder Anweisungen für Sprachmodelle, um genauere Antworten zu erzielen. Dabei müssen das Eingabeformat, der Kontext oder die Einschränkungen sorgfältig spezifiziert werden, um den Generierungsprozess des Modells zu steuern und genauere und gewünschtere Ergebnisse zu erzielen. Dies gilt für jeden Einsatz generativer KI und insbesondere für unseren Fall. Über die Genauigkeit hinaus hat uns das prompte Engineering dabei geholfen, das gewünschte Format und die Länge der Antwort so abzustimmen, dass sie zu dem Absatz „Zusammenfassung“ passt, den wir dem Benutzer angezeigt haben. Dadurch wurde sichergestellt, dass es weder zu lang noch zu kurz war, um aussagekräftige Erkenntnisse zu liefern.

Darüber hinaus haben wir große Sorgfalt darauf verwendet, die Abfragen zu bereinigen und alle sensiblen Daten zu entfernen, um Privatsphäre und Sicherheit zu gewährleisten. Dieser Schritt war besonders wichtig für diejenigen, die mit öffentlichen Diensten arbeiten, und verdeutlichte, wie wichtig es ist, die personenbezogenen Daten (PII) der Benutzer wie Namen, E-Mails, Telefonnummern, IP-Adressen oder GPS-Koordinaten zu schützen.

Nachdem diese Vorverarbeitung abgeschlossen war, haben wir die Eingabeaufforderung an die generative KI gesendet. Es ist wichtig zu beachten, dass öffentliche Dienste möglicherweise nicht immer verfügbar sind (da einige bei der Arbeit mit ChatGPT und anderen Diensten die Meldung „Dienst ist ausgelastet“ zurücksendeten), daher sollte die Automatisierung Verzögerungen berücksichtigen und bei Bedarf Wiederholungsversuche durchführen.

Da schließlich Antworten von der KI eingingen, war es wichtig, diese zu validieren. Wir haben eine Analyse durchgeführt und nicht relevante Antworten aus verschiedenen Bereichen herausgefiltert (schließlich ist ein Protokoll auch ein Produkt eines Baums, und Kafka ist auch ein Romanautor), um sicherzustellen, dass es keine anstößigen Inhalte oder irreführenden Informationen gab. Auch die semantische Integrität der Antworten wurde sorgfältig evaluiert.

Diese KI-Erkenntnisse haben sich als leistungsstarkes Tool zur Fehlerbehebung erwiesen und wir haben sie zu einem integralen Bestandteil unseres Service gemacht.

Diese Reise ist nicht einzigartig. Tatsächlich können DevOps-Teams ähnliche Maßnahmen für ihre eigenen Telemetriedaten anwenden, um ihre eigenen betrieblichen Arbeitsabläufe zu unterstützen. Diese Grundsätze, wie Datenbereinigung und -validierung, gelten sogar für andere Datentypen und Anwendungsfälle.

Abgelegt unter: AWS-Partnerartikel, Blogs, Geschäft mit DevOps, Continuous Delivery, DevOps und offene Technologien, Doin' DevOps. Markiert mit: devops, generative KI, großes Sprachmodell, LLM, mttr, Observability