Стварэнне Dashboard у Kibana для маніторынгу логаў

Стварэнне Dashboard у Kibana для маніторынгу логаў

Прывітанне, мяне клічуць Яўген, я тымлід B2B-кірункі ў Сіцімабіл. Адной з задач нашай каманды з'яўляецца падтрымка інтэграцый на замову таксі ад партнёраў, і для забеспячэння стабільнага сэрвісу мы заўсёды павінны разумець, што адбываецца ў нашых мікрасэрвісах. І для гэтага трэба ўвесь час сачыць за логамі.

У Sitimobil для працы з логамі мы выкарыстоўваем ELK-стэк (ElasticSearch, Logstash, Kibana), і аб'ём прыходных туды дадзеных велізарны. Знайсці ў гэтай масе запытаў праблемы, якія могуць з'явіцца пасля дэплою новага кода, даволі складана. І для іх навочнага выяўлення ў Kibana ёсць частка Dashboard.

На Хабре ёсць даволі шмат артыкулаў з прыкладамі, як наладзіць ELK-стэк для атрымання і захоўванні дадзеных, але аб стварэнні Dashboard актуальных матэрыялаў няма. Таму я хачу паказаць, як у Kibana ствараць візуальнае прадстаўленне дадзеных на аснове прыходзяць логаў.

Настройка

Каб было навочней, я стварыў Docker-выява з ELK і Filebeat. І змясціў у кантэйнер невялікую праграму на Go, якая для нашага прыкладу будзе генераваць тэставыя логі. Дэталёва апісваць канфігураванне ELK не буду, на Хабре дастаткова напісана пра гэта.

Клануем рэпазітар з канфігурацыяй 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.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Стварэнне Dashboard у Kibana для маніторынгу логаў
Адзінае, што нам трэба наладзіць, гэта стварыць 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"}}'

Стварэнне Index Pattern праз графічны інтэрфейс
Для налады выбіраемы ў левым меню частка Discover, і пападаем на старонку стварэння Index pattern.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Націснуўшы на кнопку "Create index pattern", трапляем на старонку стварэння індэкса. У поле "Index pattern name" уводны "logstash-*". Калі ўсё наладжана правільна, ніжэй Kibana пакажа якія патрапілі пад правіла азначнікі.

Стварэнне Dashboard у Kibana для маніторынгу логаў
На наступнай старонцы выбіраемы ключавое поле з часовай адзнакай, у нашым выпадку гэта @timestamp.

Стварэнне Dashboard у Kibana для маніторынгу логаў
У выніку з'явіцца старонка налад індэкса, але зараз дадатковых дзеянняў ад нас не патрабуецца.

Стварэнне Dashboard у Kibana для маніторынгу логаў

Цяпер мы можам зноў перайсці ў раздзел Discover, дзе ўбачым запісы логаў.

Стварэнне Dashboard у Kibana для маніторынгу логаў

прыборная панэль

У левым меню націскаем на падзел стварэння Dashboard і пападаем на адпаведную старонку.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Націскаем на "Create new dashboard" і трапляем на старонку дадання аб'ектаў у Dashboard.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Націскаем на кнопку "Create new", і сістэма прапануе абраць выгляд адлюстравання дадзеных. У Kibana іх вялікая колькасць, але мы разгледзім стварэнне графічнага ўяўлення "Vertical Bar" і таблічнага "Data Table". Астатнія віды прадстаўлення наладжваюцца падобнай выявай. 
Стварэнне Dashboard у Kibana для маніторынгу логаў
Некаторыя даступныя аб'екты маюць пазнакі B і E - гэта азначае, што фармат эксперыментальны або ў стадыі бэта-тэставанні. З часам фармат можа памяняцца ці зусім знікнуць з Kibana.

Вертыкальная паласа

Для прыкладу "Vertical Bar" створым гістаграму суадносін паспяховых і няўдалых статусаў адказу нашага сэрвісу. Па канчатку налад атрымаем наступны графік:

Стварэнне Dashboard у Kibana для маніторынгу логаў
Да паспяховых мы будзем адносіць усе запыты са статутам адказу < 400, а да праблемных - >= 400.

Для стварэння графіка «Vertical Bar» нам неабходна абраць крыніцу дадзеных. Выбіраемы Index Pattern, які стварылі раней.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Па змаўчанні пасля выбару крыніцы дадзеных з'явіцца адзін суцэльны графік. Настроім яго.

Стварэнне Dashboard у Kibana для маніторынгу логаў
У блоку "Buckets" націснем кнопку "Add", абярэм "X-asis" і наладзім вось Х. Адкладзем па ёй часовыя адзнакі паступлення запісаў у лог. У поле "Aggregation" выбіраемы "Date Histogram", а ў "Field" выбіраемы "@timestamp", які паказвае на часовае поле. Minimum interval пакінем у стане Auto, і ён будзе аўтаматычна падладжвацца пад наша адлюстраванне. 

