CodeFest 2018. Алексей Кирпичников (СКБ Контур) —  16:00Backend Восток — правильная телеметрия для микросервисов на .NET

CodeFest 2018. Алексей Кирпичников (СКБ Контур) —  16:00Backend Восток — правильная телеметрия для микросервисов на .NET

Посмотрите выступление Алексея: https://2018.codefest.ru/lecture/1328/

Мы выкладываем в open source инструменты, которые используем для эксплуатации .NET-микросервисов в Контуре. В этот раз поговорим о телеметрии: централизованном сборе метрик, логов и распределенной трассировке. Мы поделимся идеями и кодом, который позволяет безболезненно эксплуатировать тысячи микросервисов, написанные сотнями разработчиков в десятках продуктовых команд Контура.

Код на Github: https://github.com/vostok (лицензия MIT).

Уровень
Разработчики приложений с микросервисной архитектурой на платформе .NET, которые понимают важность мониторинга работы приложений в продакшне через централизованный сбор метрик, агрегацию логов и распределённых трассировок сетевых вызовов. Средний и высокий уровень.

16b6c87229eaf58768d25ed7b2bbbf52?s=128

CodeFest

April 09, 2018
Tweet

Transcript

  1. Восток Правильный продакшн для микросервисов на .NET Алексей Кирпичников СКБ

    Контур
  2. None
  3. None
  4. None
  5. Правильный продакшн —Метрики —Логи —Трассировки — Конфигурация — Service discovery

    — Деплой — Хостинг
  6. Правильный продакшн —Метрики —Логи —Трассировки — Конфигурация — Service discovery

    — Деплой — Хостинг
  7. Метрики private final Timer responses = metrics.timer("response-time"); public String handleRequest(Request

    request, Response response) { final Timer.Context context = responses.time(); try { // etc; return "OK"; } finally { context.stop(); } }
  8. Метрики MyService.host01.response-time.p95 875 1520758574 MyService.host01.response-time.p99 1564 1520758574

  9. Метрики

  10. Логи

  11. Логи { "@timestamp": "2017-11-13T13:11:17.0275008Z", "AppDomain": "Store.Api.exe", "HostName": "REVISE-CONS-08", "Level": "INFO",

    "LoggerName": "request", "Message": "Incoming request GET /store/v1/shops", ...
  12. Логи { "@timestamp": "2017-11-13T13:11:17.0275008Z", "AppDomain": "Store.Api.exe", "HostName": "REVISE-CONS-08", "Level": "INFO",

    "LoggerName": "request", "Message": "Incoming request GET /store/v1/shops", ...
  13. None
  14. Трассировки

  15. Трассировки фронт

  16. Трассировки авторизация биллинг база данных хранилище файлов

  17. Трассировки …

  18. Трассировки … traceId

  19. Трассировки … span

  20. Трассировки { "TraceId": "bade332746024d6ea45d33237e36c361", "SpanId": "ad23e9c9000000000000000000000000", "OperationName": "HTTP", "BeginTimestamp": "2017-11-13T15:49:17.2180000+03:00",

    "EndTimestamp": "2017-11-13T15:49:37.3906473+03:00", "Annotations": { "OriginHost": "vm-livechat2", "OriginId": "LiveChat.Service", "IsClientSpan": false } }
  21. None
  22. Трассировки { "TraceId": "bade332746024d6ea45d33237e36c361", "SpanId": "ad23e9c9000000000000000000000000", "OperationName": "HTTP", "BeginTimestamp": "2017-11-13T15:49:17.2180000+03:00",

    "EndTimestamp": "2017-11-13T15:49:37.3906473+03:00", "Annotations": { "OriginHost": "vm-livechat2", "OriginId": "LiveChat.Service", "IsClientSpan": false } }
  23. Логи { "@timestamp": "2017-11-13T13:11:17.0275008Z", "AppDomain": "Store.Api.exe", "HostName": "REVISE-CONS-08", "Level": "INFO",

    "LoggerName": "request", "Message": "Incoming request GET /store/v1/shops", ...
  24. Метрики MyService.host01.response-time.p95 875 1520758574 MyService.host01.response-time.p99 1564 1520758574

  25. Airlock Client метрики логи трассировки HTTP межсервисное взаимодействие github.com/vostok/launchpad

  26. Airlock Gate HTTP Kafka github.com/vostok/airlock.gate

  27. Graphite Elastic Contrails ... github.com/vostok/airlock.consumer

  28. None
  29. None
  30. None
  31. None
  32. None
  33. None
  34. Airlock Client Airlock Gate Kafka Graphite Elastic Contrails ...

  35. Airlock Client Airlock Gate Kafka Graphite Elastic Contrails ... Spaceport

    github.com/vostok/spaceport github.com/vostok/launchpad
  36. None
  37. Демо-трассировки —8fce28c6-985b-4d51-b474-ca93032fafeb —831a3146-d50f-4fe1-b91e-d37b3197670d —84cbafbc-40b3-49b9-ac4e-28fab6099c58

  38. Правильный продакшн —Метрики —Логи —Трассировки — Конфигурация — Service discovery

    — Деплой — Хостинг
  39. Алексей Кирпичников СКБ Контур Вопросы? alexkir@kontur.ru github.com/vostok