Здравейте, казвам се Юджийн, аз съм ръководител на B2B екип в Citymobil. Една от задачите на нашия екип е да поддържа интеграции за поръчка на такси от партньори и за да осигурим стабилна услуга, трябва винаги да разбираме какво се случва в нашите микроуслуги. И за това трябва постоянно да наблюдавате дневниците.
В Citymobil използваме стека ELK (ElasticSearch, Logstash, Kibana) за работа с регистрационни файлове и количеството данни, идващи там, е огромно. Намирането на проблеми в тази маса от заявки, които могат да се появят след внедряването на нов код, е доста трудно. А за тяхната визуална идентификация Kibana разполага с раздел Dashboard.
Има доста статии на Habré с примери как да настроите ELK стек за получаване и съхраняване на данни, но няма подходящи материали за създаване на табло за управление. Затова искам да покажа как да създам визуално представяне на данни въз основа на входящи регистрационни файлове в Kibana.
регулиране
За да стане по-ясно, създадох 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
Кибана трябва да се отвори.
Единственото нещо, което трябва да конфигурираме, е да създадем Index Pattern за Kibana с информация какви данни да се показват. За да направим това, ще изпълним curl заявка или ще извършим поредица от действия в графичния интерфейс.
$ 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
За да конфигурирате, изберете секцията Discover в лявото меню и отидете на страницата за създаване на Index pattern.
Щраквайки върху бутона „Създаване на модел на индекс“, стигаме до страницата за създаване на индекс. В полето „Име на шаблон на индекс“ въведете „logstash-*“. Ако всичко е конфигурирано правилно, по-долу Kibana ще покаже индексите, които попадат в правилото.
На следващата страница изберете ключовото поле с клеймо за време, в нашия случай е @timestamp
.
Това ще покаже страницата с настройки на индекса, но в момента не са необходими допълнителни действия от наша страна.
Сега можем да отидем отново в секцията Discover, където ще видим записите в журнала.
Табло
В лявото меню щракнете върху раздела за създаване на табло и отидете на съответната страница.
Кликнете върху „Създаване на ново табло“ и стигнете до страницата за добавяне на обекти към таблото.
Кликнете върху бутона "Създаване на нов" и системата ще ви подкани да изберете вида на показване на данните. Kibana има голям брой от тях, но ние ще разгледаме създаването на графично представяне на "Вертикална лента" и таблична "Таблица с данни". Други видове презентации се конфигурират по подобен начин.
Някои налични обекти са обозначени с B и E, което означава, че форматът е експериментален или в бета тестване. С течение на времето форматът може да се промени или напълно да изчезне от Kibana.
Вертикална лента
За примера с „Вертикална лента“ нека създадем хистограма на съотношението на статусите на успешен и неуспешен отговор на нашата услуга. В края на настройките получаваме следната графика:
Ще класифицираме всички заявки със статус на отговор < 400 като успешни и >= 400 като проблемни.
За да създадем диаграма "Вертикална лента", трябва да изберем източник на данни. Изберете Index Pattern, който създадохме по-рано.
По подразбиране след избор на източник на данни ще се появи една плътна графика. Нека го настроим.
В блока "Buckets" натиснете бутона "Add", изберете "X-asis" и настройте оста X. Нека оставим настрана времевите марки за получаване на записи в дневника. В полето „Агрегация“ изберете „Хистограма на дата“, а в полето „Поле“ изберете „@timestamp“, като посочите полето за час. Нека оставим "Минимален интервал" в състояние "Автоматично" и той автоматично ще се настрои към нашия дисплей.
Щраквайки върху бутона „Актуализиране“, ще видим графика с броя на заявките на всеки 30 секунди.
Сега нека настроим колоните по оста Y. Сега показваме общия брой заявки в избрания интервал от време.
Нека променим стойността „Агрегиране“ на „Сумарна група“, което ще ни позволи да комбинираме данни за успешни и неуспешни заявки. В блока Bucket -> Aggregation изберете агрегацията чрез „Filters“ и задайте филтрирането чрез „statusCode >= 400“. И в полето "Персонализиран етикет" посочваме името на индикатора за по-разбираемо показване в легендата на графиката и в общия списък.
Като щракнете върху бутона „Актуализиране“ под блока с настройки, ще получим графика със заявки за проблеми.
Ако щракнете върху кръгчето до легендата, ще се появи прозорец, в който можете да промените цвета на колоните.
Сега нека добавим данни за успешни заявки към диаграмата. В секцията „Показатели“ щракнете върху бутона „Добавяне“ и изберете „Y-ос“.
В създадената метрика правим същите настройки като за грешни заявки. Само във филтъра посочваме "statusCode < 400".
Променяйки цвета на новата колона, получаваме показване на съотношението на проблемни и успешни заявки.
Като щракнете върху бутона „Запазване“ в горната част на екрана и посочите името, ще видим първата диаграма на таблото за управление.
Таблица с данни
Сега разгледайте табличния изглед "Таблица с данни". Нека създадем таблица със списък на всички заявени URL адреси и броя на тези заявки. Както при примера с вертикална лента, първо избираме източник на данни.
След това на екрана ще се покаже таблица с една колона, която показва общия брой заявки за избрания интервал от време.
Ще променим само блока "Кофи". Щракнете върху бутона „Добавяне“ и изберете „Разделяне на редове“.
В полето „Агрегиране“ изберете „Условия“. И в появилото се поле "Поле" изберете "url.keyword".
Посочвайки стойността „Url“ в полето „Персонализиран етикет“ и щраквайки върху „Актуализиране“, ще получим желаната таблица с броя на заявките за всеки от URL адресите за избрания период от време.
В горната част на екрана щракнете отново върху бутона „Запазване“ и посочете името на таблицата, например Urls. Нека се върнем към таблото за управление и да видим двата създадени изгледа.
Работа с таблото за управление
Когато създаваме таблото за управление, задаваме само основните параметри на изгледа в настройките на обекта за показване. Няма смисъл да се указват данни за филтри в обекти, например „диапазон от дати“, „филтриране по потребителски агент“, „филтриране по държава на заявка“ и т.н. Много по-удобно е да посочите желания период от време или да зададете необходимото филтриране в панела за заявки, който се намира над обектите.
Филтрите, добавени в този панел, ще бъдат приложени към цялото табло за управление и всички обекти на дисплея ще бъдат преустроени в съответствие с действителните филтрирани данни.
Заключение
Kibana е мощен инструмент, който ви позволява да визуализирате всякакви данни по удобен начин. Опитах се да покажа настройката на двата основни вида дисплей. Но други типове са конфигурирани по подобен начин. А изобилието от настройки, които оставих „зад кулисите“, ще ви позволи много гъвкаво да персонализирате диаграмите, за да отговарят на вашите нужди.
Източник: www.habr.com