Сегодня мы поговорим о последнем компоненте ELK стэка от Elastic — Kibana. Хотя Logstash отлично справляется обработкой логов и прочих потоков данных, а Elasticsearch поможет их сохранить, проиндексировать и запустить парочку поисковых запросов, ни у одного их них нету пользовательского интерфейса. А анализировать данные и искать закономерности из командной строки — удовольствие для любителей. Очень странных любителей…
И тут на помощь приходит Kibana.
Что такое Kibana
Kibana — это вэб-окно в данные Elasticsearch. Она поможет составить запросы, построить графики и дашборды, и даже покажет немного статистики. Вместе с плагином X-Pack в неё можно добавить инструменты мониторинга, уведомлений и пару других полезностей.
Как и с любым другим исключительно UI инструментом, рассказывать про каждую кнопку и картинку было бы странно, поэтому мы просто пройдёмся по основным фичам. Но сначала Kibana нужно как-то установить.
Установка
Как и все остальные компоненты ELK стэка, Kibana требует Java. Как только требование удовлетворено, процесс установки сводится к банальному скачай-и-распакуй. После этого можно запускать bin/kibana
и гештальт, можно сказать, завершён.
Но! Без Elasticsearch, живущего неподалёку, Kibana удивительно бесполезна. Если Elasticsearch всё-таки есть рядом, его URL нужно положить в config/kibana.yml
(опция elasticsearch.url
), и после этого Kibana будет полностью готова к трудовым подвигам.
Правда, есть чуть более простой способ получить работоспособную Кибану. Если
- запустить её и Elasticsearch в Docker контейнерах,
- назвать контейнер с Elasticsearch —
elasticsearch
, и - положить их в одну сеть,
то они найдут друг друга и будут спокойно взаимодействовать. Все три условия может выполнить всего один docker-compose файл:
1 2 3 4 5 6 7 8 9 10 11 |
version: '2' services: elasticsearch: image: elasticsearch:5.2 ports: - "9200:9200" kibana: image: kibana:5.2 ports: - "5601:5601" |
Запускаем его через docker-compose up
, даём elasticsearch
секунд 10-15 доделать свои дела, и можно радоваться Кибане по адресу 127.0.0.1:5601
.
Добавляем тестовые данные
Ещё одна мини-проблема связанная с установкой — тестовые данные. Что ни говори, Kibana — инструмент для визуализации и работы с данными. Нет данных — нет визуализации. К большому счастью для нас в официальном гайде есть несколько тестовых датасетов и инструкция, как их устанавливать. Инструкция очень простая: скачать, распаковать, импортировать.
Индекс-паттерн
В хранении логов есть такая традиция — группировать их по датам и хранить в отдельных файлах. Logstash эту традицию поддерживает и потому будет писать логи в разные Elasticsearch индексы, например mylogs-2017-01-01
, mylogs-2017-01-02
, mylogs-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 стэком целиком, то это, в принципе, не недостаток.