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.
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
- Integracja z usługą Współpracuje z inteligentnym domem
- Ukończ ćwiczenia z programowania Debugowanie inteligentnego domu
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:
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:
Po utworzeniu zapytania kliknij przycisk Uruchom zapytanie, aby je wykonać. Powinien on wyświetlić błędy pochodzące z integracji z inteligentnym domem:
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ę.
Po włączeniu tej opcji zobaczysz rozkład logów pasujących do Twojego zapytania:
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:
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:
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:
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.
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.
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:
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ć:
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.
Nasz wykres został zapisany w panelu o nazwie „Panel Codelab”. Po otwarciu zobaczysz ten widok:
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
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.