Similar presentations:
Введение в стек 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
5Copyright © 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, 2016Single Machine
IT Service
20
Copyright © Econophysica 2019. All Rights Reserved
21. Logstash
Реальный пример конфигурации, CERN, 2016Filebeat: на всех машинах, с которых вводятся данные.
Данные передаются в Logstash Shipper, с ожиданием подтверждения.
21
Copyright © Econophysica 2019. All Rights Reserved
22. Logstash
Реальный пример конфигурации, CERN, 2016Logstash shipper: получает данные, собирает многострочные
сообщения в единое целое, отдает результат и статистики в очередь.
22
Copyright © Econophysica 2019. All Rights Reserved
23. Logstash
Реальный пример конфигурации, CERN, 2016Logstash Indexer забирает данные из очереди, разбирает их с
использованием регулярных выражений, и отдает результаты в
ElasticSearch, а статистику – в очередь.
23
Copyright © Econophysica 2019. All Rights Reserved
24. Logstash
Реальный пример конфигурации, CERN, 2016Logstash 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 DSLQuery 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
Применения для стека ELK1.
Единственный 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