Введение в стек ELK
На этой лекции будут рассмотрены
Стек технологий ElasticSearch
Как из технологий ELK собирается инфраструктура?
Beats
Beats
Beats: расширяемость
Logstash
Настройка Logstash
Logstash
Logstash
Logstash
Logstash
Logstash
Logstash
Logstash
Logstash
Logstash
Logstash
Logstash
Logstash
Logstash
Logstash
Logstash
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
ElasticSearch
Заключение
Спасибо за внимание!

Введение в стек ELK

1. Введение в стек ELK

Максим Губин
Томск

2. На этой лекции будут рассмотрены

Стек технологий ELK: Logstash, ElasticSearch,
Kibana, beats;
Применение всех этих технологий;
2
Copyright © Econophysica 2019. All Rights Reserved

3. Стек технологий ElasticSearch

ELK состоит из трех основных комнонентов с открытым
исходным кодом, выпущенным комнанией “Elastic” (бывшая
Elasticsearch)
E => Elasticsearch (Масштабируемое хранилище данных с
широкими возможностями поиска)
L => Logstash (Инструмент для сбора, обогащения,
фильтрации и маршрутизации данных, например журналов
приложений)
K => Kibana (Инструмент для исследования и визуализации
данных)
Данные
3
Copyright © Econophysica 2019. All Rights Reserved
Logstash
Kibana

4. Как из технологий ELK собирается инфраструктура?

LogStash может передавать данные в ElasticSearch;
Можно добавить для резервирования Kafka/RabbitMQ;
Можно передавать данные из LogStash в другой
экземпляр LogStash;
Beats могут передавать данные в ElasticSearch;
Kafka;
Logstash.
4
Copyright © Econophysica 2019. All Rights Reserved

5. Beats

5
Copyright © Econophysica 2019. All Rights Reserved

6. Beats

Filebeat (следит за файловой системой);
Winlogbeat (следит за событиями журнала Windows);
Metricbeat (загрузка процессора, памяти, дисковые IO);
Heartbeat (время работы и доступность системы).
Packetbeat (сетевые пакеты);
Community Beats.
6
Copyright © Econophysica 2019. All Rights Reserved

7. Beats: расширяемость

Написаны на языке Go;
Имеется библиотека ElasticSearch;
Документация от сообщества;
Могут передавать данные в:
Logstash;
ElasticSearch;
Kafka;

7
Copyright © Econophysica 2019. All Rights Reserved

8. Logstash

Программное обеспечение с открытым исходным кодом для сбора,
преобразования, фильтрации и пересылки данных (например, данных
журнала) из входных источников в выходные источники (например,
Elasticsearch);
Реализован в JRuby и работает на JVM (виртуальная машина Java);
Простая архитектура на основе сообщений;
Расширяемый с помощью плагинов (например, входных, выходных, и
фильтров).
8
Copyright © Econophysica 2019. All Rights Reserved

9. Настройка Logstash

Множество
разных
источников
Фильтрация и
преобразование
данных согласно
условиям; есть
обработчики для
популярных
форматов
Отдача данных
множеству
потребителей
9
Copyright © Econophysica 2019. All Rights Reserved

10. Logstash

Результат запуска Logstash с такой конфигурацией:
bin/logstash -f logstash.conf
10
Copyright © Econophysica 2019. All Rights Reserved

11. Logstash

Пример конфигурации для работы с системным журналом
11
Copyright © Econophysica 2019. All Rights Reserved

12. Logstash

Результат запуска Logstash с такой конфигурацией:
bin/logstash -f logstash.conf
12
Copyright © Econophysica 2019. All Rights Reserved

13. Logstash

