Logbasierte Messwerte für Smart Home

1. Hinweis

Wie im Codelab Debugging für Smart Home erläutert, veröffentlichen wir Messwerte und Protokolle in Ihren Smart-Home-Projekten. Anhand von Messwerten können Sie feststellen, wo Probleme mit Ihrer Smart-Home-Aktion auftreten. Protokolle sind hilfreich, wenn Sie diese Probleme genauer untersuchen möchten.

848f483bfcd2997a.png

Neben den Messwerten, die wir für Ihr Projekt zur Verfügung stellen, können Sie auch eigene Messwerte mithilfe der logbasierten Messwerte aus Google Cloud generieren. So können Sie bestimmte Muster in Ihren Protokollen beobachten und Qualitätsprobleme effektiv beheben.

Voraussetzungen

Aufgaben in diesem Lab

  • Effektive Abfragen zum Filtern von Smart-Home-Fehlerprotokollen schreiben
  • Logbasierte Messwerte erstellen, um Messwerte aus Abfragen zu generieren
  • Diagramme und Dashboards aus protokollbasierten Messwerten für die Überwachung erstellen

2. Mit Protokollen arbeiten

Wie wir im Debugging des Smart-Home-Codelabs kurz erwähnt haben, ist die Arbeit mit Protokollen entscheidend für den Erfolg Ihres Projekts. In Google Cloud gibt es hervorragende Tools zum Überwachen und Analysieren von Protokollen. Mit dem Log-Explorer können Sie auf alle Logs zugreifen, die für Ihr Projekt verfügbar sind.

Auf Logs zugreifen

Melden Sie sich zuerst in Google Cloud an und wählen Sie Ihr Projekt aus. Rufen Sie den Log-Explorer über das Seitenmenü auf. Gehen Sie dazu zu Vorgänge > Logging > Log-Explorer. Nach dem Öffnen des Tools sollte diese Ansicht angezeigt werden:

78982d8b6d19b827.png

Der Log-Explorer besteht aus zwei Hauptbereichen: einem Bereich zum Erstellen von Abfragen (Query Builder) und einem Bereich, in dem die übereinstimmenden Ergebnisse angezeigt werden (Abfrageergebnisse).

Viele verschiedene Google-Komponenten schreiben standardmäßig Protokolle in Ihr Projekt. Wenn Sie die Protokolle Ihrer Smart-Home-Integration finden und verwenden möchten, müssen Sie benutzerdefinierte Abfragen schreiben.

Abfragen schreiben

Logs werden in Projekten unter einem Ressourcentyp veröffentlicht. Jeder Ressourcentyp steht für eine andere Plattform innerhalb von Google. Logs von der Smart-Home-Plattform sind für Ihr Projekt unter dem Ressourcentyp assistant_action_project verfügbar.

Außerdem wird allen Protokollen bei der Erstellung ein Schweregrad zugewiesen. Bei Smart-Home-Logs verwenden wir die Ebene ERROR für Logs, die Fehler und Ausnahmen enthalten, und die Ebene DEBUG für alle anderen Logs.

Im folgenden Beispiel schreiben wir eine Abfrage, um Logs zu filtern, die nur von unserer Plattform stammen und Fehler darstellen:

753bfe72a9f8e959.png

Wenn Sie die Abfrage fertiggestellt haben, klicken Sie auf die Schaltfläche Abfrage ausführen, um sie zu starten. Dadurch werden Fehler angezeigt, die von Ihrer Smart-Home-Integration stammen:

3ef42da5a6c322e1.png

Wie Sie sehen, sind in der letzten Stunde zu verschiedenen Zeiten mehrere Fehler aufgetreten. Jede Zeile steht für ein einzelnes Fehlerprotokoll. Sie können auch auf die einzelnen Protokolle klicken und verschachtelte Felder maximieren, um die darin enthaltenen Informationen zu sehen.

Histogramm verwenden

Der Log-Explorer bietet eine nützliche Histogrammfunktion, mit der Sie die Zeitverteilung der Logs sehen können, die mit Ihrer Abfrage übereinstimmen. Wenn Sie das Histogramm aktivieren möchten, klicken Sie oben rechts auf SEITENLAYOUT und setzen Sie ein Häkchen bei Histogramm.

