Logbasierte Messwerte für Smart Home

1. Hinweis

Wie bereits im Codelab Fehlerbehebung im Smart Home behandelt, veröffentlichen wir Messwerte und Protokolle in Ihren Smart-Home-Projekten. Anhand von Messwerten kannst du feststellen, wo deine Smart-Home-Aktion Probleme hat. Die Protokolle sind für eine detaillierte Lösung dieser Probleme hilfreich.

Logo: 848f483bfcd2997a.png

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

Voraussetzungen

Lerninhalte

  • Effektive Abfragen zum Filtern von Smart-Home-Fehlerprotokollen schreiben
  • Logbasierte Messwerte zum Generieren von Messwerten aus Ihren Abfragen erstellen
  • Diagramme und Dashboards aus logbasierten Messwerten für das Monitoring erstellen

2. Mit Logs arbeiten

Wie wir bereits im Artikel Smart-Home-Codelab debuggen behandelt haben, ist die Arbeit mit Protokollen der Schlüssel für den Erfolg Ihres Projekts. Auf der Google Cloud Platform stehen Ihnen großartige Tools zum Überwachen und Analysieren Ihrer Logs zur Verfügung. Mit dem Log-Explorer können Sie auf alle für Ihr Projekt verfügbaren Logs zugreifen.

Auf Logs zugreifen

Um auf Ihre Protokolle zuzugreifen, müssen Sie sich zuerst bei der Google Cloud Platform anmelden und Ihr Projekt auswählen. Rufen Sie im seitlichen Menü den Log-Explorer auf. Klicken Sie dazu auf Vorgänge > Logging > Log-Explorer. Nach dem Öffnen des Tools sollten Sie folgende Ansicht sehen:

78982d8b6d19b827.png

Der Log-Explorer besteht aus zwei Hauptabschnitten: einem Bereich, in den Ihre Abfragen oben geschrieben werden (Query Builder), und einem Bereich, in dem die übereinstimmenden Ergebnisse angezeigt werden (Abfrageergebnisse).

Viele verschiedene Komponenten in Google schreiben standardmäßig Logs in Ihr Projekt. Damit Sie die Protokolle finden und damit arbeiten können, die von Ihrer Smart-Home-Integration stammen, müssen Sie benutzerdefinierte Abfragen erstellen.

Abfragen schreiben

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

Außerdem wird allen Logs bei der Erstellung eine Wichtigkeitsstufe zugewiesen. Bei Smart-Home-Protokollen verwenden wir die Ebene ERROR für Logs, die Fehler und Ausnahmen darstellen, und die DEBUG-Ebene für alles andere.

Im folgenden Beispiel schreiben wir eine Abfrage zum Filtern von Logs, die ausschließlich von unserer Plattform stammen und Fehler darstellen:

753bfe72a9f8e959.png

Wenn Sie mit dem Schreiben der Abfrage fertig sind, klicken Sie auf die Schaltfläche Abfrage ausführen, um die Abfrage zu starten. Es sollten Fehler auftreten, die von Ihrer Smart-Home-Integration verursacht werden:

Logo: 3ef42da5a6c322e1.png

Wie Sie sehen, gibt es eine Reihe von Fehlern, die in der letzten Stunde zu verschiedenen Zeitpunkten aufgetreten sind. Jede Zeile steht für ein einzelnes Fehlerprotokoll. Sie können weiter auf die einzelnen Logs klicken und verschachtelte Felder maximieren, um die darin enthaltenen Informationen anzuzeigen.

Histogramm verwenden

Der Log-Explorer bietet eine nützliche Histogrammfunktion, mit der Sie die Zeitverteilung von Logs sehen können, die Ihrer Abfrage entsprechen. Um das Histogramm zu aktivieren, klicken Sie oben rechts auf SEITENLAYOUT und dann auf Histogramm.

Logo: 10eaf1d204decf3c.png

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

dd3410e65a83cf5d.png

Wie Sie in der Abbildung oben sehen können, sind mehrere Fehler in der letzten Stunde aufgetreten. Sie bilden etwa zwischen 13:45, 14:00 und 14:15 Uhr drei Cluster. Das Histogramm kann Ihnen helfen, Muster zu erkennen, die schwer zu erkennen wären, indem Sie nur die Zeitstempelwerte überprüfen.

Im Moment unterscheidet die von uns verwendete Abfrage nicht zwischen Protokollen und zeigt uns alle Fehler an, die auf unsere Smart-Home-Integration zurückzuführen sind. In vielen Fällen möchten Sie möglicherweise zwischen Fehlern unterscheiden, z. B. um Fehlermuster zu verfolgen, die von bestimmten Gerätetypen oder Merkmalen stammen. Zu diesem Zweck schauen wir uns das Schreiben erweiterter Abfragen an.

Erweiterte Abfragen

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

825c57c36800844e.png

action

  • trait:Targeting auf Geräte-Trait durch den Nutzer (z. B. Ein/Aus, StartStop, Helligkeit)
  • actionType: Detaillierungsgrad des Merkmals (z. B. „Ein“, „Aus“, „Pause“, „Stopp“, „Fortsetzen“).