Плагины ввода данных
file -> для обработки файлов
tcp, udp, unix -> чтение напрямую из сетевых сокетов
http -> для обработки запросов HTTP POST
http_poller -> для опроса HTTP-сервисов как источников ввода
imap -> доступ и обработка почты imap
Различные входные плагины для доступа к MOM (очередям сообщений)
Rabbitmq, Stomp, …
Различные плагины для доступа к системам баз данных
Плагины для чтения данных из сервисов системного журнала и из командной строки
13
JDBC ,Elasticsearch, …
syslog, eventlog, pipe, exec
И так далее.
Copyright © Econophysica 2019. All Rights Reserved

14. Logstash

Logstash Forwarder и Lumberjack
Приложение Logstash forwarder позволяет пересылать ввод с
одного хоста (источника данных) на другой хост для
обработки;
Плагин ввода данных Lumberjack можно настроить для
приема сообщений, получаемых из Logstash forwarder.
Данные можно зашифровать с использованием сертификатов.
14
Copyright © Econophysica 2019. All Rights Reserved

15. Logstash

Плагины вывода данных
stdout, pipe, exec -> Выводят данные в консоль
file -> Сохраняет данные в файл
email -> Отправляет данные по электронной почте
tcp, udp, websocket -> Отправляет данные через сетевые соединения
http -> Передает данные через HTTP-запрос
Множество плагинов для передачи данных в базы данных и облачные хранилища
Множество плагинов для передачи данных в очереди сообщений MOM
Rabbitmq, stomp, …
Множество плагинов для передачи данных в приложения расчета метрик
15
elasticsearch, solr_http, mongodb, google_bigquery, google_cloud_storage, opentsdb
graphite, graphtastic, ganglic, metriccatcher
Copyright © Econophysica 2019. All Rights Reserved

16. Logstash

Запись в несколько узлов
Плагины вывода Elasticsearch могут отдавать данные на
несколько узлов
Они распределяют выходные объекты по разным узлам,
обеспечивая балансировку нагрузки
Экземпляр Logstash также может быть частью кластера
Elasticsearch и записывать данные через протокол кластера..
16
Copyright © Econophysica 2019. All Rights Reserved

17. Logstash

Плагины фильтров
grok -> разбор и структурирование произвольного текста: лучший универсальный вариант
для разбора текста в объекты с заданной структурой
Фильтры для разбора различных популярных форматов данных
17
csv, json, kv (key-valued paired messages), xml, …
multiline -> объединить несколько строк входных данных в одно событие Logstash
split -> разбить многострочное сообщение на несколько событий Logstash
aggregate -> аггрегировать несколько отдельных строк в одно событие
mutate -> изменить поле (переименовать, удалить, заменить, изменить значение)
dns -> выполнить DNS-запрос для разрешения IP-адреса
geoip -> найти географическое положение IP-адреса
И многое, многое другое.
Copyright © Econophysica 2019. All Rights Reserved

18. Logstash

Grok: пример использования
Входные данные: 192.168.1.22 GET /index.html 15224 0.052
grok filter
filter {
grok { match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request}
%{NUMBER:bytes} %{NUMBER:duration}" }
}
Результат:
client: 192.168.1.22
method: GET
request: /index.html
bytes: 15224
duration: 0.052
18
Copyright © Econophysica 2019. All Rights Reserved

19. Logstash

Масштабируемость и доступность
19
Copyright © Econophysica 2019. All Rights Reserved

20. Logstash

Реальный пример конфигурации, CERN, 2016
Single Machine
IT Service
20
Copyright © Econophysica 2019. All Rights Reserved

21. Logstash

Реальный пример конфигурации, CERN, 2016
Filebeat: на всех машинах, с которых вводятся данные.
Данные передаются в Logstash Shipper, с ожиданием подтверждения.
21
Copyright © Econophysica 2019. All Rights Reserved

22. Logstash

Реальный пример конфигурации, CERN, 2016
Logstash shipper: получает данные, собирает многострочные
сообщения в единое целое, отдает результат и статистики в очередь.
22
Copyright © Econophysica 2019. All Rights Reserved

23. Logstash

Реальный пример конфигурации, CERN, 2016
Logstash Indexer забирает данные из очереди, разбирает их с
использованием регулярных выражений, и отдает результаты в
ElasticSearch, а статистику – в очередь.
23
Copyright © Econophysica 2019. All Rights Reserved

