Cześć, mam na imię Eugene, jestem liderem zespołu B2B w Citymobil. Jednym z zadań naszego zespołu jest wspieranie integracji do zamawiania taksówek u partnerów, a aby zapewnić stabilną obsługę, musimy zawsze rozumieć, co dzieje się w naszych mikroserwisach. I do tego musisz stale monitorować dzienniki.
W Citymobil do pracy z logami używamy stosu ELK (ElasticSearch, Logstash, Kibana), a ilość danych tam napływających jest ogromna. Znalezienie problemów w tej masie zgłoszeń, które mogą pojawić się po wdrożeniu nowego kodu jest dość trudne. A dla ich identyfikacji wizualnej Kibana ma sekcję Dashboard.
Istnieje sporo artykułów na temat Habré z przykładami konfigurowania stosu ELK do odbierania i przechowywania danych, ale nie ma odpowiednich materiałów na temat tworzenia pulpitu nawigacyjnego. Dlatego chcę pokazać, jak stworzyć wizualną reprezentację danych na podstawie przychodzących logów w Kibanie.
regulacja
Aby było jaśniej, stworzyłem obraz Dockera za pomocą ELK i Filebeat. I umieszczone w pojemniku mały
Sklonuj repozytorium konfiguracji docker-compose
i ustawienia ELK i uruchom je za pomocą polecenia docker-compose up
. Celowo nie dodaje klucza -d
aby zobaczyć postęp stosu ELK.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Jeśli wszystko jest poprawnie skonfigurowane, to zobaczymy wpis w logach (być może nie od razu, proces uruchamiania kontenera z całym stosem może zająć kilka minut):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
W localhost:5061
Kibana powinna się otworzyć.
Jedyne co musimy skonfigurować to stworzyć Index Pattern dla Kibany z informacją jakie dane wyświetlić. W tym celu wykonamy żądanie curl lub wykonamy szereg czynności w interfejsie graficznym.
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
-H 'Content-Type: application/json'
-H 'kbn-xsrf: true'
-d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
Tworzenie wzorca indeksu za pomocą GUI
Aby skonfigurować, wybierz sekcję Discover w lewym menu i przejdź do strony tworzenia wzorca indeksu.
Klikając w przycisk „Create index pattern” przechodzimy do strony tworzenia indeksu. W polu „Nazwa wzorca indeksu” wpisz „logstash-*”. Jeśli wszystko jest skonfigurowane poprawnie, poniżej Kibana pokaże indeksy, które podlegają regule.
Na następnej stronie wybierz pole klucza ze znacznikiem czasu, w naszym przypadku tak jest @timestamp
.
Spowoduje to wyświetlenie strony ustawień indeksu, ale w tej chwili nie są wymagane żadne dodatkowe działania.
Teraz możemy ponownie przejść do sekcji Discover, gdzie zobaczymy wpisy dziennika.
Panel Użytkownika
W lewym menu kliknij sekcję Tworzenie pulpitu nawigacyjnego i przejdź do odpowiedniej strony.
Kliknij „Utwórz nowy pulpit nawigacyjny” i przejdź do strony dodawania obiektów do pulpitu nawigacyjnego.
Kliknij przycisk „Utwórz nowy”, a system poprosi o wybranie typu wyświetlania danych. Kibana ma ich dużą liczbę, ale przyjrzymy się stworzeniu graficznej reprezentacji „Pionowego paska” i tabelarycznej „Tabeli danych”. Inne typy prezentacji są konfigurowane w podobny sposób.
Niektóre dostępne obiekty są oznaczone jako B i E, co oznacza, że format jest eksperymentalny lub w fazie testów beta. Z biegiem czasu format może się zmienić lub całkowicie zniknąć z Kibany.
Pionowy pasek
Dla przykładu „Pionowy słupek” utwórzmy histogram stosunku pomyślnych i nieudanych statusów odpowiedzi naszego serwisu. Na koniec ustawień otrzymujemy następujący wykres:
Wszystkie zgłoszenia ze statusem odpowiedzi < 400 będziemy klasyfikować jako pomyślne, a >= 400 jako problematyczne.
Aby utworzyć wykres „Pionowy słupek”, musimy wybrać źródło danych. Wybierz wzorzec indeksu, który stworzyliśmy wcześniej.
Domyślnie po wybraniu źródła danych pojawi się pojedynczy pełny wykres. Ustawmy to.
W bloku „Buckets” wciskamy przycisk „Add”, wybieramy „X-asis” i ustawiamy oś X. Odłóżmy na bok znaczniki czasu odbioru wpisów w logu. W polu „Agregacja” wybierz „Histogram daty”, aw polu „Pole” wybierz „@znacznik czasu”, wskazując pole czasu. Pozostawmy „Minimalny interwał” w stanie „Auto”, a automatycznie dostosuje się do naszego wyświetlacza.
Klikając w przycisk „Aktualizuj” zobaczymy wykres z liczbą żądań co 30 sekund.
Teraz ustawmy kolumny wzdłuż osi Y. Teraz wyświetlamy całkowitą liczbę żądań w wybranym przedziale czasu.
Zmieńmy wartość „Aggregation” na „Sum Bucket”, co pozwoli nam łączyć dane dla udanych i nieudanych żądań. W bloku Bucket -> Agregation wybierz agregację według "Filters" i ustaw filtrowanie według "statusCode >= 400". A w polu „Etykieta niestandardowa” podajemy naszą nazwę wskaźnika, aby był bardziej zrozumiały w legendzie na wykresie i na liście ogólnej.
Klikając przycisk „Aktualizuj” pod blokiem ustawień, otrzymamy wykres z żądaniami problemów.
Jeśli klikniesz na kółko obok legendy, pojawi się okno, w którym możesz zmienić kolor kolumn.
Teraz dodajmy do wykresu dane dotyczące pomyślnych żądań. W sekcji „Metryki” kliknij przycisk „Dodaj” i wybierz „Oś Y”.
W tworzonej metryce dokonujemy takich samych ustawień jak dla błędnych żądań. Dopiero w filtrze określamy "statusCode < 400".
Zmieniając kolor nowej kolumny, otrzymujemy wyświetlenie stosunku zgłoszeń problematycznych do udanych.
Klikając przycisk „Zapisz” u góry ekranu i określając nazwę, zobaczymy pierwszy wykres na Dashboardzie.
Tabela danych
Rozważmy teraz widok tabelaryczny „Tabela danych”. Utwórzmy tabelę z listą wszystkich żądanych adresów URL i liczbą tych żądań. Podobnie jak w przypadku paska pionowego, najpierw wybieramy źródło danych.
Następnie na ekranie zostanie wyświetlona tabela z jedną kolumną, która pokazuje całkowitą liczbę zapytań dla wybranego przedziału czasu.
Zmienimy tylko blok „Wiadra”. Kliknij przycisk „Dodaj” i wybierz „Podziel wiersze”.
W polu „Agregacja” wybierz „Warunki”. A w wyświetlonym polu „Pole” wybierz „url.keyword”.
Określając wartość „Url” w polu „Custom label” i klikając „Aktualizuj”, otrzymamy żądaną tabelę z liczbą zapytań dla każdego z adresów URL w wybranym okresie czasu.
U góry ekranu kliknij ponownie przycisk „Zapisz” i podaj nazwę tabeli, na przykład Urls. Wróćmy do pulpitu nawigacyjnego i zobaczmy, jak zostały utworzone oba widoki.
Praca z pulpitem nawigacyjnym
Podczas tworzenia pulpitu nawigacyjnego w ustawieniach obiektu wyświetlanego ustawiamy tylko główne parametry widoku. Nie ma sensu określać danych dla filtrów w obiektach, na przykład „zakres dat”, „filtrowanie według agenta użytkownika”, „filtrowanie według kraju żądania” itp. O wiele wygodniej jest określić żądany okres czasu lub ustawić niezbędne filtrowanie w panelu zapytań, który znajduje się nad obiektami.
Filtry dodane w tym panelu zostaną zastosowane do całego pulpitu nawigacyjnego, a wszystkie wyświetlane obiekty zostaną przebudowane zgodnie z faktycznie przefiltrowanymi danymi.
wniosek
Kibana to potężne narzędzie, które pozwala w wygodny sposób wizualizować dowolne dane. Starałem się pokazać ustawienie dwóch głównych typów wyświetlaczy. Ale inne typy są konfigurowane w podobny sposób. A bogactwo ustawień, które zostawiłem „za kulisami”, pozwoli bardzo elastycznie dostosować wykresy do własnych potrzeb.
Źródło: www.habr.com