Wskaźniki oparte na logach dotyczące inteligentnego domu

1. Zanim zaczniesz

Jak już wspomnieliśmy w ramach warsztatów dotyczących kodu Debugowanie inteligentnego domu, publikujemy dane i dzienniki dotyczące Twoich projektów inteligentnego domu. Dane pomagają określić, gdzie występują problemy z działaniem akcji inteligentnego domu, a dzienniki są przydatne, gdy chcesz dokładniej przyjrzeć się tym problemom.

848f483bfcd2997a.png

Oprócz danych, które udostępniamy Twojemu projektowi, możesz też generować własne dane za pomocą danych opartych na logach z Google Cloud. Dzięki temu możesz monitorować określone wzorce w logach i skutecznie debugować problemy z jakością.

Wymagania wstępne

Czego się nauczysz

  • Jak pisać skuteczne zapytania do filtrowania dzienników błędów urządzeń Smart Home
  • Jak tworzyć wskaźniki oparte na logach, aby generować dane na podstawie zapytań
  • Jak tworzyć wykresy i panele na podstawie wskaźników opartych na logach do monitorowania

2. Praca z logami

Jak krótko wspomnieliśmy w sekcji poświęconej debugowaniu w ramach Codelab na potrzeby inteligentnego domu, praca z dziennikami jest kluczowa dla powodzenia projektu. W Google Cloud dostępne są świetne narzędzia do monitorowania i analizowania logów. Aby uzyskać dostęp do wszystkich logów dostępnych w projekcie, możesz użyć eksploratora logów.

Uzyskiwanie dostępu do dzienników

Aby uzyskać dostęp do logów, musisz najpierw zalogować się w Google Cloud i wybrać swój projekt. Otwórz Eksploratora logów, klikając w menu bocznym Operacje > Logowanie > Eksplorator logów. Po otwarciu narzędzia zobaczysz ten widok:

78982d8b6d19b827.png

Eksplorator logów składa się z 2 głównych sekcji: sekcji do wpisywania zapytań u góry (Kreator zapytań) oraz obszaru do wyświetlania pasujących wyników (Wyniki zapytania).

Wiele różnych komponentów Google domyślnie zapisuje logi w Twoim projekcie. Aby znajdować dzienniki pochodzące z integracji z urządzeniami Smart Home i z nimi pracować, musisz napisać zapytania niestandardowe.

Tworzenie zapytań

Logi są publikowane w projektach w ramach typu zasobu. Każdy typ zasobu reprezentuje inną platformę w Google. Logi pochodzące z platformy Smart Home są dostępne w projekcie pod typem zasobu assistant_action_project.

Poza tym podczas tworzenia wszystkich logów przypisuje się ich poziom ważności. W przypadku dzienników urządzeń Smart Home używamy poziomu ERROR dla dzienników przedstawiających błędy i wyjątki oraz poziomu DEBUG dla wszystkich innych dzienników.

W tym przykładzie napiszemy zapytanie, aby odfiltrować dzienniki pochodzące tylko z naszej platformy, które zawierają błędy:

753bfe72a9f8e959.png

Po utworzeniu zapytania kliknij przycisk Uruchom zapytanie, aby je wykonać. Powinien on wyświetlić błędy pochodzące z integracji z inteligentnym domem:

3ef42da5a6c322e1.png

Jak widać, w ciągu ostatniej godziny wystąpiła pewna liczba błędów w różnych momentach. Każda linia reprezentuje pojedynczy dziennik błędów. Możesz też kliknąć poszczególne dzienniki i rozwinąć osadzone pola, aby wyświetlić zawarte w nich informacje.

Korzystanie z histogramu

Eksplorator logów udostępnia przydatną funkcję histogramu, która pozwala wyświetlić rozkład czasowy logów pasujących do Twojego zapytania. Aby włączyć histogram, w prawym górnym rogu kliknij UKŁAD STRONY i zaznacz pole Histogram, aby włączyć tę funkcję.

10eaf1d204decf3c.png

Po włączeniu tej opcji zobaczysz rozkład logów pasujących do Twojego zapytania:

dd3410e65a83cf5d.png

Jak widać na powyższym obrazie, w ciągu ostatniej godziny wystąpiło kilka błędów, które są rzadko rozproszone. Wygląda na to, że tworzą 3 grupy około 13:45, 14:00 i 14:15. Histogram może pomóc w wykrywaniu wzorców, które trudno dostrzec, sprawdzając tylko wartości sygnatury czasowej.

Obecnie używane przez nas zapytanie nie rozróżnia dzienników i wyświetla wszystkie błędy pochodzące z integracji z urządzeniami Smart Home. W wielu przypadkach warto rozróżniać błędy, np. aby śledzić wzorce błędów pochodzących z określonych typów urządzeń lub cech. W tym celu przyjrzymy się pisaniu zaawansowanych zapytań.

Zapytania zaawansowane

Gdy przejrzysz dziennik zdarzeń inteligentnego domu, zobaczysz różne pola, z których możesz uzyskać informacje:

825c57c36800844e.png

action

  • trait: kierowanie na cechę urządzenia przez użytkownika (np. Włącz/wyłącz, Start/Stop, Jasność).
  • actionType: stan szczegółowy cechy (np. Włączona, Wyłączona, Wstrzymana, Zatrzymana, Wznowiona).

device

  • deviceType: kierowanie na typ urządzenia według użytkownika (np. światło, przełącznik, pralka).