24. Logstash

Реальный пример конфигурации, CERN, 2016
Logstash Monitor читает журналы Logstash и данные
статистики из очереди, и передает из в Elasticsearch.
24
Copyright © Econophysica 2019. All Rights Reserved

25. ElasticSearch

Серверная среда для хранения больших данных в виде структурированного индекса и
запросов к ним
Написан на Java
На основе Apache Lucene
Использует Lucene для создания и управления индексами
Документно-ориентированные (структурированные) индексные записи, которые могут (но
не должны) быть связаны со схемой
Объединяет полнотекстовые параметры поиска для текстовых полей с более точными
параметрами поиска для других типов полей, таких как поля даты и времени, поля
геолокации и т. д.
Возможности поиска и анализа почти в реальном времени
Предоставляет Restful API в виде JSON через HTTP
25
Copyright © Econophysica 2019. All Rights Reserved

26. ElasticSearch

Масштабируемость
Elasticsearch может работать как одно интегрированное приложение на
нескольких узлах кластера
Индексы хранятся в экземплярах Lucene, называемых «shard», которые могут
быть распределены по нескольким узлам
Есть два типа shard
Первичные shard
Копии
Копии обеспечивают
Отказоустойчивость и, следовательно, защиту данных
Ускорение выполнения запросов
26
Copyright © Econophysica 2019. All Rights Reserved

27. ElasticSearch

Индексация данных
Документе в формате JSON поступают на сервер, например, с помощью REST API
Схема не требуется, ElasticSearch сам определяет тип атрибутов
Но возможно явно указать схему, то есть типы для атрибутов
string, byte, short, integer, long, float, double, boolean, date, и т. д.
Анализ текстовых атрибутов для полнотекстового поиска
Извлечение слов, приведение слов к их базовой форме (stemming)
Стоп слова
Поддержка нескольких языков
Можно автоматически генерировать идентификаторы для наборов данных, или
указывать их явно при индексации
27
Copyright © Econophysica 2019. All Rights Reserved

28. ElasticSearch

Полнотекстовый поиск
Полнотекстовый поиск (Full text search) – поиск ключевых слов
по содержимому документов
Документ – не- или частично структурированный объект,
содержащий текстовые и другие атрибуты
Почему не реляционная БД?
select * from articles where LOWER(content) like ‘%tersoff%’
28
Copyright © Econophysica 2019. All Rights Reserved

29. ElasticSearch

Полнотекстовый поиск в реляционных СУБД
MS SQL Full Text Search
Oracle Text
MySQL, PostgreSql Full Text Search
Часто реализуется внешними сервисами и специализированными
хранимыми процедурами на языках С++, Java, C#
Проблемы:
Медленно работает
Слабая функциональность
Плохая расширяемость
Не приоритетная задача для реляционной СУБД
29
Copyright © Econophysica 2019. All Rights Reserved

30. ElasticSearch

Индексация и поиск документа
Перед индексацией документа происходит его предобработка:
Разбиение на термы (токены)
Применение набора фильтров термов
Сохранение термов в инвертированный индекс вместе с позициями в исходных
документах
Аналогичная трансформация происходит с поисковыми запросами:
Разбиение на термы (токены)
Применение набора фильтров термов
Поиск документов в инвертированном индексе по термам
Сортировка документов по релевантности
30
Copyright © Econophysica 2019. All Rights Reserved

31. ElasticSearch

Индексация на примере
31
Copyright © Econophysica 2019. All Rights Reserved

32. ElasticSearch

Индексация на примере: инвертированный индекс
Проиндексируем три простых документа:
Подложки на основе из Be и нитрида алюминия
Кристалл с примесью бериллия
Beryllium oxide
Термы
подложк
основ
beryllium
AluminumNitride
кристалл
примес
oxid
32
Copyright © Econophysica 2019. All Rights Reserved
Номера документов
1
1
1, 2, 3
1
2
2
3

