Створення Dashboard у Kibana для моніторингу логів

Створення Dashboard у Kibana для моніторингу логів

Привіт, мене звуть Євген, я тимлід B2B-напрямку в Сітімобіл. Однією із завдань нашої команди є підтримка інтеграцій на замовлення таксі від партнерів, і для забезпечення стабільного сервісу ми завжди повинні розуміти, що відбувається в наших мікросервісах. І для цього слід постійно стежити за логами.

У Сітімобілі для роботи з логами ми використовуємо 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

Додати коментар або відгук