Содержание

Слайд 2

Стек технологий ELK: Logstash, ElasticSearch, Kibana, beats; Применение всех этих технологий;

Стек технологий ELK: Logstash, ElasticSearch, Kibana, beats;
Применение всех этих технологий;

На этой

лекции будут рассмотрены

2

Copyright © Econophysica 2019. All Rights Reserved

Слайд 3

ELK состоит из трех основных комнонентов с открытым исходным кодом, выпущенным

ELK состоит из трех основных комнонентов с открытым исходным кодом, выпущенным

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

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

3

Copyright © Econophysica 2019. All Rights Reserved

Logstash

Данные

Kibana

Слайд 4

LogStash может передавать данные в ElasticSearch; Можно добавить для резервирования Kafka/RabbitMQ;

LogStash может передавать данные в ElasticSearch;
Можно добавить для резервирования Kafka/RabbitMQ;
Можно передавать

данные из LogStash в другой экземпляр LogStash;
Beats могут передавать данные в ElasticSearch;
Kafka;
Logstash.

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

4

Copyright © Econophysica 2019. All Rights Reserved

Слайд 5

Beats 5 Copyright © Econophysica 2019. All Rights Reserved

Beats

5

Copyright © Econophysica 2019. All Rights Reserved

Слайд 6

Filebeat (следит за файловой системой); Winlogbeat (следит за событиями журнала Windows);

Filebeat (следит за файловой системой);
Winlogbeat (следит за событиями журнала Windows);
Metricbeat (загрузка

процессора, памяти, дисковые IO);
Heartbeat (время работы и доступность системы).
Packetbeat (сетевые пакеты);
Community Beats.

Beats

6

Copyright © Econophysica 2019. All Rights Reserved

Слайд 7

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

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

Beats:

расширяемость

7

Copyright © Econophysica 2019. All Rights Reserved

Слайд 8

Программное обеспечение с открытым исходным кодом для сбора, преобразования, фильтрации и

Программное обеспечение с открытым исходным кодом для сбора, преобразования, фильтрации и

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

Logstash

Copyright © Econophysica 2019. All Rights Reserved

8

Слайд 9

Множество разных источников Отдача данных множеству потребителей Фильтрация и преобразование данных

Множество разных источников

Отдача данных множеству потребителей

Фильтрация и преобразование данных согласно условиям;

есть обработчики для популярных форматов

Настройка Logstash

9

Copyright © Econophysica 2019. All Rights Reserved

Слайд 10

bin/logstash -f logstash.conf Logstash 10 Copyright © Econophysica 2019. All Rights

bin/logstash -f logstash.conf

Logstash

10

Copyright © Econophysica 2019. All Rights Reserved

Результат запуска Logstash

с такой конфигурацией:
Слайд 11

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

Logstash

11

Copyright © Econophysica 2019. All Rights Reserved

Пример конфигурации для работы с

системным журналом
Слайд 12

bin/logstash -f logstash.conf Logstash 12 Copyright © Econophysica 2019. All Rights

bin/logstash -f logstash.conf

Logstash

12

Copyright © Econophysica 2019. All Rights Reserved

Результат запуска Logstash

с такой конфигурацией:
Слайд 13

file -> для обработки файлов tcp, udp, unix -> чтение напрямую

file -> для обработки файлов
tcp, udp, unix -> чтение напрямую из

сетевых сокетов
http -> для обработки запросов HTTP POST
http_poller -> для опроса HTTP-сервисов как источников ввода
imap -> доступ и обработка почты imap
Различные входные плагины для доступа к MOM (очередям сообщений)
Rabbitmq, Stomp, …
Различные плагины для доступа к системам баз данных
JDBC ,Elasticsearch, …
Плагины для чтения данных из сервисов системного журнала и из командной строки
syslog, eventlog, pipe, exec
И так далее.

Logstash

13

Copyright © Econophysica 2019. All Rights Reserved

Плагины ввода данных

Слайд 14

Приложение Logstash forwarder позволяет пересылать ввод с одного хоста (источника данных)

Приложение Logstash forwarder позволяет пересылать ввод с одного хоста (источника данных)

на другой хост для обработки;
Плагин ввода данных Lumberjack можно настроить для приема сообщений, получаемых из Logstash forwarder.
Данные можно зашифровать с использованием сертификатов.

Logstash

14

Copyright © Econophysica 2019. All Rights Reserved

Logstash Forwarder и Lumberjack

Слайд 15

stdout, pipe, exec -> Выводят данные в консоль file -> Сохраняет

stdout, pipe, exec -> Выводят данные в консоль
file -> Сохраняет данные