33. ElasticSearch

Расширяемость
Запрос на индексацию
документа
Анализ при
индексации
Данные
индекса
ElasticSearch
точки расширения
(анализаторы, токенайзеры)
33
Copyright © Econophysica 2019. All Rights Reserved
Анализ при
поиске
Поисковый
запрос

34. ElasticSearch

REST API
Запрос PUT вставляет полезную нагрузку JSON в индекс с именем «megacorp» в качестве
объекта типа «employee»
Схема для типа может быть явно определена (во время создания индекса или автоматически)
Текстовое поле (например, «about») будет проанализировано, если для этого поля настроены
анализаторы
В URL запроса указан идентификатор «1» для записи объекта в индекс
34
Copyright © Econophysica 2019. All Rights Reserved

35. ElasticSearch

REST API: получение записи из индекса
GET /megacorp/employee/1
Вызов «GET» API REST с «/megacorp/employee/1» извлечет запись с
идентификатором 1 как объект JSON
35
Copyright © Econophysica 2019. All Rights Reserved

36. ElasticSearch

Простой запрос
GET /megacorp/employee/_search
GET запрос с «_search» в
конце URL выполняет запрос
поиска
Результаты поиска
возвращаются в ответе JSON в
виде массива «hits»
Другие метаданные содержат
количество результатов
поиска («total») и max_score
36
Copyright © Econophysica 2019. All Rights Reserved

37. ElasticSearch

Поисковый запрос с параметрами
GET /megacorp/employee/_search?q=last_name:Smith
37
Copyright © Econophysica 2019. All Rights Reserved

38. ElasticSearch

Query DSL
Query DSL - это язык запросов на основе JSON
Передается в теле поискового запроса
Запросы match имеют ту же семантику, что и простые запросы
38
Copyright © Econophysica 2019. All Rights Reserved

39. ElasticSearch

Пример Query DSL
Состоит из query и filter
Часть query ищет все записи с
фамилией «Smith» (2)
Затем фильтр будет выбирать
только те записи, которые
соответствуют фильтру
диапазона (1) “age”: {“gt”: 30}
39
Copyright © Econophysica 2019. All Rights Reserved

40. ElasticSearch

Возможности Query DSL
Комбинированный поиск по разным атрибутам и разным индексам
Множество возможностей для полнотекстового поиска по значениям атрибутов
Точное совпадение, неточное, близость (фразы), частичное совпадение
Поддержка основных логических операторов (И / или,…)
Запросы с диапазонами значений(включая диапазоны дат)
...
Контроль актуальности и ранжирование результатов поиска, сортировка
результатов
Повышение релевантности при индексации
Повышать или игнорировать релевантность при запросах
Различные другие возможности сортировки результатов поиска
40
Copyright © Econophysica 2019. All Rights Reserved

41. ElasticSearch

Возможности Query DSL
Запросы с использованием геоданных
Поисковые подсказки
Агрегация поисковых данных в реальном времени
Статистические расчеты (суммы, среднее значение, максимум, минимум,…)
Группировка
Используя термины
Статистические расчеты
Классификация (Группировка по диапазонам)
Правила фильтрации
По географическому расстоянию
...
41
Copyright © Econophysica 2019. All Rights Reserved

42. ElasticSearch

Применения для стека ELK
Управление данными и анализ данных журналов
Мониторинг систем и / или приложений и уведомление операторов о
критических событиях
Сбор и анализировать данныхдля бизнес-аналитики
Сбор и анализ данных управления энергопотреблением в
энергораспределительной сети, и данные о событиях из сетей обработки
научных данных
Экологические данные
Использование стека ELK для поискового доступа к большим данным в
сетевых информационных системах
42
Copyright © Econophysica 2019. All Rights Reserved

43. ElasticSearch

