Vostok
Эволюция телеметрии для микросервисов на .NET
Григорий Кошелев
СКБ Контур Стачка, Ульяновск, 2019
Vostok .NET - - PowerPoint PPT Presentation
Vostok .NET , , 2019 https://tech.kontur.ru
Григорий Кошелев
СКБ Контур Стачка, Ульяновск, 2019
https://tech.kontur.ru
~ 80 команд ~ 60 продуктов 3 дата-центра > 3000 хостов (железо и виртуалки)
https://tech.kontur.ru
https://github.com/vostok
Logs Metrics Distributed Tracing Service Discovery Hosting Deploy Configuration
https://github.com/vostok
Logs Metrics Distributed Tracing
https://github.com/vostok/hercules
Простота Унификация Расширяемость
https://github.com/vostok
https://www.elastic.co
Elastic
https://www.elastic.co/products/kibana
Elastic Kibana
Elastic
https://www.rabbitmq.com
Rabbit MQ elk-streams Elastic
elk-gate Rabbit MQ elk-streams Elastic
elk-gate Rabbit MQ elk-streams Elastic elk-gate Rabbit MQ elk-streams Elastic
https://graphiteapp.org
Graphite
https://grafana.com
Grafana Graphite
https://graphiteapp.org
Graphite
https://graphiteapp.org
carbon-relay carbon Whisper Graphite
https://moira.readthedocs.io
carbon-relay Moira carbon Whisper
carbon-relay Moira carbon Whisper
https://github.com/grobian/carbon-c-relay
Moira carbon-c-relay go-carbon Whisper
https://github.com/lomik/go-carbon
go-carbon Whisper Moira carbon-c-relay
https://clickhouse.yandex
carbon-clickhouse Moira carbon-c-relay ClickHouse
https://github.com/lomik/carbon-clickhouse
carbon-clickhouse Moira carbon-c-relay ClickHouse
A B D C 100 мс
A: Front Service B: Backend Service C: Database D: Print Service
A B D C
TraceA { SpanAB { SpanBC { } } SpanAD { } }
100 мс 75 мс 10 мс 5 мс
Elastic dtrace-gate dtrace-web
Elastic dtrace-gate dtrace-web
http://cassandra.apache.org
spanaggr Cassandra Contrails
http://cassandra.apache.org
spanaggr Cassandra Contrails
spanaggr Cassandra Contrails
Graphite Moira graphite-relay
elk-gate Rabbit MQ elk-streams Elastic Graphite Moira graphite-relay
elk-gate Rabbit MQ elk-streams Elastic Graphite Moira Trace C* graphite-relay spanaggr
elk-gate Rabbit MQ elk-streams Elastic Graphite Moira Trace C* Sentry graphite-relay spanaggr
Контур. Метрика
elk-gate Rabbit MQ elk-streams Elastic Graphite Moira Trace C* Sentry graphite-relay spanaggr
Контур. Метрика
Простота Унификация Расширяемость
Hercules Client Hercules Event
Hercules
Elastic Graphite Moira Trace C* Sentry Gate
Высокая производительность Высокая доступность Простота масштабирования Зрелость Open Source
RabbitMQ Apache ActiveMQ ZeroMQ NATS Streaming Apache Pulsar
Elastic Graphite Moira Trace C* Sentry Gate
Elastic Graphite Moira Trace C* Sentry Gate
Kafka
Elastic Sink Graphite Sink Moira Sink Tracing Sink Sentry Sink ZK
Stream Logs #1 Stream Logs #2 Stream Metrics
Kafka
Elastic Sink Elastic Sink Elastic Sink Stream Logs #1 Stream Logs #2 Stream Metrics
Kafka
Kafka
Gate Gate Stream Logs #1 Stream Logs #2 Stream Metrics Elastic Sink Elastic Sink Elastic Sink
Kafka
Gate Gate Elastic Sink Elastic Sink Elastic Sink Stream Logs #1 Stream Logs #2 Stream Metrics
Kafka
Gate Gate Elastic Sink Elastic Sink Elastic Sink Sentry Sink Stream Logs #1 Stream Logs #2 Stream Metrics
Уже используется кластером Kafka Конфигурация кластера Hercules Правила авторизации и настройки стримов
Трассировки
traceId #1 SpanBC SpanAB SpanAD TraceA traceId #2 Span #1 Span #2 Span #3
Временные ряды
stream
«Ведёрко» – фиксированный промежуток времени
Временные ряды
ведёрко #1 Event #1 Event #2 Event #3 ведёрко #2 Event #5 Event #6 Event #4
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
60 000 eps (events per second) 100 000+ eps в пике ~ 3 TB логов в сутки
Kafka – персистентное хранилище (до нескольких дней)
elk-gate Rabbit MQ elk-streams Elastic
Kafka – персистентное хранилище (до нескольких дней)
elk-gate Rabbit MQ elk-streams Elastic
Kafka – персистентное хранилище (до нескольких дней)
elk-gate Rabbit MQ elk-streams Elastic
Kafka – персистентное хранилище (до нескольких дней)
spanaggr Cassandra
Kafka – персистентное хранилище (до нескольких дней)
spanaggr Cassandra
Kafka – персистентное хранилище (до нескольких дней)
spanaggr Cassandra
Kafka – персистентное хранилище (до нескольких дней)
spanaggr Cassandra
OpenSource (MIT-лицензия) https://github.com/vostok https://github.com/vostok/hercules
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