Здраво, јас се викам Јуџин, јас сум B2B тим лидер во Citymobil. Една од задачите на нашиот тим е да поддржува интеграции за нарачување такси од партнери, а за да обезбедиме стабилна услуга, секогаш мора да разбереме што се случува во нашите микросервиси. И за ова треба постојано да ги следите дневниците.
Во Citymobil, го користиме стекот ELK (ElasticSearch, Logstash, Kibana) за да работиме со дневници, а количината на податоци што доаѓаат таму е огромна. Наоѓањето проблеми во оваа маса барања што може да се појават по распоредувањето на новиот код е доста тешко. И за нивна визуелна идентификација, Kibana има дел од Dashboard.
Има неколку написи на Habré со примери за тоа како да се постави стек ELK за примање и складирање податоци, но нема релевантни материјали за креирање на контролната табла. Затоа, сакам да покажам како да креирате визуелна репрезентација на податоци врз основа на дојдовните дневници во Кибана.
прилагодување
За да биде појасно, создадов слика на Docker со ELK и Filebeat. И се става во сад мал
Клонирајте го складиштето за конфигурации docker-compose
и ELK поставувања, и стартувајте го со командата docker-compose up
. Намерно не додавање клуч -d
за да го видите напредокот на оџакот ELK.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Ако сè е правилно конфигурирано, тогаш ќе видиме запис во дневниците (можеби не веднаш, процесот на лансирање на контејнер со целиот куп може да потрае неколку минути):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
По адресата localhost:5061
Кибана треба да се отвори.
Единственото нешто што треба да го конфигурираме е да создадеме модел на индекс за Kibana со информации за тоа кои податоци да се прикажат. За да го направите ова, ќе извршиме барање за навивање или ќе извршиме серија дејства во графичкиот интерфејс.
$ 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"}}'
Креирање на шема на индекс преку GUI
За да го конфигурирате, изберете го делот Откријте во левото мени и одете до страницата за креирање шема на индекс.
Со кликнување на копчето „Креирај шема на индекс“, доаѓаме до страницата за создавање индекс. Во полето „Име на шема на индекс“, внесете „logstash-*“. Ако сè е правилно конфигурирано, под Kibana ќе се прикажат индексите што спаѓаат под правилото.
На следната страница, изберете го клучното поле со временски печат, во нашиот случај тоа е @timestamp
.
Ова ќе ја отвори страницата за поставки на индексот, но во моментов не се потребни дополнителни дејства од нас.
Сега можеме повторно да одиме во делот Откријте, каде што ќе ги видиме записите во дневникот.
Профил
Во левото мени, кликнете на делот за создавање табла и одете на соодветната страница.
Кликнете на „Креирај нова контролна табла“ и одете на страницата за додавање објекти на контролната табла.
Кликнете на копчето „Креирај ново“ и системот ќе ве поттикне да го изберете типот на прикажување на податоците. Кибана има голем број од нив, но ние ќе погледнеме да креираме графички приказ на „Вертикалната лента“ и табеларна „Табела со податоци“. Другите типови на презентација се конфигурирани на сличен начин.
Некои достапни објекти се означени како B и E, што значи дека форматот е експериментален или во бета-тестирање. Со текот на времето, форматот може да се промени или целосно да исчезне од Kibana.
Вертикална лента
За примерот „Вертикална лента“, ајде да создадеме хистограм на односот на статусите на успешни и неуспешни одговори на нашата услуга. На крајот од поставките, го добиваме следниот графикон:
Ќе ги класифицираме сите барања со статус на одговор < 400 како успешни и >= 400 како проблематични.
За да креираме графикон „Вертикална лента“, треба да избереме извор на податоци. Изберете ја шемата за индекс што ја создадовме претходно.
Стандардно, по избор на извор на податоци ќе се појави единствен цврст график. Ајде да го поставиме.
Во блокот „Кофи“, притиснете го копчето „Додај“, изберете „X-asis“ и поставете ја оската X. Да ги оставиме настрана временските ознаки на записите во дневникот долж неа. Во полето „Агрегација“, изберете „Хистограм на датум“, а во „Поле“ изберете „@timestamp“, означувајќи го полето за време. Да го оставиме „Минимум интервал“ во „Автоматски“ состојба и тој автоматски ќе се прилагоди на нашиот екран.
Со кликнување на копчето „Ажурирај“, ќе видиме графикон со бројот на барања на секои 30 секунди.
Сега ајде да ги поставиме колоните долж оската Y. Сега го прикажуваме вкупниот број на барања во избраниот временски интервал.
Ајде да ја смениме вредноста „Агрегација“ во „Кофа за сума“, што ќе ни овозможи да комбинираме податоци за успешни и неуспешни барања. Во блокот Bucket -> Aggregation, изберете ја збирката по „Филтери“ и поставете го филтрирањето според „statusCode >= 400“. И во полето „Прилагодена етикета“, го означуваме нашето име на индикаторот за поразбирлив приказ во легендата на табелата и во општата листа.
Со кликнување на копчето „Ажурирај“ под блокот за поставки, ќе добиеме графикон со проблематични барања.
Ако кликнете на кругот до легендата, ќе се појави прозорец во кој можете да ја промените бојата на колоните.
Сега да додадеме податоци за успешни барања на графиконот. Во делот „Метрика“, кликнете на копчето „Додај“ и изберете „Y-оска“.
Во креираната метрика, ги правиме истите поставки како и за погрешни барања. Само во филтерот наведуваме „statusCode < 400“.
Со промена на бојата на новата колона, добиваме приказ на односот на проблематични и успешни барања.
Со кликнување на копчето „Зачувај“ на горниот дел од екранот и наведување на името, ќе ја видиме првата табела на контролната табла.
Табела со податоци
Сега разгледајте го табеларниот приказ „Табела со податоци“. Ајде да создадеме табела со список на сите барани URL адреси и бројот на тие барања. Како и со примерот со вертикална лента, прво избираме извор на податоци.
После тоа, на екранот ќе се прикаже табела со една колона, која го прикажува вкупниот број на барања за избраниот временски интервал.
Ќе го смениме само блокот „Кофи“. Кликнете на копчето „Додај“ и изберете „Сплит редови“.
Во полето „Агрегација“, изберете „Услови“. И во полето што се појави „Поле“ изберете „url.keyword“.
Со наведување на вредноста „URL“ во полето „Custom label“ и кликнување на „Update“, ќе ја добиеме саканата табела со бројот на барања за секоја од URL-адресите за избраниот временски период.
На горниот дел од екранот, повторно кликнете на копчето „Зачувај“ и наведете го името на табелата, на пример УРЛ. Ајде да се вратиме на Контролната табла и да ги видиме создадените двата прикази.
Работа со контролната табла
При креирањето на контролната табла, ги поставуваме само параметрите за главниот приказ во поставките за објектот на екранот. Нема смисла да се наведат податоци за филтри во објекти, на пример, „опсег на датуми“, „филтрирање по кориснички агент“, „филтрирање по земја на барање“ итн. Многу е поудобно да го наведете саканиот временски период или да го поставите потребното филтрирање во панелот за пребарување, кој се наоѓа над објектите.
Филтрите додадени на овој панел ќе се применат на целата Контролна табла, а сите објекти на екранот ќе бидат повторно изградени во согласност со вистинските филтрирани податоци.
Заклучок
Kibana е моќна алатка која ви овозможува да ги визуелизирате сите податоци на пригоден начин. Се обидов да ги прикажам поставките на двата главни типа на дисплеј. Но, другите типови се конфигурирани на сличен начин. И изобилството на поставки што ги оставив „зад сцената“ ќе ви овозможат многу флексибилно да ги приспособувате графиконите за да одговараат на вашите потреби.
Извор: www.habr.com