Найти тему
Infinite Technologies

Настройка передачи логов из Keycloak в Elasticsearch

Оглавление

Для реализации функционала по передачи логов в elasticsearch у keycloak начиная с 18 версии есть встроенный функционал, реализуемый с помощью gelf

Настройка будет произведена с помощью docker compose.

Ссылка на проект в GitHub доступна внизу.

Настройка Keycloak

I Информация Список доступных переменных и аргументов консоли - https://www.keycloak.org/server/all-config

Переменные окружения

Необходимо добавить к контейнеру переменные окружения

Основные переменные окружения для активации gelf
Основные переменные окружения для активации gelf

tcp: - указываем, чтобы использовать только tcp соединение
Так же можно указать дополнительные параметры

Дополнительные параметры, но по факту они не изменили объём полученной информации
Дополнительные параметры, но по факту они не изменили объём полученной информации

Настройка Logstash

Блок Input

Добавляем в блок Input следующую информацию

  1. Запрещаем Udp
  2. Разрешаем Tcp
  3. Указываем порт для приёма данных
Logstash блок в Input для включения gelf плагина
Logstash блок в Input для включения gelf плагина

Блок Filter

Добавляем в блок Filter следующую информацию

  1. Модифицируем поле string host в поле object host.name . Иначе получим ошибку о том, что поле host должно быть объектом ( https://discuss.elastic.co/t/where-is-the-object-mapping-for-host-defined/281541/5 )
  2. добавляем разбивку строки с помощью плагина kv (Parses key-value pairs) ( https://www.elastic.co/guide/en/logstash/current/plugins-filters-kv.html )
Logstash блок Filter. Переименовываем поле host и разбиваем данные
Logstash блок Filter. Переименовываем поле host и разбиваем данные

Блок Output

Добавляем в блок Filter следующую информацию

  1. Настраиваем подключение к elasticsearch
  2. Включаем поддержку data_stream
  3. Указываем параметры data_stream. С указанными параметрами ниже данный лог будет иметь такие значения в полях dataset и namespace
Пример получаемых данных
Пример получаемых данных
Logstash блок Output. Настройка вывода в elasticsearch и настройка потока
Logstash блок Output. Настройка вывода в elasticsearch и настройка потока

Настройка Kibana

Заходим в Kibana

Stack Management > Index Management > Data Stream

Должен появится новый поток данных

Kibana > Stack Management > Index Management > Data Stream
Kibana > Stack Management > Index Management > Data Stream

Далее заходим Stack Management > Index patterns > Нажимаем кнопку Create index pattern (если pattern logs-keycloak-services не появился сам)

Kibana > Stack Management > Index patterns
Kibana > Stack Management > Index patterns

Далее идём в Discover и выбираем logs-keycloak-services

Kibana > Discover
Kibana > Discover

Видим, что логи появились

Пример простой панели для мониторинга ошибок

Kibana > Dashboard
Kibana > Dashboard

Ссылка на GitHub проект

Спасибо за внимание! Надеюсь данное решение пригодится в работе.