1. Zanim zaczniesz
Jak wspomnieliśmy w samouczku Debugowanie inteligentnego domu, publikujemy w Twoich projektach inteligentnego domu dane i logi. Dane pomagają określić, gdzie Twoja akcja inteligentnego domu ma problemy, a logi są przydatne, gdy chcesz dokładnie zbadać te problemy i je rozwiązać.

Oprócz danych udostępnianych w projekcie możesz też generować własne dane za pomocą opartych na logach wskaźników z Google Cloud. Umożliwia to monitorowanie określonych wzorców w logach i skuteczne debugowanie problemów z jakością.
Wymagania wstępne
- Mieć integrację Works with Smart Home
- Ukończ ćwiczenia Debugging the Smart Home
Czego się nauczysz
- Jak pisać skuteczne zapytania do filtrowania dzienników błędów inteligentnego domu
- Jak tworzyć wskaźniki oparte na logach, aby generować wskaźniki na podstawie zapytań
- Tworzenie wykresów i paneli na podstawie wskaźników opartych na logach na potrzeby monitorowania
2. Praca z logami
Jak wspomnieliśmy w samouczku dotyczącym debugowania inteligentnego domu, praca z logami jest kluczowa dla powodzenia projektu. Google Cloud udostępnia ś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 logów
Aby uzyskać dostęp do logów, najpierw zaloguj się w Google Cloud i wybierz projekt. Otwórz Eksplorator logów w bocznym menu, wybierając Operacje > Logowanie > Eksplorator logów. Po otwarciu narzędzia zobaczysz taki widok:

Eksplorator logów składa się z 2 głównych sekcji: sekcji do pisania zapytań u góry (Kreator zapytań) i obszaru do wyświetlania pasujących wyników (Wyniki zapytania).
Wiele różnych komponentów Google domyślnie zapisuje logi w Twoim projekcie. Aby znaleźć i przetwarzać logi pochodzące z integracji z inteligentnym domem, musisz napisać niestandardowe zapytania.
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 inteligentnego domu są dostępne w projekcie w ramach typu zasobu assistant_action_project.
Ponadto podczas tworzenia do wszystkich logów przypisywany jest poziom ważności. W przypadku dzienników inteligentnego domu używamy poziomu ERROR dla dzienników reprezentujących błędy i wyjątki, a poziomu DEBUG dla wszystkich pozostałych dzienników.
W tym przykładzie napiszemy zapytanie, aby odfiltrować dzienniki pochodzące tylko z naszej platformy, które reprezentują błędy:

Po utworzeniu zapytania kliknij przycisk Uruchom zapytanie, aby je uruchomić. Powinny pojawić się błędy pochodzące z integracji z systemem inteligentnego domu:

Jak widać, w ciągu ostatniej godziny wystąpiło kilka błędów w różnych momentach. Każdy wiersz reprezentuje jeden dziennik błędów. Możesz też klikać poszczególne logi i rozwijać zagnieżdżone pola, aby wyświetlić zawarte w nich informacje.
Korzystanie z histogramu
Eksplorator logów udostępnia przydatną funkcję histogramu, która pozwala wyświetlać rozkład czasowy logów pasujących do zapytania. Aby aktywować histogram, kliknij UKŁAD STRONY w prawym górnym rogu i zaznacz Histogram.

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

Jak widać na powyższym obrazie, w ciągu ostatniej godziny wystąpiło kilka błędów, które są rozproszone. Widać 3 grupy około 13:45, 14:00 i 14:15. Histogram może pomóc w wykryciu wzorców, które trudno byłoby zauważyć, sprawdzając tylko wartości sygnatur czasowych.
Obecnie używane przez nas zapytanie nie rozróżnia logów i wyświetla wszystkie błędy pochodzące z integracji z inteligentnym domem. W wielu przypadkach możesz chcieć rozróżniać błędy, np. aby śledzić wzorce błędów pochodzące z określonych typów lub cech urządzeń. W tym celu przyjrzymy się pisaniu zaawansowanych zapytań.
Zapytania zaawansowane
Gdy sprawdzisz dziennik zdarzeń inteligentnego domu, zobaczysz różne pola, z których możesz uzyskać informacje:

