• Akademia
  • Blog
  • O Serverless
  • O stronie

Cloudash - więcej niż przeglądarka logów z CloudWatcha


Cloudash - więcej niż przeglądarka logów z CloudWatcha

Cloudash to desktopowa aplikacja służąca do przeglądania logów mikroserwisów serverless znajdujących się w CloudWatchu. Wersja 1.0.0 ukazała się stosunkowo niedawno i już zdążyła podbić serca wielu programistów serverless. Po bliższym przyjrzeniu i używaniu aplikacji przez blisko dwa tygodnie, muszę przyznać, iż zupełnie mnie nie to nie dziwi. Dlatego z chęcią przybiliżę Ci najważniejsze funkcje tego rozwiązania 😃

W telegraficznym skrócie: Cloudash ułatwia dostęp do logów aplikacji serverless przechowywanych w AWS CloudWatch, oraz na ich podstawie generuje przejrzyste wykresy, dające wgląd w jej stan.

Ze strony cloudash.dev, dowiemy się, że to aplikacja służąca do monitoringu. Nie jest to bynajmniej monitoring w chmurze, do którego przyzwyczaiły nas przez ostatnie lata firmy zajmujące się obserwowalnością. Bowiem nie musimy nikomu dawać dostępu do naszego konta AWS.

Jest to narzędzie z kategorii DX, czyli Developer Experience. Aplikacja desktopowa, która w ciągu sekund pozwala nam się dostać do interesujących nas logów. Jest to niesamowicie wygodne, gdy poruszamy się na co dzień miedzy wieloma mikroserwisami na wielu kontach AWS (co jest zalecaną praktyką bezpieczeństwa lub mamy wielu klientów).

Szybszy dostęp do logów i metryk

Za powstaniem aplikacji stoją bardzo jasne przesłanki:

  • szybki i prosty dostęp do logów
  • analiza i przedstawienie metryk działania funkcji w czytelny sposób.

W Cloudash pracujemy w kontekście serverlessowych projektów. Naturalnym jest, że każdy programista ma pod sobą wiele projektów mikroserwisów i taki podział ma sens. Zatem po uruchomieniu aplikacji, nie widzimy całego konta AWS i wszystkich logów - to bowiem mamy w konsoli CloudWatch i skopiowanie tego UX nie stanowiłoby wartości dla użytkownika.

Jak to zatem wygląda?

Konfiguracja jest bardzo prosta. Po uruchomieniu, aplikacja pobiera listę naszych profili AWSowych z pliku ~/.aws/credentials. (Jeśli go nie znasz, to polecam ten znakomity artykuł.) SSO jest wspierane.

Następnie, wybieramy jeden z profili i region, w tym momencie aplikacja pobiera listę stacków CloudFormation. Wybieramy ten, który nas interesuje, nadajemy własną nazwę i voilà, mamy skonfigurowany projekt.
Konfiguracja projektu

Ekran główny projektu

Przechodząc na ekran projektu mamy do dyspozycji kartę overview z podsumowaniem statystyk dla całego mikroserwisu. Agreguje ona dane pochodzące ze wszystkich funkcji Lambda (należących do wybranego stacka CloudFormation) na jednym dashboardzie.
Overview

Możemy tu zobaczyć sumaryczną ilość wywołań (invocations) wszystkich funkcji w danym okresie czasu, wraz z wykresem pięciu najczęściej uruchomionych. Podobnie możemy obejrzeć czasy trwania tych funkcji w 95 percentylu (P95). Jest to miara, która mówi, że 95% wywołań tych funkcji trwa nie dłużej niż wartość przedstawiona na wykresie.

Mamy również informację o względnej ilości wszystkich funkcji zakończonych błędem, oraz stosowny histogram.

Ekran funkcji

Dalej, dla każdej funkcji Lambda mamy indywidualną kartę na której znajduje się wykres z podstawowymi metrykami: ilość wywołań, czas trwania (P95), oraz błędy.

Ekran funkcji

Pod wykresem widzimy logi z tego samego przedziału czasu, który jest wyświetlony na wykresie. Logi są posortowane od najnowszych. W estetyczny sposób oznaczone są start i koniec wywołania funkcji oraz ewentualne błędy w logach. Logi możemy oczywiście przeszukiwać.

Jedną z nieoczywistych funkcjonalności, a istną perełką, w aplikacji jest możliwość zoomowania wykresu. Przybliżając fragment wykresu, logi pod nim są automatycznie filtrowane do aktualnie wyświetlanego przedziału czasu. Taką czynność można wykonać wielokrotnie. W ten wizualny sposób możemy wykres przybliżyć do miejsca gdzie wystąpił błąd, a logi z błędem automagicznie pojawią się pod wykresem!

Szukanie bugów jeszcze nigdy nie sprawiało mi tyle frajdy! 🤣

Przybliżony błąd z ekranu powyżej

Przybliżony błąd z ekranu powyżej, zauważ, że widać błąd w logach.

