Vostok .NET - - PowerPoint PPT Presentation

vostok
SMART_READER_LITE
LIVE PREVIEW

Vostok .NET - - PowerPoint PPT Presentation

Vostok .NET , , 2019 https://tech.kontur.ru


slide-1
SLIDE 1

Vostok

Эволюция телеметрии для микросервисов на .NET

Григорий Кошелев

СКБ Контур Стачка, Ульяновск, 2019

slide-2
SLIDE 2

Немного про Контур

https://tech.kontur.ru

slide-3
SLIDE 3

Контур в цифрах

~ 80 команд ~ 60 продуктов 3 дата-центра > 3000 хостов (железо и виртуалки)

https://tech.kontur.ru

slide-4
SLIDE 4

Немного про Vostok

https://github.com/vostok

slide-5
SLIDE 5

Vostok – инфраструктурный проект

Logs Metrics Distributed Tracing Service Discovery Hosting Deploy Configuration

https://github.com/vostok

slide-6
SLIDE 6

Hercules – подсистема Востока

Logs Metrics Distributed Tracing

https://github.com/vostok/hercules

slide-7
SLIDE 7

Vostok – цели

Простота Унификация Расширяемость

https://github.com/vostok

slide-8
SLIDE 8

Ретроспектива: Логи

slide-9
SLIDE 9

Логи (I)

https://www.elastic.co

Elastic

slide-10
SLIDE 10

Логи (I)

https://www.elastic.co/products/kibana

Elastic Kibana

slide-11
SLIDE 11
slide-12
SLIDE 12

Логи (I)

Elastic

slide-13
SLIDE 13

Логи (II)

https://www.rabbitmq.com

Rabbit MQ elk-streams Elastic

slide-14
SLIDE 14

Логи (III)

elk-gate Rabbit MQ elk-streams Elastic

slide-15
SLIDE 15

Логи (IV)

elk-gate Rabbit MQ elk-streams Elastic elk-gate Rabbit MQ elk-streams Elastic

slide-16
SLIDE 16

Ретроспектива: Метрики

slide-17
SLIDE 17

Метрики (I)

https://graphiteapp.org

Graphite

slide-18
SLIDE 18

Метрики (I)

https://grafana.com

Grafana Graphite

slide-19
SLIDE 19
slide-20
SLIDE 20

Метрики (I)

https://graphiteapp.org

Graphite

slide-21
SLIDE 21

Метрики (I)

https://graphiteapp.org

carbon-relay carbon Whisper Graphite

slide-22
SLIDE 22

Метрики (II)

https://moira.readthedocs.io

carbon-relay Moira carbon Whisper

slide-23
SLIDE 23
slide-24
SLIDE 24

Метрики (II)

carbon-relay Moira carbon Whisper

slide-25
SLIDE 25

Метрики (III)

https://github.com/grobian/carbon-c-relay

Moira carbon-c-relay go-carbon Whisper

slide-26
SLIDE 26

Метрики (III)

https://github.com/lomik/go-carbon

go-carbon Whisper Moira carbon-c-relay

slide-27
SLIDE 27

Метрики (IV)

https://clickhouse.yandex

carbon-clickhouse Moira carbon-c-relay ClickHouse

slide-28
SLIDE 28

Метрики (IV)

https://github.com/lomik/carbon-clickhouse

carbon-clickhouse Moira carbon-c-relay ClickHouse

slide-29
SLIDE 29

Ретроспектива: Трассировки

slide-30
SLIDE 30

Трассировки

A B D C 100 мс

A: Front Service B: Backend Service C: Database D: Print Service

slide-31
SLIDE 31

Трассировки

A B D C

TraceA { SpanAB { SpanBC { } } SpanAD { } }

100 мс 75 мс 10 мс 5 мс

slide-32
SLIDE 32

Трассировки (I)

Elastic dtrace-gate dtrace-web

slide-33
SLIDE 33

Трассировки (II)

Elastic dtrace-gate dtrace-web

slide-34
SLIDE 34

Трассировки (III)

http://cassandra.apache.org

spanaggr Cassandra Contrails

slide-35
SLIDE 35
slide-36
SLIDE 36

Трассировки (III)

http://cassandra.apache.org

spanaggr Cassandra Contrails

slide-37
SLIDE 37

Трассировки (IV)

spanaggr Cassandra Contrails

slide-38
SLIDE 38

Всё вместе

Graphite Moira graphite-relay

slide-39
SLIDE 39

Всё вместе

elk-gate Rabbit MQ elk-streams Elastic Graphite Moira graphite-relay

slide-40
SLIDE 40

Всё вместе

elk-gate Rabbit MQ elk-streams Elastic Graphite Moira Trace C* graphite-relay spanaggr

slide-41
SLIDE 41

Всё вместе

elk-gate Rabbit MQ elk-streams Elastic Graphite Moira Trace C* Sentry graphite-relay spanaggr

Контур. Метрика

slide-42
SLIDE 42

Всё вместе

