breaking logs
TRANSCRIPT
![Page 1: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/1.jpg)
Breaking logsСломай логи
![Page 2: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/2.jpg)
+
Я разработчик в Альфа-Лаборатории
2
Привет!
![Page 3: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/3.jpg)
3
#microservices
Что мы делаем в лабе?
![Page 4: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/4.jpg)
4
#research
Что мы делаем в лабе?
![Page 5: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/5.jpg)
5
#proofOfConcept
Что мы делаем в лабе?
![Page 6: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/6.jpg)
6
По результатам пилота:
Внедряем в prod то, что приносит value
![Page 7: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/7.jpg)
● Архитектура приложений● Система логирования● Проблемы ● Решение● Демо● Задача анализа логов
7
Структура доклада
![Page 8: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/8.jpg)
Middle
Front
Back
Legacy8
MicroServices
![Page 9: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/9.jpg)
9
![Page 10: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/10.jpg)
10
Приложение Dashboard:● Информация о клиенте● Последние транзакции
Пример
![Page 11: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/11.jpg)
11
Возвращает информацию о клиенте
Уже есть
![Page 12: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/12.jpg)
12
Возвращает информацию о клиенте
Список транзакций по счетам
Уже есть
![Page 13: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/13.jpg)
13
Создаём
Переиспользуем
![Page 14: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/14.jpg)
14
Создаём
Переиспользуем
![Page 15: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/15.jpg)
15
Создаём
Переиспользуем
Service Discovery, Service Registration, Routing
![Page 16: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/16.jpg)
Много проектных приложений
Много инфраструктурных приложений
Все они активно пишут логи
16
Что получается?
![Page 17: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/17.jpg)
17
Сейчас в день ~100 гб логов
![Page 18: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/18.jpg)
18
Сейчас в день ~100 гб логов
Может уменьшить количество логов?
![Page 19: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/19.jpg)
19
Приложения должны логировать все вызовы
Inbound/Outbound сообщения
![Page 20: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/20.jpg)
20
Нельзя уменьшить количество логов - требование отдела безопасности
![Page 21: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/21.jpg)
Минимум - централизация логов21
Как выглядит простая система логирования?
![Page 22: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/22.jpg)
22
Чтобы искать сообщения с NPE по всем логам!
Хотим поиск
![Page 23: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/23.jpg)
tail 300 -f /var/log/syslog | grep ...
23
Есть же grep!
Хочешь поиск?
![Page 24: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/24.jpg)
24
Хотим дашборд
![Page 25: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/25.jpg)
Поиск и аналитика
25
Что нужно для дашборда?
![Page 26: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/26.jpg)
Поиск и аналитика
26
Что нужно для дашборда?
![Page 27: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/27.jpg)
Поиск и аналитика
Визуализация
27
Что нужно для дашборда?
![Page 28: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/28.jpg)
Поиск и аналитика
Визуализация
28
Что нужно для дашборда?
![Page 29: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/29.jpg)
Всё готово можно в продакшн?
29
![Page 30: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/30.jpg)
30
От syslog:Sep 21 23:48:17 Ilyas-MacBook-Pro ilyasergeev[22839]: Hello, joker.
Для ElasticSearch:{
"message" => "Hello, joker.","@version" => "1","@timestamp" => "2016-09-21T23:49:16.4752","host" => "Ilyas-MacBook-Pro"}
Формат логов
![Page 31: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/31.jpg)
31
Автоматизировать добавление индексов в ElasticSearch
Создавать индексы на каждый день
Индексы ElasticSearch
![Page 32: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/32.jpg)
Real-Time pipeline для данных
Много плагинов
32
Logstash
![Page 33: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/33.jpg)
33
Как теперь выглядит система логирования?
![Page 34: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/34.jpg)
Нужно хранить логи 5 лет
34
Требования отдела безопасности
База отдела безопасности
![Page 35: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/35.jpg)
35
В индексах ElasticSearch
Может тут хранить пять лет?
Где у нас сейчас хранятся логи
![Page 36: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/36.jpg)
36
Открытые / Закрытые
Открытые - можно читать, писатьЗакрытые - просто хранят информацию
Индексы
![Page 37: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/37.jpg)
37
Открытые / Закрытые
Открытые - можно читать, писатьЗакрытые - просто хранят информацию
curl -XPOST 'localhost:9200/my_index/_close'curl -XPOST 'localhost:9200/my_index/_open'
Индексы
![Page 38: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/38.jpg)
38
Открытые индексы потребляют ресурсы кластера
Храним только открытые индексы
![Page 39: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/39.jpg)
39
45 дней
Период хранения логов
![Page 40: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/40.jpg)
45 дней
5 лет
40
![Page 41: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/41.jpg)
периодическаявыгрузка логов
41
![Page 42: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/42.jpg)
велосипед
42
![Page 43: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/43.jpg)
одноразовое решение
43
![Page 44: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/44.jpg)
логи 44
![Page 45: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/45.jpg)
логи
outputplugin дляelastic
outputplugin длябазы отдела безопасности
real-time
45
![Page 46: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/46.jpg)
База данных недоступна
real-time
46
![Page 47: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/47.jpg)
47
Давайте добавим ещё один слой абстракции
Решение в общем случае
![Page 48: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/48.jpg)
?
48
![Page 49: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/49.jpg)
Логи хранятся n дней
49
![Page 50: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/50.jpg)
Логи хранятся n дней
Легко добавлятьпотребителей
50
![Page 51: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/51.jpg)
Стоит ли добавлять промежуточную систему ради решения одной проблемы?
51
![Page 52: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/52.jpg)
52
Мы рассказали о нашей системе логирования
![Page 53: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/53.jpg)
Скрипт отдела поддержкиСкрипт
53
![Page 54: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/54.jpg)
Скрипт отдела поддержкидля мониторинга количества заходов в приложенияиспользует API
Скрипт
54
![Page 55: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/55.jpg)
Делает периодические запросы
55
Скрипт
![Page 56: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/56.jpg)
Делает периодические запросы Полнотекстовый поиск и агрегации
56
Скрипт
![Page 57: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/57.jpg)
Делает периодические запросы Полнотекстовый поиск и агрегацииЗапрос по всем индексам
57
Скрипт
![Page 58: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/58.jpg)
Делает периодические запросы Полнотекстовый поиск и агрегацииЗапрос по всем индексамПериод - 10 секунд
58
Скрипт
![Page 59: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/59.jpg)
app1 app2 app3 app4
59
Скрипт
![Page 60: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/60.jpg)
Ск
ри
пт
app1 app2 app3 app4ElasticSearch не справляется снагрузкой, логи копятся в logstash
60
![Page 61: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/61.jpg)
61
Логи очередь destination
Как вообще пишутся логи?
![Page 62: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/62.jpg)
62
Сообщения добавляются в очередь если не могут быть доставлены в destination
Очередь
![Page 63: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/63.jpg)
63
Сообщения добавляются в очередь если не могут быть доставлены в destination
Сообщения не теряются
Очередь
![Page 64: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/64.jpg)
64
Сообщения добавляются в очередь если не могут быть доставлены в destination
Сообщения не теряются
Ограничение по размеру - объём свободной памяти
Очередь
![Page 65: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/65.jpg)
65
Ещё одно сообщение и OutOfMemory
![Page 66: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/66.jpg)
66
Фиксированный размер
Данные перезаписываются
Ring-buffer
![Page 67: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/67.jpg)
67
Фиксированный размер
Данные перезаписываются
Ring-buffer
![Page 68: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/68.jpg)
68
или
![Page 69: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/69.jpg)
69
Требование отдела безопасности:Логи не должны теряться, поэтому
![Page 70: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/70.jpg)
Ск
ри
пт
app1 app2 app3 app4ElasticSearch не справляется снагрузкойЛоги копятся в Logstash
70
![Page 71: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/71.jpg)
Скр
ип
т
app1 app2 app3 app4Logstash падает с OutOfMemoryЛоги копятся в приложениях
71
![Page 72: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/72.jpg)
Используем Ring-buffer
Что делать если destination недоступен?
72
![Page 73: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/73.jpg)
Разделение потоков поставки и потребления
Логи хранятся n дней
Легко добавлятьпотребителей
73
![Page 74: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/74.jpg)
?
74
Выбор промежуточный системы
![Page 75: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/75.jpg)
Хотелки:Логи хранятся n дней
Легко добавлятьпотребителей
75
![Page 76: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/76.jpg)
База данных
Хотелки:Логи хранятся n дней
Легко добавлятьпотребителей
76
![Page 77: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/77.jpg)
Очередь
Хотелки:Логи хранятся n дней
Легко добавлятьпотребителей
77
![Page 78: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/78.jpg)
С сохранением сообщений на диск: ActiveMQ, RabbitMQ, Kestrel, NSQ, Kafka ..
Без: NATS, ruby-nats ..
78
Какие есть варианты очередей?
![Page 79: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/79.jpg)
Добавление потребителей не влияет на производительность
79
Почему kafka?
![Page 80: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/80.jpg)
Добавление потребителей не влияет на производительность
Потребитель должен реализовать Kafka Consumerили воспользоваться готовым приложением, например:
80
Почему kafka?
![Page 81: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/81.jpg)
Publish-Subscribe
producer пишет в topicconsumer читаeт из topic
81
Верхнеуровневая архитектура
![Page 82: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/82.jpg)
82
Нужно знать:● Адрес сервера kafka● Название Topic
Чтение из kafka
![Page 83: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/83.jpg)
83
Особенности:● Offset - индекс с которого начать чтение● Compaction и Retention
Чтение из kafka
![Page 84: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/84.jpg)
84
Kafka - это файл который читается в один поток?
![Page 85: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/85.jpg)
85
Topic делится на partitions
![Page 86: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/86.jpg)
86
Параллельное чтение логов
![Page 87: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/87.jpg)
87
Параллельное чтение логовБалансировка сообщений в consumer group
![Page 88: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/88.jpg)
88
Потребление логов из kafka
![Page 89: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/89.jpg)
89
Один потребитель логовПотребитель влияет на поставщика
Решение проблем
![Page 90: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/90.jpg)
Увеличение потока потребления за счёт добавления partitions
Увеличение входного потока - ?
90
А что с производительностью?
![Page 91: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/91.jpg)
Дешёвая операция записи
91
Partition
![Page 92: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/92.jpg)
92
Partition == unit of parallelism
Параллельная запись в kafka
![Page 93: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/93.jpg)
93
Partition по ключу
![Page 94: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/94.jpg)
94
Логи хранятся n дней
Легко интегрироваться
Производительность
![Page 95: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/95.jpg)
95
Логи хранятся n дней
Легко интегрироваться
Производительность
А что с надёжностью?
![Page 96: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/96.jpg)
1. Репликация2. Failure recovery
96
Надёжность
![Page 97: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/97.jpg)
Запрос метаданных + push в leader
97
Репликация
![Page 98: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/98.jpg)
Запрос метаданных + push в leaderIn-sync replica set (ISR)
98
Репликация
![Page 99: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/99.jpg)
Запрос метаданных + push в leaderIn-sync replica set (ISR)Commit сообщения
99
Репликация
![Page 100: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/100.jpg)
Quorum или all (x failures with x+1 ISR)
100
Failure Recovery
![Page 101: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/101.jpg)
Выбор лидера с помощью Zookeeper
101
Failure Recovery
![Page 102: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/102.jpg)
Все сломались - дожидаемся возвращения любой реплики
102
Failure Recovery
![Page 103: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/103.jpg)
103
Логи хранятся n днейЛегко интегрироватьсяПроизводительностьРепликацияFailure recovery
![Page 104: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/104.jpg)
104
Логи хранятся n днейЛегко интегрироватьсяПроизводительностьРепликацияFailure recovery
А как же надёжность поставки логов?
![Page 105: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/105.jpg)
Real-Time pipeline
105
Поставка логов
![Page 106: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/106.jpg)
Производительность
Failure Recovery
Сохранение на диск
106
Хотелки
![Page 107: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/107.jpg)
Производительность
Failure Recovery
Сохранение на диск
Логи инфраструктуры
107
Хотелки
![Page 108: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/108.jpg)
Rocket-Fast System for Log Processing
Базируется на syslog
108
RSyslog
![Page 109: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/109.jpg)
Rocket-Fast System for Log Processing
Базируется на syslogМодуль omkafka - Apache Kafka producer
109
RSyslog
![Page 110: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/110.jpg)
Rocket-Fast System for Log Processing
Базируется на syslogМодуль omkafka - Apache Kafka producerОчереди
110
RSyslog
![Page 111: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/111.jpg)
input
input
input input parser &filter engine
action processor
action processor
action processor output
output
output
queue
queue
queue
queue
111
RSyslog
![Page 112: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/112.jpg)
input
input
input input parser &filter engine
action processor
action processor
action processor output
output
output
queue
queue
queue
queue
112
RSyslog
![Page 113: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/113.jpg)
RSyslog
113
Что получается?
![Page 114: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/114.jpg)
114
Новая архитектура
![Page 115: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/115.jpg)
115
Новая архитектура
![Page 116: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/116.jpg)
116
Новая архитектура
![Page 117: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/117.jpg)
117
Новая архитектура
![Page 118: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/118.jpg)
118
Архитектура 1.0
![Page 119: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/119.jpg)
119
Мы используем Red Hat Linux на серверах
Но мы же банк..
![Page 120: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/120.jpg)
120
Мы используем Red Hat Linux на серверах
В стандартных репозиториях нету версии 8.7.+
Но мы же банк..
![Page 121: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/121.jpg)
121
Мы используем Red Hat Linux на серверах
В стандартных репозиториях нету версии 8.7.+
Только в ней появился модуль omkafka
Но мы же банк..
![Page 122: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/122.jpg)
122
Архитектура 1.0
![Page 123: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/123.jpg)
123
Известный архитектурный приём
![Page 124: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/124.jpg)
124
Архитектура 2.0
![Page 125: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/125.jpg)
125
Архитектура 2.0
![Page 126: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/126.jpg)
126
Архитектура 2.0
![Page 127: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/127.jpg)
127
Архитектура 2.0
![Page 128: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/128.jpg)
128
Логи DashboardAPI отправляются в топик api
Partition по ключу DashboardAPI
Демо
![Page 129: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/129.jpg)
129
Логи CustomerInfo и TransactionsList отправляются в топик infoPartition по ключу названия сервиса
topic: api
topic: info
Демо
![Page 130: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/130.jpg)
130
topic: api
topic: info
Демо
![Page 131: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/131.jpg)
131
Демо
![Page 132: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/132.jpg)
132
Демо
![Page 133: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/133.jpg)
133
Запуск одной командой ./compose-logs.sh up -d
Демо
![Page 134: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/134.jpg)
134
Мониторинг количества ошибок в секунду от приложений CustomerInfo и TransactionsList
Новая задача
![Page 135: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/135.jpg)
1. Kafka producer и consumer
135
Как делают stream processing
![Page 136: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/136.jpg)
1. Kafka producer и consumer2. Прикрутить полноценный stream
processing framework
136
Как делают stream processing
![Page 137: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/137.jpg)
Apache SparkApache StormApache FlinkApache SamzaGoogle’s DataFlowAWS Lambda...
137
Stream processing инструменты
![Page 138: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/138.jpg)
● Распределять джобы в пуле машин
138
Что нужно большим фрэймворкам
![Page 139: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/139.jpg)
● Распределять джобы в пуле машин ● Управлять ресурсами в кластере
139
Что нужно большим фрэймворкам
![Page 140: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/140.jpg)
● Распределять джобы в пуле машин ● Управлять ресурсами в кластере ● Паковать код и отправлять на исполняющие
машины
140
Что нужно большим фрэймворкам
![Page 141: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/141.jpg)
Apache SparkApache StormApache Flink...Kafka Streams
141
Stream processing инструменты
![Page 142: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/142.jpg)
Event-at-a-time processing Уже в Kafka 0.10 release
Для приложения - просто библиотекаНет дополнительной инфраструктуры
142
Kafka Streams
![Page 143: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/143.jpg)
143
Демо
![Page 144: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/144.jpg)
144
Приложение с Kafka Streams
![Page 145: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/145.jpg)
time 0key1 val1 key1 val1
key2 val2
key1 val3
key2 val2
time 1
145
Таблицы и стримы
time 2
![Page 146: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/146.jpg)
put (key1, val1)put (key2, val2)put (key1, val3)
time 0key1 val1 key1 val1
key2 val2
key1 val3
key2 val2
time 1 time 2
146
Таблицы и стримы
![Page 147: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/147.jpg)
put (key1, val1) key1 => val1put (key2, val2) == key2 => val2put (key1, val3) key1 => val3
147
Таблицы и стримы
![Page 148: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/148.jpg)
put (key1, val1) key1 => val1put (key2, val2) == key2 => val2put (key1, val3) key1 => val3
Таблица - это кэш актуальных значений для ключей в стриме
Стрим - changelog таблицы
148
Таблицы и стримы
![Page 149: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/149.jpg)
149
Поток сообщений
Окно
![Page 150: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/150.jpg)
150
Считаем количество сообщений в каждом окне
Окно
![Page 151: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/151.jpg)
151
Для большой децентрализованной системы нужно логирование и оно должно быть централизованным.
Итого
![Page 152: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/152.jpg)
152
Если у вас много разных потребителей, которым нужен доступ к системе логирования, то следует задуматься о промежуточной системе, где логи будут храниться некоторое время.
Итого
![Page 153: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/153.jpg)
153
У нас получилась система позволяющая:
● легко добавлять новых потребителей
● хранящая логи в течении некоторого временного интервала● позволяющая делать real-time аналитику без
дополнительной инфраструктуры
Итого
![Page 154: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/154.jpg)
Демо системы логирования и Kafka Streamsgithub.com/sergeevii123/joker.logs
Для связи:[email protected]
154
Итого
![Page 155: Breaking logs](https://reader035.vdocument.in/reader035/viewer/2022062503/58ede4781a28abe9198b4607/html5/thumbnails/155.jpg)
Вопросы