Kolejny fajny ficzer to grupowanie logów po inwokacji - super opcja, gdy w tym samym czasie równolegle działa wiele instancji tej samej funkcji. To mega ułatwia debugowanie.

Informacje z pierwszej ręki

W ramach przygotowania się do napisania tego artykułu przeprowadziłem krótki wywiad z autorem aplikacji Maciejem Winnickim. Tak, jest to dzieło Polaka, którego od niedawna wspiera nasz kolejny rodak Tomasz Łakomy. Obaj panowie są programistami i architektami rozwiązań serverless w AWS. Wspólnie pracują w firmie Stedi.

Maciej udzielił mi ciekawych informacji na temat genezy powstania Cloudash, jak również zdradził plany dalszego rozwoju.
Maciej Winnicki

Powiedzmy, że coś się dzieje z aplikacją i po prostu chcesz zobaczyć logi pewnej funkcji. Obrazowo mówiąc, co musisz zrobić? W zależności od tego jaki masz setupu to albo wchodzisz na SSO page i klikasz na konto albo wchodzisz na konto, podajesz token MFA, przelogowujesz się. Potem klikasz CloudWatch albo Lambdę jeśli wiesz, która funkcja.

I ten proces zajmuje strasznie dużo czasu i chodzi o to, aby skrócić ten czas, żeby się nie przeklikiwać, aby zobaczyć dlaczego Lambda się wywaliła. A jeszcze jak masz klika kont per env (stage), to jeszcze musisz się przelogowywać między nimi, albo używać kilku przeglądarek.

Chodzi o to, aby mieć lepszy user experience korzystania, żeby wszystko mieć w jednym miejscu. Na razie z CloudWatcha i Lambdy, ale pracujemy nad dodaniem logów i metryk z API Gateway, tak by można było zobaczyć cały flow.

Patrząc po odbiorze aplikacji przez community po jej wypuszczeniu, widzę, że rozwiązuje jakiś problem i na pewno dotyka pewnej rzeczy, która rezonuje wśród ludzi.

Zapytałem Maćka wprost o konkurencję. W końcu na rynku od dawna działają rozwiązania do monitoringu i obserwowalności aplikacji serverless (np. lumigo, Thundra, Dashbird, Espagon, Datadog).

Teoretycznie to jest konkurencja. Tylko pomyślmy, czego oni ode mnie oczekują? Dostępu do konta. Zasadnicza różnica jest w modelu pracy, każdego z tych narzędzi. Oni pobierają dane z mojego konta i musisz im udostępnić dostęp do tego konta. I oni non-stop cyklicznie pobierają dane z Twojego konta, co generuje pewne koszty.
My nie chcemy Twoich danych! Dostarczymy lepszy experience bez kopiowania wszystkich Twoich danych i wynoszenia ich na inne konto.

Na pytanie o dalsze plany rozwoju Maciek odpowiedział:

Priorytet numer jeden to dodać API Gateway, potem lepsze usability przeglądania logów. Następnie wsparcie dla CloudWatch Insights.

Podsumowanie

Przyznam, że w pierwszej chwili, gdy przeczytałem w internecie o tej aplikacji pomyślałem:

CloudWatch nie jest taki zły, a do tego używam Lumigo. Po co mi to?

Ale już po kilku godzinach używania aplikacji byłem sprzedany. Dedykowana aplikacja desktopowa jest po prostu wygodna w obsłudze. Podział na projekty na podstawie stacków CloudFormation wydaje się naturalny i oczywisty (uwierzcie mi, że tak nie robią wszyscy).

Niezaprzeczalną i ogromną zaletą Cloudash jest jego model pracy: z naszego komputera łączy się bezpośrednio do chmury używając naszego profilu AWS. W efekcie, aby używać tej aplikacji nie potrzebujemy żadnych zgód szefostwa i nie jesteśmy uzależnieni od widzi-mi-się naszych klientów.

W jednej apce możemy się przełączać pojedynczym kliknięciem między projektami, kontami AWS i klientami (zakładając, że mamy wiele profili). Niesamowita wygoda, tym bardziej, że w każdym projekcie mamy ten sam przyjazny UI, te same wykresy itd.

Aplikacja Cloudash jest płatna. Sprzedaż działa w modelu miesięcznej subskrypcji, która kosztuje 10 dolarów. Cena w stosunku do oferowanej wartości mnie przekonuje. Szybkość i wygoda pracy, okraszona fajnymi wykresami (których samemu nie muszę definiować w CloudWatch) wraz z obsługą wielu kont AWS, są zdecydowanie warte tych pieniędzy.

https://cloudash.dev/

Kupon promocyjny

Maciek i Tomek, autorzy Cloudash, przygotowali kupon promocyjny dla czytelników Serverless Polska.

Kupon: SERVERLESSPOLSKA pozwala kupić roczną licencję 50 procent taniej. Jest ważny do końca miesiąca (październik 2021).