10eaf1d204decf3c.png

Danach sehen Sie eine Verteilung der Logs, die Ihrer Abfrage entsprechen:

dd3410e65a83cf5d.png

Wie Sie im obigen Bild sehen, gibt es mehrere Fehler, die in der letzten Stunde vereinzelt aufgetreten sind. Sie bilden offenbar drei Cluster um 13:45, 14:00 und 14:15 Uhr. Mit einem Histogramm können Sie Muster erkennen, die nur anhand der Zeitstempelwerte schwer zu erkennen wären.

Derzeit unterscheidet die verwendete Abfrage nicht zwischen Protokollen und zeigt alle Fehler an, die von unserer Smart-Home-Integration stammen. Es gibt viele Situationen, in denen Sie zwischen Fehlern unterscheiden möchten, z. B. um Fehlermuster zu verfolgen, die von bestimmten Gerätetypen oder -merkmalen stammen. Dazu sehen wir uns das Erstellen erweiterter Abfragen an.

Erweiterte Abfragen

Wenn Sie sich ein Smart-Home-Ereignisprotokoll ansehen, sehen Sie verschiedene Felder, aus denen Sie Informationen abrufen können:

825c57c36800844e.png

action

  • trait:Vom Nutzer anvisierte Geräteeigenschaft (z. B. „An/Aus“, „Start/Stopp“, „Helligkeit“)
  • actionType:Detaillierter Status des Attributs (z. B. „An“, „Aus“, „Pausieren“, „Beenden“, „Fortsetzen“)

device

  • deviceType:Targeting auf den vom Nutzer ausgewählten Gerätetyp (z. B. Lampe, Schalter, Waschmaschine)

status

  • isSuccess:Gibt an, ob das Ergebnis der Aktion als erfolgreich gilt (wahr / falsch)
  • statusType:Statuscode für das Aktionsergebnis (bei Fehlern wird ein Fehlercode angezeigt)
  • externalDebugString:Debug-String für die Aktion (beschreibt den Fehler ausführlich)

Andere Felder

Es gibt auch zusätzliche Felder, aus denen Sie Informationen ableiten können:

  • requestId:Eine eindeutige ID, die mit der Anfrage verknüpft ist (von Google generiert)
  • executionType:Pfad, der von der Anfrage verwendet wird (gibt an, ob „Cloud“ oder „Local“)
  • latencyMsec:Die wahrgenommene Latenz für die Anfrage auf Google-Servern (in ms)
  • locale:Das Sprach-/Regionspaar, von dem die Anfrage gesendet wird (z. B. en-US oder fr-FR)

Mithilfe des Attributfelds aus der Liste oben ändern wir unsere Abfrage so, dass nur Fehler vom Attribut OnOff enthalten sind:

resource.type="assistant_action_project" AND severity=ERROR AND
jsonPayload.executionLog.executionResults.actionResults.action.trait="TRAIT_ON_OFF"

Nachdem wir die aktualisierte Abfrage ausgeführt haben, identifiziert das System die Protokolle und zeigt uns das entsprechende Ergebnis an:

76176d7a41962341.png

Bisher haben wir alle Abfragen manuell ausgeführt. So können Sie den Fehlerstatus schnell prüfen, aber nicht so gut die Änderungen der Fehlermuster im Zeitverlauf beobachten. Um diesen Ablauf zu automatisieren und Daten aus längeren Zeiträumen zu erfassen, erstellen wir logbasierte Messwerte.

3. Logbasierte Messwerte

Mit logbasierten Messwerten können Sie die Anzahl der Logs zählen, die im Zeitverlauf mit Ihren Abfragen übereinstimmen. So können Sie Muster in Ihren Protokollen erkennen und gute Einblicke in die zugrunde liegenden Probleme erhalten.

Logbasierten Messwert erstellen

Wenn Sie einen logbasierten Messwert erstellen möchten, rufen Sie Verwaltung > Logging > Logbasierte Messwerte auf. Daraufhin wird eine Liste der logbasierten Messwerte angezeigt, die bereits in Ihrem Projekt verfügbar sind. Wenn Sie auf die Schaltfläche MESSWERT ERSTELLEN klicken, wird der Bildschirm zum Erstellen des protokollbasierten Messwerts angezeigt:

