KIBANA - описание

Thank you for reading this post, don't forget to subscribe!

Что такое Kibana

Kibana — это вэб-окно в дан­ные Elasticsearch. Она помо­жет соста­вить запро­сы, постро­ить гра­фи­ки и даш­бор­ды, и даже пока­жет немно­го ста­ти­сти­ки. Вме­сте с пла­ги­ном X-Pack в неё мож­но доба­вить инстру­мен­ты мони­то­рин­га, уве­дом­ле­ний и пару дру­гих полезностей.

Как и с любым дру­гим исклю­чи­тель­но UI инстру­мен­том, рас­ска­зы­вать про каж­дую кноп­ку и кар­тин­ку было бы стран­но, поэто­му мы про­сто прой­дём­ся по основ­ным фичам. Но сна­ча­ла Kibana нуж­но как-то установить.

Установка

Как и все осталь­ные ком­по­нен­ты ELK стэка, Kibana тре­бу­ет Java. Как толь­ко тре­бо­ва­ние удо­вле­тво­ре­но, про­цесс уста­нов­ки сво­дит­ся к баналь­но­му ска­чай-и-рас­па­куй. После это­го мож­но запус­кать bin/kibana и гештальт, мож­но ска­зать, завершён.

Но! Без Elasticsearch, живу­ще­го непо­да­лё­ку, Kibana уди­ви­тель­но бес­по­лез­на. Если Elasticsearch всё-таки есть рядом, его URL нуж­но поло­жить в config/kibana.yml (опция  elasticsearch.url), и после это­го Kibana будет пол­но­стью гото­ва к тру­до­вым подвигам.

Прав­да, есть чуть более про­стой спо­соб полу­чить рабо­то­спо­соб­ную Киба­ну. Если

  1. запу­стить её и Elasticsearch в Docker контейнерах,
  2. назвать кон­тей­нер с Elasticsearch — elasticsearch, и
  3. поло­жить их в одну сеть,

то они най­дут друг дру­га и будут спо­кой­но вза­и­мо­дей­ство­вать. Все три усло­вия может выпол­нить все­го один docker-compose файл:

Запус­ка­ем его через docker-compose up, даём elasticsearch секунд 10-15 доде­лать свои дела, и мож­но радо­вать­ся Кибане по адре­су 127.0.0.1:5601.

Добавляем тестовые данные

Ещё одна мини-про­бле­ма свя­зан­ная с уста­нов­кой — тесто­вые дан­ные. Что ни гово­ри, Kibana — инстру­мент для визу­а­ли­за­ции и рабо­ты с дан­ны­ми. Нет дан­ных — нет визу­а­ли­за­ции. К боль­шо­му сча­стью для нас в офи­ци­аль­ном гай­де есть несколь­ко тесто­вых дата­се­тов и инструк­ция, как их уста­нав­ли­вать. Инструк­ция очень про­стая: ска­чать, рас­па­ко­вать, импортировать.

Индекс-паттерн

В хра­не­нии логов есть такая тра­ди­ция — груп­пи­ро­вать их по датам и хра­нить в отдель­ных фай­лах. Logstash эту тра­ди­цию под­дер­жи­ва­ет и пото­му будет писать логи в раз­ные Elasticsearch индек­сы, напри­мер mylogs-2017-01-01mylogs-2017-01-02mylogs-2017-01-03, и т.д. Но для визу­а­ли­за­ции удоб­нее всё-таки рабо­тать с одним индек­сом, а не с коллекцией.

Для это­го в Кибане есть такая шту­ка как индекс-пат­терн. Это все­го лишь стро­ка-шаб­лон, охва­ты­ва­ю­щая несколь­ко индек­сов. Напри­мер, шаб­лон для при­ме­ра выше —  mylogs-*.

Как толь­ко мы его сохра­ним, mylogs-* мож­но будет исполь­зо­вать как самый обыч­ный индекс.

Просмотр данных

Самый пер­вый пункт основ­но­го меню Киба­ны — «Discover» — одно­вре­мен­но и самое полез­ное место для озна­ком­ле­ния со сво­и­ми дан­ны­ми. С ходу там будет и стро­ка поис­ка, кото­рая пони­ма­ет Lucene язык запро­сов, и гисто­грам­ма рас­пре­де­ле­ния дан­ных индек­са по вре­ме­ни, и даже про­стей­шая ста­ти­сти­ка по неко­то­рым полям.