status

  • isSuccess: czy wynik działania jest uznawany za udany (prawda / fałsz).
  • statusType: kod stanu działania (w przypadku niepowodzenia zawiera kod błędu)
  • externalDebugString: ciąg znaków debugowania dla działania (opisuje błąd szczegółowo)

Inne pola

Dostępne są też dodatkowe pola, z których możesz pozyskiwać informacje:

  • requestId: unikalny identyfikator powiązany z żądaniem (wygenerowany przez Google)
  • executionType: ścieżka używana przez żądanie (wskazuje, czy jest to usługa w chmurze czy lokalna)
  • latencyMsec: odczuwane opóźnienie żądania na serwerach Google (w ms)
  • locale: para język/region, z której wysyłana jest prośba (np. pl-PL, en-US)

Korzystając z pola atrybutu z powyżej wymienionej listy, zmodyfikujemy nasze zapytanie, aby uwzględnić tylko błędy pochodzące z atrybutu OnOff w ten sposób:

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

Po wykonaniu zaktualizowanego zapytania system rozpoznaje dzienniki i wyświetla odpowiednie wyniki:

76176d7a41962341.png

Do tej pory wszystkie zapytania były wykonywane ręcznie. Jest to świetny sposób na szybkie sprawdzenie stanu błędów, ale nie na monitorowanie zmian w wzorze błędów w czasie. Aby zautomatyzować ten proces i zbierać dane z dłuższych okresów, utworzymy wskaźniki oparte na logach.

3. Wskaźniki oparte na logach

Aby zliczać liczbę logów pasujących do Twoich zapytań w ciągu czasu, możesz używać danych opartych na logach. Dzięki temu zobaczysz wzorce w logach i poznasz przyczyny problemów.

Tworzenie wskaźnika opartego na logach

Aby utworzyć wskaźnik oparty na logach, kliknij Operacje > Rejestrowanie > Wskaźniki oparte na logach. Wyświetli się lista wskaźników opartych na logach, które są już dostępne w Twoim projekcie. Po kliknięciu przycisku UTWÓRZ DANE zobaczysz ekran tworzenia danych na podstawie dzienników:

296af6e7d8dcf6cf.png

Istnieją 2 podstawowe typy danych: dane licznika, które zliczają liczbę logów pasujących do Twojego zapytania. Dane o rozkładzie śledzą podstawowy rozkład i umożliwiają wykonywanie operacji statystycznych, takich jak średnia, mediana i 95. percentyl.

Przewiń w dół, aby zobaczyć sekcję filtrów, w której możesz wpisać zapytanie.

f7f2093fa1bce2ac.png

Wklej zapytanie z poprzedniej sekcji w obszarze tekstowym Tworzenie filtra.

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

Możesz też kliknąć przycisk PODGLĄD LOGÓW, aby szybko wyświetlić poprzednie dzienniki pasujące do filtra. Gdy skończysz, kliknij przycisk UTWÓRZ DANE i przejdź do następnej sekcji.

Wyświetlanie danych wskaźników opartych na logach

Nasz wskaźnik oparty na logach jest już utworzony i będzie dostępny w sekcji Wskaźniki zdefiniowane przez użytkownika na stronie wskaźników opartych na logach.

1b2c88c18533fbcd.png

W menu odpowiadającym danym opartym na logach (3 kropki) wybierz Wyświetl w Metrics Explorer, aby zobaczyć dane zebrane w danych opartych na logach:

54a836fdc3a66a3.png

Gdy pojawi się nowy błąd, zostanie on zarejestrowany przez dane oparte na logach i wyświetlony w oknie wykresu w narzędzie Metrics Explorer.

Monitorowanie za pomocą paneli niestandardowych

Gdy nowy wskaźnik oparty na logach działa zgodnie z oczekiwaniami, możesz zapisać ten widok wykresu w panelu niestandardowym. W tym celu w prawym górnym rogu eksploratora danych kliknij przycisk Zapisz wykres. Pojawi się prośba o nazwanie wykresu i wybranie panelu, w którym chcesz go zapisać:

52329085f841782e.png

Po zapisaniu wykresu w panelu mamy do niego łatwy dostęp. Aby uzyskać dostęp do listy paneli dostępnych w projekcie, kliknij Operacje > Monitorowanie > Panele.

44961e7cb3663341.png

Nasz wykres został zapisany w panelu o nazwie „Panel Codelab”. Po otwarciu zobaczysz ten widok:

f7e025c27f30f996.png

Jak widać, wykres przedstawiający dane oparte na logach jest wyświetlany wraz z nowo zebranymi danymi. Logi inteligentnego domu są publikowane w projekcie w czasie rzeczywistym. Gdy pojawi się nowy dziennik, zostanie on od razu uwzględniony w danych na podstawie dzienników.

4. Gratulacje

674c4f4392e98c1.png

Gratulacje! Wiesz już, jak przekształcać zapytania w dane oparte na logach i zapisywać je na potrzeby monitorowania w panelach niestandardowych.

Dalsze kroki

Na podstawie tego ćwiczenia z programowania wykonaj te ćwiczenia i zapoznaj się z dodatkowymi materiałami:

  • Aby utworzyć wskaźniki oparte na logach w przypadku pól liczbowych, takich jak opóźnienie, zapoznaj się z poradnikiem Tworzenie wskaźników rozkładu.
  • Zapoznaj się z biblioteką przykładowych zapytań udostępnioną przez Google Cloud, aby poznać złożone filtry, których możesz używać do tworzenia wskaźników opartych na logach.