elk-gate Rabbit MQ elk-streams Elastic Graphite Moira Trace C* Sentry graphite-relay spanaggr

Контур. Метрика

slide-43
SLIDE 43

Всё вместе

Простота Унификация Расширяемость

slide-44
SLIDE 44

Единая транспортная система для данных телеметрии

Hercules Client Hercules Event

  • Log Event
  • Metric Value
  • Trace Span
  • Business Event

Hercules

slide-45
SLIDE 45

Hercules under the hood (zoom x1)

Elastic Graphite Moira Trace C* Sentry Gate

?

slide-46
SLIDE 46

Выбираем подходящую технологию для транспорта

Высокая производительность Высокая доступность Простота масштабирования Зрелость Open Source

slide-47
SLIDE 47

Apache Kafka vs <awesome_technology>

RabbitMQ Apache ActiveMQ ZeroMQ NATS Streaming Apache Pulsar

slide-48
SLIDE 48

Hercules under the hood (zoom x2)

Elastic Graphite Moira Trace C* Sentry Gate

slide-49
SLIDE 49

Hercules under the hood (zoom x2)

Elastic Graphite Moira Trace C* Sentry Gate

Kafka

Elastic Sink Graphite Sink Moira Sink Tracing Sink Sentry Sink ZK

slide-50
SLIDE 50

Hercules under the hood (zoom x3)

Stream Logs #1 Stream Logs #2 Stream Metrics

Kafka

slide-51
SLIDE 51

Hercules under the hood (zoom x3)

Elastic Sink Elastic Sink Elastic Sink Stream Logs #1 Stream Logs #2 Stream Metrics

Kafka

slide-52
SLIDE 52

Hercules under the hood (zoom x3)

Kafka

Gate Gate Stream Logs #1 Stream Logs #2 Stream Metrics Elastic Sink Elastic Sink Elastic Sink

slide-53
SLIDE 53

Hercules under the hood (zoom x3)

Kafka

Gate Gate Elastic Sink Elastic Sink Elastic Sink Stream Logs #1 Stream Logs #2 Stream Metrics

slide-54
SLIDE 54

Hercules under the hood (zoom x3)

Kafka

Gate Gate Elastic Sink Elastic Sink Elastic Sink Sentry Sink Stream Logs #1 Stream Logs #2 Stream Metrics

slide-55
SLIDE 55

ZooKeeper

Уже используется кластером Kafka Конфигурация кластера Hercules Правила авторизации и настройки стримов

slide-56
SLIDE 56

Cassandra

Трассировки

traceId #1 SpanBC SpanAB SpanAD TraceA traceId #2 Span #1 Span #2 Span #3

slide-57
SLIDE 57

Cassandra

Временные ряды

stream

«Ведёрко» – фиксированный промежуток времени

slide-58
SLIDE 58

Cassandra

Временные ряды

ведёрко #1 Event #1 Event #2 Event #3 ведёрко #2 Event #5 Event #6 Event #4

slide-59
SLIDE 59

Тестирование

3 Kafka nodes (12x cores , 128 GB RAM, 1 Gbps, 4x HDD) 3 Gate + Sink nodes (12x cores, 128 GB RAM, 1 Gbps) Запись в Kafka: упёрлись в 1 Гбит Чтение из Kafka: упёрлись в 1 Гбит Elastic Sink: упёрлись в Elastic

slide-60
SLIDE 60

Production (Логи)

60 000 eps (events per second) 100 000+ eps в пике ~ 3 TB логов в сутки

slide-61
SLIDE 61

Бонус: Надёжность

slide-62
SLIDE 62

Надёжность

Kafka – персистентное хранилище (до нескольких дней)

elk-gate Rabbit MQ elk-streams Elastic

slide-63
SLIDE 63

Надёжность

Kafka – персистентное хранилище (до нескольких дней)

elk-gate Rabbit MQ elk-streams Elastic

slide-64
SLIDE 64

Надёжность

Kafka – персистентное хранилище (до нескольких дней)

elk-gate Rabbit MQ elk-streams Elastic

slide-65
SLIDE 65

Надёжность

Kafka – персистентное хранилище (до нескольких дней)

spanaggr Cassandra

slide-66
SLIDE 66

Надёжность

Kafka – персистентное хранилище (до нескольких дней)

spanaggr Cassandra

slide-67
SLIDE 67

Надёжность

Kafka – персистентное хранилище (до нескольких дней)

spanaggr Cassandra

slide-68
SLIDE 68

Надёжность

Kafka – персистентное хранилище (до нескольких дней)

spanaggr Cassandra

slide-69
SLIDE 69

Make telemetry great again!

OpenSource (MIT-лицензия) https://github.com/vostok https://github.com/vostok/hercules

slide-70
SLIDE 70

Hercules under the hood

Elastic Graphite Moira Trace C* Sentry Gate

Kafka

Elastic Sink Graphite Sink Moira Sink Tracing Sink Sentry Sink Stream Sink ZK Timeline Sink C* Stream API Timeline API