Применения для стека ELK
1.
Единственный Backend для
приложения
Сохранить blog post
ElasticSearch
индекс
Приложение
Поиск по блогам
Сохранить blog post,
Приложение
2.
Дополнительное хранилище
для поиска по данным в
первичной БД
Обновление финансовой
информации об оплате
Основная база
данных
(SQL, MongoDB)
Синхронизация
данных
Поиск по блогам
ElasticSeach
индекс
LogStash
3.
Инструмент для сбора и
поиска информации из
множества источников
Сбор, транформация и загрузка данных в elastic
Apache Flume
Rsyslog
43
Copyright © Econophysica 2019. All Rights Reserved
ElasticSearch
индекс
Визуализация
данных
Kibana

44. ElasticSearch

Управление данными и анализ данных журналов
Множество разных типов журналов
Журналы приложений
Журналы операционной системы
Журналы сетевого трафика от роутеров и пр.
Разные цели анализа
Обнаружение ошибок во время выполнения или во время
тестирования приложений
Выявление и анализ угроз безопасности
Сводные статистические данные / метрики
44
Copyright © Econophysica 2019. All Rights Reserved

45. ElasticSearch

Проблемы анализа данных журналов
Нет централизации
Данные журнала могут быть везде
на разных серверах и в разных местах на одном сервере
Проблемы доступности
Журналы может быть трудно найти
Доступ к серверу / устройству часто затруднен для аналитика
Необходим высокий опыт для доступа к журналам на разных платформах
Журналы могут быть большими и, следовательно, их трудно копировать
Доступ по SSH и grep в журналах не масштабируются
Нет согласованности
Структура записей журнала отличается для каждого приложения, системы или устройства
Специальные знания необходимы для интерпретации различных типов журналов
Различия в форматах усложняют поиск
45
Copyright © Econophysica 2019. All Rights Reserved
Много разных типов форматов времени

46. ElasticSearch

Индексация и поиск документа
Logstash позволяет собирать все записи журнала в центральном хранилище (например,
Elasticsearch)
Конечным пользователям не нужно знать, где находятся файлы журналов.
Большие файлы журнала будут передаваться непрерывно небольшими порциями
Записи файла журнала могут быть преобразованы в согласованные объекты событий
Простой доступ для конечных пользователей через интерфейсы на основе браузера
(например, Kibana)
Elasticsearch / Kibana предоставляют расширенные функциональные возможности для
анализа и визуализации данных журнала
46
Copyright © Econophysica 2019. All Rights Reserved

47. ElasticSearch

Мониторинг
Стек ELK также предоставляет хорошие решения для мониторинга данных и
оповещения пользователей.
Logstash может проверять условия на записи файла журнала и даже
агрегированные метрики
И отправлять уведомления о событиях в определенные выходные плагины, если
критерии мониторинга выполнены
Например. переслать событие уведомления в плагин вывода электронной почты для
уведомления пользователя (например, системного администратора) о состоянии
системы
Переслать события уведомления в специальное приложение мониторинга
Elasticsearch в сочетании с Watcher (еще один продукт Elastic)
Может обрабатывать произвольные запросы Elasticsearch для создания
предупреждений и уведомлений
Эти запросы могут выполняться через определенные промежутки времени
Когда выполняется отслеживаемое условие, можно предпринять действия (отправить
электронное письмо или переслать событие в другую систему)
47
Copyright © Econophysica 2019. All Rights Reserved

48. Заключение

Стек ELK прост в использовании и имеет множество применений
Управление данными и анализ журналов
Мониторинг систем и / или приложений и уведомление операторов о критических событиях
Сбор и анализ больших данных других типов
Предоставление доступа к большим данным в крупномасштабных веб-приложениях
Тем самым решается много проблем с такими вариантами использования по сравнению с
«самодельными» решениями.
Благодаря своей ориентированности на сервисы, ELK легко встраивать в существующие большие
приложения микросервисной архитектуры.
48
Copyright © Econophysica 2019. All Rights Reserved

49. Спасибо за внимание!

[email protected]
English     Русский Правила