в файл
email -> Отправляет данные по электронной почте
tcp, udp, websocket -> Отправляет данные через сетевые соединения
http -> Передает данные через HTTP-запрос
Множество плагинов для передачи данных в базы данных и облачные хранилища
elasticsearch, solr_http, mongodb, google_bigquery, google_cloud_storage, opentsdb
Множество плагинов для передачи данных в очереди сообщений MOM
Rabbitmq, stomp, …
Множество плагинов для передачи данных в приложения расчета метрик
graphite, graphtastic, ganglic, metriccatcher

Logstash

15

Copyright © Econophysica 2019. All Rights Reserved

Плагины вывода данных

Слайд 16

Плагины вывода Elasticsearch могут отдавать данные на несколько узлов Они распределяют

Плагины вывода Elasticsearch могут отдавать данные на несколько узлов
Они распределяют выходные

объекты по разным узлам, обеспечивая балансировку нагрузки
Экземпляр Logstash также может быть частью кластера Elasticsearch и записывать данные через протокол кластера..

Logstash

16

Copyright © Econophysica 2019. All Rights Reserved

Запись в несколько узлов

Слайд 17

grok -> разбор и структурирование произвольного текста: лучший универсальный вариант для

grok -> разбор и структурирование произвольного текста: лучший универсальный вариант для

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

Logstash

17

Copyright © Econophysica 2019. All Rights Reserved

Плагины фильтров

Слайд 18