Син­так­сис Lucene уди­ви­тель­но про­стой. * — это най­ти всё. 13 — это най­ти 13 по всем полям. response:404 AND request:*.css — най­ти все запро­сы к CSS фай­лам, кото­рые ниче­го не нашли (404). Всё просто.

Ещё одно удоб­ство состо­ит в том, что спи­сок полей сле­ва очень даже интер­ак­тив­ный и ста­ра­тель­но полез­ный. Он будет пытать­ся пока­зать ста­ти­сти­ку по полям, если это име­ет смысл, и пред­ла­гать нари­со­вать хоть какой-нибудь под­хо­дя­щий под тип дан­ных график.

Напри­мер, кноп­ка «visualize» для чис­ло­вых дан­ных пока­жет обыч­ную гисто­грам­му. Для гео­гра­фи­че­ских же коор­ди­нат она поста­ра­ет­ся немно­го боль­ше и сра­зу откро­ет карту.

Графики и прочие визуализации

В Kibana пол­но и дру­гих спо­со­бов эти дан­ные отоб­ра­зить. От счёт­чи­ков и гра­фи­ков, до кус­ков Markdown и обла­ков тегов. Боль­шин­ство их них скры­ва­ют­ся на стра­ни­це «Visualize»:

 

Ниче­го необыч­но­го в этих ком­по­нен­тах нет, но я бы отме­тил пару момен­тов. Во-пер­вых, прак­ти­че­ски всё в ком­по­нен­тах мож­но клик­нуть, и тогда выбран­ный эле­мент пой­дёт пря­ми­ком поис­ко­вый запрос. Для како­го-нибудь оди­но­ко­го гра­фи­ка это вряд ли будет полез­ным, но для даш­бор­дов вполне может пригодиться.

Во-вто­рых, тот же настро­ен­ный гра­фик мож­но сохра­нить, и потом пере­ис­поль­зо­вать в тех же дашбордах.

Дашборды

Стра­ни­ца даш­бор­дов поз­во­ля­ет собрать сохра­нён­ные гра­фи­ки и про­чие ком­по­нен­ты с дан­ны­ми в одном месте.

Воз­мож­ность клик­нуть прак­ти­че­ски на любом кус­ке дан­ных тут сохра­ня­ет­ся, но теперь это пре­вра­ща­ет­ся в полез­ный инстру­мент. Напри­мер, мож­но клик­нуть по чему-нибудь в обла­ке тегов, напри­мер по US, и даш­борд цели­ком будет пока­зы­вать дан­ные толь­ко по US.

К тому же стро­ка поис­ка тут тоже есть, и выбор­ку мож­но уточ­нить ещё больше:

Timelion

Timelion — очень инте­рес­ная шту­ка. Это инстру­мент для ана­ли­за вре­мен­ных рядов с соб­стве­ным язы­ком для выбор­ки и мани­пу­ля­ции этих самых рядов. На прак­ти­ке при помо­щи это­го язы­ка мож­но сде­лать запрос в несколь­ко индек­сов, про­пу­стить резуль­тат через функ­цию, выбрать цвет и заго­лов­ки, и поло­жить на один гра­фик. Есть корот­кий и вполне понят­ный блог пост, объ­яс­ня­ю­щий зачем Timelion вооб­ще существует.

Итого

Kibana — это при­ят­ный инстру­мент для прак­ти­че­ской рабо­ты с дан­ны­ми, кото­рые мы успе­ли собрать в Elasticsearch. Она поз­во­ля­ет делать запро­сы, рисо­вать гра­фи­ки и даже пыта­ет­ся преду­га­дать сле­ду­ю­щий шаг и пока­зать ста­ти­сти­ку по полям, или ссыл­ку на под­хо­дя­щий гра­фик или карту.

В отли­чие от Grafana, Киба­на может рабо­тать толь­ко с Elasticsearch. Но так как она очень хоро­шо инте­гри­ру­ет­ся с Elastic стэком цели­ком, то это, в прин­ци­пе, не недостаток.