device

  • deviceType:Targeting auf den Gerätetyp des Nutzers (z. B. Licht, Schalter, Waschmaschine)

status

  • isSuccess: Gibt an, ob das Ergebnis der Aktion als erfolgreich gilt (wahr / falsch)
  • statusType: Statuscode für das Aktionsergebnis (zeigt einen Fehlercode an, falls die Aktion nicht erfolgreich war)
  • externalDebugString: Debug-String für die Aktion (detaillierte Beschreibung des Fehlers)

Andere Felder

Außerdem gibt es weitere 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 lokal)
  • latencyMsec: Wahrgenommene Latenz der Anfrage auf Google-Servern (in ms)
  • locale:Aus welcher Sprache/Region die Anfrage gesendet wird (z. B. en-US, fr-FR)

Wenn wir das Trait-Feld aus der Liste oben verwenden, ändern wir unsere Abfrage so, dass nur Fehler berücksichtigt werden, die aus dem Trait OnOff stammen:

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

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

76176d7a41962341.png

Bisher haben wir alle unsere Abfragen manuell durchgeführt. Das ist eine gute Möglichkeit, den Status der Fehler schnell zu überprüfen, aber es geht nicht so sehr um die Verschiebung von Fehlermustern im Zeitverlauf. Um diesen Ablauf zu automatisieren und Daten aus längeren Zeiträumen zu erfassen, erstellen wir logbasierte Messwerte.

3. Logbasierte Messwerte

Wenn Sie die Anzahl der Logs ermitteln möchten, die im Laufe der Zeit Ihren Abfragen entsprechen, können Sie logbasierte Messwerte verwenden. So können Sie Muster und in Ihren Logs erkennen und aussagekräftige Informationen zu den zugrunde liegenden Problemen erhalten.

Logbasierten Messwert erstellen

Rufen Sie zum Erstellen eines logbasierten Messwerts Vorgänge > Logging > Logbasierte Messwerte auf. Dadurch wird die Liste der logbasierten Messwerte angezeigt, die bereits für Ihr Projekt verfügbar sind. Wenn Sie auf die Schaltfläche MESSWERT ERSTELLEN klicken, wird der Bildschirm zum Erstellen logbasierter Messwerte angezeigt:

296af6e7d8dcf6cf.png

Es gibt zwei Hauptmesswerttypen: Ein Zählermesswert zählt die Anzahl der Logs, die Ihrer Abfrage entsprechen. Ein Verteilungsmesswert erfasst die zugrunde liegende Verteilung und ermöglicht statistische Operationen wie Mittelwert, Medianwert und 95. Perzentil.

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

f7f2093fa1bce2ac.png

Wir fügen 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 VORSCHAU ANSEHEN klicken, um eine Schnellansicht der bisherigen Logs zu sehen, die Ihrem Filter entsprechen. Wenn Sie fertig sind, können Sie auf die Schaltfläche MESSWERT ERSTELLEN klicken und mit dem nächsten Abschnitt fortfahren.

Logbasierte Messwertdaten ansehen

Der logbasierte Messwert ist jetzt im Bereich Benutzerdefinierte Messwerte auf der Seite „Logbasierte Messwerte“ verfügbar.

1b2c88c18533fbcd.png

Wählen Sie im Menü für den logbasierten Messwert (drei Punkte) die Option Im Metrics Explorer ansehen aus, um die entsprechenden Daten zu sehen:

54a836fdc3a666a3.png

Ein neuer Fehler wird in unserem logbasierten Messwert erfasst und im Diagrammfenster des Metrics Explorer angezeigt.

Monitoring über benutzerdefinierte Dashboards

Sobald wir feststellen, dass unser neuer logbasierter Messwert wie vorgesehen funktioniert, ist es an der Zeit, diese Diagrammansicht in einem benutzerdefinierten Dashboard zu speichern. Klicken Sie dazu oben rechts im Metrics Explorer auf die Schaltfläche Diagramm speichern. Daraufhin werden Sie aufgefordert, dem Diagramm einen Namen zu geben und das Dashboard auszuwählen, in dem Sie speichern möchten:

52329085f841782e.png

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

44961e7cb3663341.png

Wir haben unser Diagramm in einem Dashboard namens „Codelab Dashboard“ gespeichert. Wenn du sie öffnest, wird folgende Ansicht angezeigt:

f7e025c27f30f996.png

Das Diagramm für den logbasierten Messwert wird hier zusammen mit den neu erfassten Daten angezeigt. Smart-Home-Protokolle werden in Echtzeit für Ihr Projekt veröffentlicht. Wenn ein neues Log verfügbar ist, wird es sofort für den logbasierten Messwert gezählt.

4. Glückwunsch

674c4f4392e98c1.png

Glückwunsch! Sie haben gelernt, wie Sie Ihre Abfragen in logbasierte Messwerte umwandeln und zu Monitoringzwecken in benutzerdefinierten Dashboards speichern.

Weiteres Vorgehen

Bauen Sie auf diesem Codelab auf und versuchen Sie es mit den folgenden Übungen und zusätzlichen Ressourcen:

  • In der Anleitung 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 der komplexen Filter, die Sie für logbasierte Messwerte verwenden können.