Входные данные: 192.168.1.22 GET /index.html 15224 0.052 grok filter filter {

Входные данные: 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

Logstash

18

Copyright © Econophysica 2019. All Rights Reserved

Grok: пример использования

Слайд 19

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

Logstash

19

Copyright © Econophysica 2019. All Rights Reserved

Масштабируемость и доступность

Слайд 20

Logstash 20 Copyright © Econophysica 2019. All Rights Reserved Реальный пример

Logstash

20

Copyright © Econophysica 2019. All Rights Reserved

Реальный пример конфигурации, CERN, 2016

Single

Machine

IT Service

Слайд 21

Filebeat: на всех машинах, с которых вводятся данные. Данные передаются в

Filebeat: на всех машинах, с которых вводятся данные.
Данные передаются в Logstash

Shipper, с ожиданием подтверждения.

Logstash

21

Copyright © Econophysica 2019. All Rights Reserved

Реальный пример конфигурации, CERN, 2016

Слайд 22

Logstash shipper: получает данные, собирает многострочные сообщения в единое целое, отдает

Logstash shipper: получает данные, собирает многострочные сообщения в единое целое, отдает

результат и статистики в очередь.

Logstash

22

Copyright © Econophysica 2019. All Rights Reserved

Реальный пример конфигурации, CERN, 2016

Слайд 23

Logstash Indexer забирает данные из очереди, разбирает их с использованием регулярных

Logstash Indexer забирает данные из очереди, разбирает их с использованием регулярных

выражений, и отдает результаты в ElasticSearch, а статистику – в очередь.

Logstash

23

Copyright © Econophysica 2019. All Rights Reserved

Реальный пример конфигурации, CERN, 2016

Слайд 24

Logstash Monitor читает журналы Logstash и данные статистики из очереди, и

Logstash Monitor читает журналы Logstash и данные статистики из очереди, и

передает из в Elasticsearch.

Logstash

24

Copyright © Econophysica 2019. All Rights Reserved

Реальный пример конфигурации, CERN, 2016

Слайд 25

Серверная среда для хранения больших данных в виде структурированного индекса и

Серверная среда для хранения больших данных в виде структурированного индекса и

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

ElasticSearch

25

Copyright © Econophysica 2019. All Rights Reserved

Слайд 26

Elasticsearch может работать как одно интегрированное приложение на нескольких узлах кластера

Elasticsearch может работать как одно интегрированное приложение на нескольких узлах кластера
Индексы

хранятся в экземплярах Lucene, называемых «shard», которые могут быть распределены по нескольким узлам
Есть два типа shard
Первичные shard
Копии
Копии обеспечивают
Отказоустойчивость и, следовательно, защиту данных
Ускорение выполнения запросов

ElasticSearch

26

Copyright © Econophysica 2019. All Rights Reserved

Масштабируемость

Слайд 27

Документе в формате JSON поступают на сервер, например, с помощью REST

Документе в формате JSON поступают на сервер, например, с помощью REST

API
Схема не требуется, ElasticSearch сам определяет тип атрибутов
Но возможно явно указать схему, то есть типы для атрибутов
string, byte, short, integer, long, float, double, boolean, date, и т. д.
Анализ текстовых атрибутов для полнотекстового поиска
Извлечение слов, приведение слов к их базовой форме (stemming)
Стоп слова
Поддержка нескольких языков
Можно автоматически генерировать идентификаторы для наборов данных, или указывать их явно при индексации

ElasticSearch

27

Copyright © Econophysica 2019. All Rights Reserved

Индексация данных

Слайд 28

Полнотекстовый поиск (Full text search) – поиск ключевых слов по содержимому

Полнотекстовый поиск (Full text search) – поиск ключевых слов по содержимому

документов
Документ – не- или частично структурированный объект, содержащий текстовые и другие атрибуты
Почему не реляционная БД?
select * from articles where LOWER(content) like ‘%tersoff%’

ElasticSearch

28

Copyright © Econophysica 2019. All Rights Reserved

Полнотекстовый поиск

Слайд 29

MS SQL Full Text Search Oracle Text MySQL, PostgreSql Full Text

MS SQL Full Text Search
Oracle Text
MySQL, PostgreSql Full Text Search
Часто реализуется

внешними сервисами и специализированными хранимыми процедурами на языках С++, Java, C#
Проблемы:
Медленно работает
Слабая функциональность
Плохая расширяемость
Не приоритетная задача для реляционной СУБД

ElasticSearch

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 Индексация на примере

ElasticSearch

31

Copyright © Econophysica 2019. All Rights Reserved

Индексация на примере

Слайд 32

Проиндексируем три простых документа: Подложки на основе из Be и нитрида

Проиндексируем три простых документа:
Подложки на основе из Be и нитрида алюминия
Кристалл

с примесью бериллия
Beryllium oxide

ElasticSearch

32

Copyright © Econophysica 2019. All Rights Reserved

Индексация на примере: инвертированный индекс

Слайд 33

ElasticSearch 33 Copyright © Econophysica 2019. All Rights Reserved Расширяемость Запрос

ElasticSearch

33

Copyright © Econophysica 2019. All Rights Reserved

Расширяемость

Запрос на индексацию документа

Анализ при

индексации

Данные индекса

Анализ при поиске

Поисковый запрос

ElasticSearch

точки расширения
(анализаторы, токенайзеры)

Слайд 34

Запрос PUT вставляет полезную нагрузку JSON в индекс с именем «megacorp»

Запрос PUT вставляет полезную нагрузку JSON в индекс с именем «megacorp»

в качестве объекта типа «employee»
Схема для типа может быть явно определена (во время создания индекса или автоматически)
Текстовое поле (например, «about») будет проанализировано, если для этого поля настроены
анализаторы
В URL запроса указан идентификатор «1» для записи объекта в индекс

ElasticSearch

34

Copyright © Econophysica 2019. All Rights Reserved

REST API

Слайд 35

Вызов «GET» API REST с «/megacorp/employee/1» извлечет запись с идентификатором 1

Вызов «GET» API REST с «/megacorp/employee/1» извлечет запись с идентификатором 1

как объект JSON

ElasticSearch

35

Copyright © Econophysica 2019. All Rights Reserved

REST API: получение записи из индекса

GET /megacorp/employee/1

Слайд 36

GET /megacorp/employee/_search GET запрос с «_search» в конце URL выполняет запрос

GET /megacorp/employee/_search
GET запрос с «_search» в конце URL выполняет запрос поиска
Результаты

поиска возвращаются в ответе JSON в виде массива «hits»
Другие метаданные содержат количество результатов поиска («total») и max_score

ElasticSearch

36

Copyright © Econophysica 2019. All Rights Reserved

Простой запрос

Слайд 37

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

GET /megacorp/employee/_search?q=last_name:Smith

ElasticSearch

37

Copyright © Econophysica 2019. All Rights Reserved

Поисковый запрос с параметрами

Слайд 38

Query DSL - это язык запросов на основе JSON Передается в

Query DSL - это язык запросов на основе JSON
Передается в теле

поискового запроса
Запросы match имеют ту же семантику, что и простые запросы

ElasticSearch

38

Copyright © Econophysica 2019. All Rights Reserved

Query DSL

Слайд 39

Состоит из query и filter Часть query ищет все записи с

Состоит из query и filter
Часть query ищет все записи с фамилией

«Smith» (2)
Затем фильтр будет выбирать только те записи, которые соответствуют фильтру диапазона (1) “age”: {“gt”: 30}

ElasticSearch

39

Copyright © Econophysica 2019. All Rights Reserved

Пример Query DSL

Слайд 40

Комбинированный поиск по разным атрибутам и разным индексам Множество возможностей для

Комбинированный поиск по разным атрибутам и разным индексам
Множество возможностей для полнотекстового

поиска по значениям атрибутов
Точное совпадение, неточное, близость (фразы), частичное совпадение
Поддержка основных логических операторов (И / или,…)
Запросы с диапазонами значений(включая диапазоны дат)
...
Контроль актуальности и ранжирование результатов поиска, сортировка результатов
Повышение релевантности при индексации
Повышать или игнорировать релевантность при запросах
Различные другие возможности сортировки результатов поиска

ElasticSearch

40

Copyright © Econophysica 2019. All Rights Reserved

Возможности Query DSL

Слайд 41

Запросы с использованием геоданных Поисковые подсказки Агрегация поисковых данных в реальном

Запросы с использованием геоданных
Поисковые подсказки
Агрегация поисковых данных в реальном времени
Статистические расчеты

(суммы, среднее значение, максимум, минимум,…)
Группировка
Используя термины
Статистические расчеты
Классификация (Группировка по диапазонам)
Правила фильтрации
По географическому расстоянию
...

ElasticSearch

41

Copyright © Econophysica 2019. All Rights Reserved

Возможности Query DSL

Слайд 42

Управление данными и анализ данных журналов Мониторинг систем и / или

Управление данными и анализ данных журналов
Мониторинг систем и / или приложений

и уведомление операторов о критических событиях
Сбор и анализировать данныхдля бизнес-аналитики
Сбор и анализ данных управления энергопотреблением в энергораспределительной сети, и данные о событиях из сетей обработки научных данных
Экологические данные
Использование стека ELK для поискового доступа к большим данным в сетевых информационных системах

ElasticSearch

42

Copyright © Econophysica 2019. All Rights Reserved

Применения для стека ELK

Слайд 43

ElasticSearch 43 Copyright © Econophysica 2019. All Rights Reserved Применения для

ElasticSearch

43

Copyright © Econophysica 2019. All Rights Reserved

Применения для стека ELK

Единственный Backend

для приложения
Дополнительное хранилище для поиска по данным в первичной БД
Инструмент для сбора и поиска информации из множества источников

Приложение

ElasticSearch индекс

Сохранить blog post

Поиск по блогам

Приложение

Основная база данных
(SQL, MongoDB)

Сохранить blog post,
Обновление финансовой информации об оплате

ElasticSeach индекс

Поиск по блогам

Синхронизация данных

ElasticSearch индекс

LogStash
Сбор, транформация и загрузка данных в elastic

Apache Flume

Rsyslog

Визуализация данных
Kibana

Слайд 44

Множество разных типов журналов Журналы приложений Журналы операционной системы Журналы сетевого

Множество разных типов журналов
Журналы приложений
Журналы операционной системы
Журналы сетевого трафика от роутеров

и пр.
Разные цели анализа
Обнаружение ошибок во время выполнения или во время тестирования приложений
Выявление и анализ угроз безопасности
Сводные статистические данные / метрики

ElasticSearch

44

Copyright © Econophysica 2019. All Rights Reserved

Управление данными и анализ данных журналов

Слайд 45

Нет централизации Данные журнала могут быть везде на разных серверах и

Нет централизации
Данные журнала могут быть везде
на разных серверах и в разных

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

ElasticSearch

45

Copyright © Econophysica 2019. All Rights Reserved

Проблемы анализа данных журналов

Слайд 46

Logstash позволяет собирать все записи журнала в центральном хранилище (например, Elasticsearch)

Logstash позволяет собирать все записи журнала в центральном хранилище (например, Elasticsearch)
Конечным

пользователям не нужно знать, где находятся файлы журналов.
Большие файлы журнала будут передаваться непрерывно небольшими порциями
Записи файла журнала могут быть преобразованы в согласованные объекты событий
Простой доступ для конечных пользователей через интерфейсы на основе браузера (например, Kibana)
Elasticsearch / Kibana предоставляют расширенные функциональные возможности для анализа и визуализации данных журнала

ElasticSearch

46

Copyright © Econophysica 2019. All Rights Reserved

Индексация и поиск документа

Слайд 47

Стек ELK также предоставляет хорошие решения для мониторинга данных и оповещения

Стек ELK также предоставляет хорошие решения для мониторинга данных и оповещения

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

ElasticSearch

47

Copyright © Econophysica 2019. All Rights Reserved

Мониторинг

Слайд 48

Заключение Стек ELK прост в использовании и имеет множество применений Управление

Заключение

Стек ELK прост в использовании и имеет множество применений
Управление данными и

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

48

Copyright © Econophysica 2019. All Rights Reserved