ElasticSearch и Heka: как мы учились просеивать слона через...

27
ElasticSearch и Heka: как мы учились просеивать слона через сито Адель Сачков, Яндекс.Деньги

Transcript of ElasticSearch и Heka: как мы учились просеивать слона через...

Page 1: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

ElasticSearch и Heka: какмы учились просеиватьслона через сито

Адель Сачков, Яндекс.Деньги

Page 2: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Проблемы:

Разные платформы (Java, C, NodeJS, PHP, …)

Разные системы (Nginx, PostgreSQL, Jira, Mail, …)

Разное окружение (Bare-Metal, OpenStack, LXC, Docker, …)

Объёмы (over 9000)

Разные форматы

Page 3: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Требования

Нетребовательность к окружению

Нетребовательность к ресурсам

Большой объём данных

Real-time

Не терять данные при обрывах связи

Фильтрация данных on-the-fly

Page 4: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Heka!

Page 5: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Почему Heka

GO!

Скорость

Регулярные выражения

Плагины на Lua/Go

Фильтрация чувствительных данных

Обработчик и транспорт в одном

Буферизация

Page 6: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Настройки

Input: logstreamer

Rescan interval: 2500

Decoder: PayloadRegexDecoder

Output buffers: 1Gb/service

Buffer policy: Block

habrahabr.ru/company/yamoney

Page 7: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Logs-cluster: Incoming records per sec (7d)

Page 8: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

ElasticSearch это:

Lucene

Полнотекстовый мультииндексный поиск

Kibana

REST API

Небольшие объёмы

Шардирование и репликация

Page 9: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Кластер

Page 10: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Состав:

4 х Intel Xeon, 2xE5-2640 v3; 512 ГБ ОЗУ, 3x16 ТБ RAID-10• 3 x Master Nodes• 2 x Client Nodes• 8 x Data Nodes

2 x Intel Xeon 2x E5-2640 v3; 128 ГБ ОЗУ, 150 ГБ RAID-1• 4 x Heka Pools (Haproxy + 3 x Heka)

LXC-контейнеры

Page 11: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)
Page 12: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Настройки

1 индекс – 1 приложение

Новый индекс каждый день

Number of shards = Number of data-nodes: 8

Number of replicas: 2

es_index_from_timestamp = false

Shard Allocation Awareness …

Page 13: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

No Shard Allocation Awareness

Page 14: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

node.attr.rack_id: lxc.host.X"allocation": "awareness": "attributes": "rack_id"

Page 15: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)
Page 16: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Результаты

Page 17: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Статистика за сутки

3ТБ 2.7 млрд 40к 250 ms

Трафик Записи Запросы к Kibana

Времязапроса

Page 18: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Суммарно

21 день 60 млрд. 66 ТБ

Период хранения

Записи Объём

Page 19: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Мониторинг

Page 20: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Zabbix

Уровень сервера (CPU, Memory, I/O, Network)

Приложение

Сервис (Буферы Heka, Haproxy connections)

JMX / Jolokia (Heap, потоки)

ElasticSearch API …

+

Logs (Heka, ElasticSearch)

Page 21: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

ElasticSearch Metrics

Status (Green/Yellow/Red) Relocating shards Number of initializing shards Unassigned shards Number of pending tasks Task Max Waiting in queue (ms) Active Shards Percent Thread pool – Bulk Rejected

Page 22: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Безопасность

Page 23: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Требования

Авторизация в LDAP

Раздельные доступы на индексы

Read/Write-права для приложений

Ограничение доступа к настройкам в Kibana

Anomaly Detector

Page 24: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

X-Pack? (спойлер: нет)

Page 25: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

ReadonlyREST:

Авторизация в LDAP

R/W-доступ к индексам через API

Уровни доступа к Kibana

Аудит событий

X-Pack (basic license):

Мониторинг и статистика

ElastAlert:

Алерты по spike/freq/flat

Уведомления в Jira, Slack, Telegram

Page 26: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Итог

Page 27: ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачков (Яндекс.Деньги)

Спасибо!

Адель Сачков, DevOps, Яндекс.Деньги

[email protected]