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