action
trait: kierowanie na cechę urządzenia użytkownika (np. OnOff, StartStop, Brightness);actionType: dokładny stan cechy (np. włączona, wyłączona, wstrzymana, zatrzymana, wznowiona);
device
deviceType: kierowanie na typ urządzenia użytkownika (np. oświetlenie, przełącznik, pralka).
status
isSuccess: czy wynik działania jest uznawany za udany (prawda / fałsz).statusType: kod stanu wyniku działania (w przypadku niepowodzenia wskazuje kod błędu).externalDebugString: ciąg znaków debugowania czynności (szczegółowo opisuje błąd);
Inne pola
Możesz też uzyskać informacje z tych dodatkowych pól:
requestId: unikalny identyfikator powiązany z żądaniem (wygenerowany przez Google);executionType: ścieżka użyta przez żądanie (wskazuje, czy jest to chmura, czy lokalna).latencyMsec: odczuwalne opóźnienie żądania na serwerach Google (w milisekundach).locale: para język/region, z której wysyłane jest żądanie (np. en-US, fr-FR);
Korzystając z pola cechy z powyższej listy, zmodyfikujemy zapytanie tak, aby zawierało tylko błędy pochodzące z cechy OnOff:
resource.type="assistant_action_project" AND severity=ERROR AND jsonPayload.executionLog.executionResults.actionResults.action.trait="TRAIT_ON_OFF"
Po uruchomieniu zaktualizowanego zapytania system identyfikuje logi i wyświetla odpowiedni wynik:

Do tej pory wszystkie zapytania wykonywaliśmy ręcznie. To świetny sposób na szybkie sprawdzenie stanu błędów, ale nie sprawdza się w przypadku monitorowania zmian w wzorcach 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 zapytań w czasie, możesz używać wskaźników opartych na logach. Dzięki temu możesz zobaczyć wzorce w logach i uzyskać przydatne informacje o przyczynach problemów.
Tworzenie wskaźnika opartego na logach
Aby utworzyć wskaźnik oparty na logach, otwórz Operacje > Logowanie > 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 WSKAŹNIK pojawi się ekran tworzenia wskaźnika opartego na logach:

Istnieją 2 główne rodzaje danych: dane licznika zliczają liczbę logów pasujących do zapytania. Dane rozkładu śledzą rozkład podstawowy i umożliwiają wykonywanie operacji statystycznych, takich jak obliczanie średniej, mediany i 95 percentyla.
Przewiń w dół, aby zobaczyć sekcję filtra, w której możesz wpisać zapytanie.

Wkleimy 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 WYŚWIETL PODGLĄD DZIENNIKÓW, aby wyświetlić podgląd poprzednich dzienników pasujących do filtra. Gdy skończysz, możesz kliknąć przycisk UTWÓRZ RODZAJ DANYCH i przejść do następnej sekcji.
Wyświetlanie danych wskaźników opartych na logach
Utworzony wskaźnik oparty na logach będzie dostępny w sekcji Wskaźniki zdefiniowane przez użytkownika na stronie Wskaźniki oparte na logach.

W menu odpowiadającym wskaźnikowi opartemu na logach (3 kropki) wybierz Wyświetl w narzędziu Metrics Explorer, aby zobaczyć dane zebrane w tym wskaźniku:

Gdy pojawi się nowy błąd, zostanie on zarejestrowany przez wskaźnik oparty na logach i wyświetlony w oknie wykresu w narzędziu Metrics Explorer.
Monitorowanie za pomocą paneli niestandardowych
Gdy zauważymy, że nowy wskaźnik oparty na logach działa zgodnie z oczekiwaniami, możemy zapisać ten widok wykresu w panelu niestandardowym. Aby to zrobić, w prawym górnym rogu Eksploratora danych kliknij przycisk Zapisz wykres. Wyświetli się prośba o nadanie nazwy wykresowi i wybranie panelu, w którym chcesz go zapisać:

Po zapisaniu wykresu w panelu możemy łatwo uzyskać do niego dostęp. Aby wyświetlić listę paneli informacyjnych dostępnych w projekcie, kliknij Operacje > Monitorowanie > Panele informacyjne.

Wykres został zapisany w panelu o nazwie „Codelab Dashboard”. Po otwarciu zobaczysz ten widok:

Jak widać, wyświetla się tu wykres przedstawiający dane oparte na logach wraz z nowo zebranymi danymi. Logi inteligentnego domu są publikowane w projekcie w czasie rzeczywistym. Gdy pojawi się nowy log, od razu zobaczysz go w danych opartych na logach.
4. Gratulacje

Gratulacje! Wiesz już, jak przekształcać zapytania w wskaźniki oparte na logach i zapisywać je w panelach niestandardowych na potrzeby monitorowania.
Dalsze kroki
Wykonaj te ćwiczenia i zapoznaj się z dodatkowymi materiałami, korzystając z tego samouczka:
- Aby utworzyć wskaźniki oparte na logach w polach liczbowych, takich jak czas oczekiwania, zapoznaj się z przewodnikiem Tworzenie wskaźników rozkładu.
- Zapoznaj się z biblioteką przykładowych zapytań udostępnioną przez Google Cloud, aby zobaczyć niektóre złożone filtry, których możesz używać w przypadku wskaźników opartych na logach.