Стварэнне Dashboard у Kibana для маніторынгу логаў
Націснуўшы на кнопку "Update", мы ўбачым графік з колькасцю запытаў кожныя 30 секунд.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Зараз наладзім слупкі па восі Y. Цяпер у нас адлюстроўваецца агульная колькасць запытаў у абраны інтэрвал часу.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Зменім значэнне "Aggregation" на "Sum Bucket", які дазволіць нам сумясціць дадзеныя па паспяховых і няўдалых запытах. У блоку Bucket -> Aggregation выбіраемы агрэгацыю па "Filters" і задаём фільтраванне па "statusCode >= 400". А ў полі «Custom label» паказваем нашу назву паказчыка для больш зразумелага адлюстравання ў легендзе на графіцы і ў агульным спісе.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Націснуўшы кнопку "Update" пад блокам налад, атрымаем графік з праблемнымі запытамі.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Калі націснуць на круг каля легенды, тое з'явіцца акно, у якім можна памяняць колер слупкоў.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Цяпер дадамо на графік дадзеныя аб паспяховых запытах. У раздзеле "Metrics" націскаем кнопку "Add" і выбіраемы "Y-axis".

Стварэнне Dashboard у Kibana для маніторынгу логаў
У створанай метрыцы які робіцца такія ж налады, як і для памылковых запытаў. Толькі ў фільтры паказваем "statusCode < 400".

Стварэнне Dashboard у Kibana для маніторынгу логаў
Змяніўшы колер новага слупка, атрымаем адлюстраванне суадносін праблемных і паспяховых запытаў.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Націснуўшы ў верхняй частцы экрана кнопку Save і паказаўшы назву, мы ўбачым на Dashboard першы графік.

Стварэнне Dashboard у Kibana для маніторынгу логаў

Табліца дадзеных

Цяпер разгледзім таблічнае ўяўленне "Data Table". Створым табліцу са спісам усіх URL, да якіх былі запыты, і колькасць гэтых запытаў. Як і ў прыкладзе з Vertical Bar, спачатку выбіраемы крыніца дадзеных.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Пасля гэтага на экране адлюструецца табліца з адной калонкай, якая паказвае агульную колькасць запытаў за абраны інтэрвал часу.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Мы будзем змяняць толькі блок "Buckets". Націскаем кнопку "Add" і выбіраемы "Split rows".

Стварэнне Dashboard у Kibana для маніторынгу логаў
У поле "Aggregation" выбіраемы "Terms". А ў якое з'явілася поле "Field" выбіраемы "url.keyword".

Стварэнне Dashboard у Kibana для маніторынгу логаў
Указаўшы ў поле "Custom label" значэнне "Url" і націснуўшы "Update", мы атрымаем жаданую табліцу з лікам запытаў па кожным з URL за абраны прамежак часу.

Стварэнне Dashboard у Kibana для маніторынгу логаў
У верхняй частцы экрана зноў націснем кнопку «Save» і пакажам назву табліцы, напрыклад Urls. Вернемся назад на Dashboard і ўбачым абодва створаных адлюстравання.

Стварэнне Dashboard у Kibana для маніторынгу логаў

Праца з Dashboard

Ствараючы Dashboard, у наладах аб'ектаў адлюстравання мы ўсталёўвалі толькі асноўныя параметры выгляду. Няма сэнсу паказваць у аб'ектах дадзеныя для фільтраў, напрыклад, "дыяпазон дат", "фільтраванне па useragent", "фільтраванне па краіне запыту" і г.д. Значна зручней паказваць жаданы часавы прамежак або задаваць неабходнае фільтраванне ў панэлі запытаў, якая знаходзіцца над аб'ектамі.

Стварэнне Dashboard у Kibana для маніторынгу логаў
Дададзеныя на гэтай панэлі фільтры прымяняцца да ўсяго Dashboard, і ўсе аб'екты адлюстравання перабудуюцца ў адпаведнасці з актуальнымі адфільтраваць дадзенымі.

Заключэнне

Kibana - магутная прылада, які дазваляе візуалізаваць любыя дадзеныя ў зручным выглядзе. Я пастараўся паказаць настройку двух асноўных відаў адлюстравання. Але і іншыя віды наладжваюцца падобнай выявай. А багацце налад, якія я пакінуў "за кадрам", дазволяць вам вельмі гнутка наладжваць графікі пад свае запатрабаванні.

Крыніца: habr.com

Дадаць каментар