296af6e7d8dcf6cf.png

Es gibt zwei Hauptmesswerttypen: Mit einem Zählermesswert wird die Anzahl der Protokolle gezählt, die mit Ihrer Abfrage übereinstimmen. Mit einem Verteilungsmesswert wird die zugrunde liegende Verteilung erfasst und statistische Vorgänge wie Mittelwert, Median und 95. Perzentil sind möglich.

Wenn Sie nach unten scrollen, sehen Sie einen Filterbereich, in den Sie Ihre Suchanfrage eingeben können.

f7f2093fa1bce2ac.png

Fügen Sie die Abfrage aus dem vorherigen Abschnitt in den Textbereich Filter erstellen ein.

​​resource.type="assistant_action_project" AND severity=ERROR AND
jsonPayload.executionLog.executionResults.actionResults.action.trait="TRAIT_ON_OFF"

Sie können auch auf die Schaltfläche LOGS IN DER VORANSEHEN klicken, um eine Kurzübersicht der bisherigen Logs aufzurufen, die Ihrem Filter entsprechen. Wenn Sie fertig sind, klicken Sie auf die Schaltfläche MESSWERT ERSTELLEN und fahren Sie mit dem nächsten Abschnitt fort.

Logbasierte Messwertdaten ansehen

Nachdem der logbasierte Messwert erstellt wurde, ist er auf der Seite „Logbasierte Messwerte“ im Abschnitt Benutzerdefinierte Messwerte verfügbar.

1b2c88c18533fbcd.png

Wählen Sie im Dreipunkt-Menü des logbasierten Messwerts die Option In Metrics Explorer ansehen aus, um die im logbasierten Messwert erfassten Daten aufzurufen:

54a836fdc3a666a3.png

Sobald ein neuer Fehler auftritt, wird er von unserem protokollbasierten Messwert erfasst und im Diagrammfenster im Metrics Explorer angezeigt.

Monitoring über benutzerdefinierte Dashboards

Sobald wir festgestellt haben, dass unser neuer protokollbasierte Messwert wie vorgesehen funktioniert, können wir diese Diagrammansicht in einem benutzerdefinierten Dashboard speichern. Klicken Sie dazu rechts oben im Metrics Explorer auf die Schaltfläche Diagramm speichern. Daraufhin werden Sie aufgefordert, einen Namen für das Diagramm einzugeben und das Dashboard auszuwählen, in dem Sie es speichern möchten:

52329085f841782e.png

Nachdem wir das Diagramm in einem Dashboard gespeichert haben, können wir von dort aus ganz einfach darauf zugreifen. Die Liste der für Ihr Projekt verfügbaren Dashboards finden Sie unter Verwaltung > Monitoring > Dashboards.

44961e7cb3663341.png

Wir haben unser Diagramm in einem Dashboard namens „Codelab Dashboard“ gespeichert. Wenn Sie es öffnen, wird die folgende Ansicht angezeigt:

f7e025c27f30f996.png

Wie Sie sehen, wird hier das Diagramm für den logbasierten Messwert zusammen mit den neu erfassten Daten angezeigt. Smart-Home-Logs werden in Echtzeit in Ihrem Projekt veröffentlicht. Sobald ein neuer Log verfügbar ist, wird er sofort in Ihrem protokollbasierten Messwert gezählt.

4. Glückwunsch

674c4f4392e98c1.png

Glückwunsch! Sie haben gelernt, wie Sie Abfragen in logbasierte Messwerte umwandeln und in benutzerdefinierten Dashboards für die Überwachung speichern.

Weiteres Vorgehen

Als Nächstes können Sie die folgenden Übungen ausprobieren und sich zusätzliche Ressourcen ansehen:

  • Im Leitfaden Verteilungsmesswerte erstellen erfahren Sie, wie Sie logbasierte Messwerte für numerische Felder wie die Latenz erstellen.
  • In der Beispielabfragebibliothek von Google Cloud finden Sie einige komplexe Filter, die Sie für logbasierte Messwerte verwenden können.