Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenTelemetryのこれまでとこれから / OpenTelemetry: past a...

OpenTelemetryのこれまでとこれから / OpenTelemetry: past and future

Observability Conference 2022 で発表した資料です
https://cloudnativedays.jp/o11y2022

Avatar for ymotongpoo

ymotongpoo

March 11, 2022
Tweet

More Decks by ymotongpoo

Other Decks in Technology

Transcript

  1. Confidential & Proprietary OpenTelemetryのこれまでとこれから Observability Conference 2022 by CloudNative Tokyo

    Track B 16:05-16:45 March 11th, 2022 山口能迪 (@ymotongpoo) bit.ly/20220311-o11yconf-otel
  2. 山口 能迪(やまぐちよしふみ) Developer Advocate @ Google Cloud • オブザーバビリティ ◦

    Cloud Operations, OpenTelemetry • SRE • Go 自己紹介 @ymotongpoo @ymotongpoo
  3. 本日お話すること • OpenTelemetryとは • OpenTelemetry以前 ◦ 分散トレース ◦ メトリクス •

    OpenTelemetry発足後と現状 • OpenTelemetry仕様概要 • OpenTelemetryエコシステム • OpenTelemetryの今後
  4. パブリッククラウド以前 www.zabbix.com/release_notes munin-monitoring.org システムメトリクス監視が主流 • 2001年: Cacti • 2002年: Zabbix、Nagios

    • 2004年: Munin • 2005年: collectd • 2008年: Graphite • 2011年: sensu • 2012年: statsd • モニタリングSaaSベンダー企業が続々と設立
  5. OpenTelemetry発足後からの流れ • 2019年5月: OpenTracingとOpenCensusの統合開始(トレース) • 2020年4月: ログの仕様が承認される • 2021年1月: StanzaがOpenTelemetryに寄贈される

    • 2021年2月: トレースの仕様が安定版に • 2021年8月: CNCF Incubating Projectに • 2022年3月: メトリクスの仕様はfeature freezeで、リリースまでタスク はあと4つ github.com/open-telemetry/opentelemetry-specification/milestone/15 www.cncf.io/blog/2021/08/26/opentelemetry-becomes-a-cncf-incubating-project/ github.com/open-telemetry/oteps/pull/92 github.com/open-telemetry/community/issues/605
  6. OpenTelemetryプロジェクトのステータス (spec) Trace Metrics Logs API stable feature-freeze stable draft

    SDK stable feature-freeze draft OTLP stable stable beta 2022年3月4日現在 opentelemetry.io/status/
  7. OpenTelemetryプロジェクトのステータス (lang) 2022年3月7日現在 Java Go Python JS C# Ruby PHP

    Erlang Elixir Rust C/C++ Trace stable stable stable stable stable stable alpha stable beta stable Metrics beta alpha beta beta beta beta alpha beta beta beta Log alpha frozen alpha planned alpha n/a n/a alpha n/a alpha ※ MetricsとLogsはそもそも仕様が安定版になっていない
  8. OpenTelemetry Traceの概要 github.com/open-telemetry/oteps TracerProvider • Sampler • Resource • SpanProcessor

    • IdGenerator • SpanLimits etc… Tracer SpanExporter Span • SpanContext • Attributes • Event • SpanKind • Link • Status etc. Span • SpanContext • Attributes • Event • SpanKind • Link • Status etc. Span • SpanContext • Attributes • Event • SpanKind • Link • Status etc. 利用手順 1. Exporter作成 2. TracerProvider作成 3. Tracer取得 4. Span作成 TextMapPropagator
  9. root child A child B child C child D service

    Y service X service Z context context Backend Tracer Span SpanExporter Propagator
  10. OpenTelemetry Metricsの概要 opentelemetry.io/docs/reference/specification/metrics/ MeterProvider Meter • name 利用手順 1. Exporter作成

    2. MeterProvider作成 3. Meter作成 4. Instrument作成 5. Measurement記録 Instrument • name • kind • unit • description Measurement • Value • Attribute Measurement • Value • Attribute Measurement • Value • Attribute Measurement • Value • Attribute Meter • name Instrument • name • kind • unit • description Instrument • name • kind • unit • description Exporter
  11. 結構実装する部分がある Trace 1. Exporter作成 2. TracerProvider作成 3. Tracer取得 4. Span作成

    Metrics 1. Exporter作成 2. MeterProvider作成 3. Meter作成 4. Instrument作成 5. Measurement記録
  12. 自動インスツルメンターの需要 Trace 1. Exporter作成 2. TracerProvider作成 3. Tracer取得 4. Span作成

    Metrics 1. Exporter作成 2. MeterProvider作成 3. Meter作成 4. Instrument作成 5. Measurement記録 各製品の典型パターンに対して各計装を自動で差し込む 例: APIエンドポイントにおける SpanとCounter
  13. Exporterの実装 Trace 1. Exporter作成 2. TracerProvider作成 3. Tracer取得 4. Span作成

    Metrics 1. Exporter作成 2. MeterProvider作成 3. Meter作成 4. Instrument作成 5. Measurement記録 Exporterは直接ExporterとCollector経由がある
  14. Exporterの実装 • Jaeger, Prometheus, OTLPは必ずコアで参照実装される • その他各個別製品向けのものは contrib レポジトリか各ベンダーのレ ポジトリで公開

    • Collector経由にするとGo版だけ実装すれば良いので、そちらを推奨し ている App Backend App Collector Backend OTLP 全言語対応は大変 Go版だけ対応すればよい
  15. OpenTelemetry Logsの概要 github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/overview.md Log Record • Timestamp • ObservedTimestamp •

    TraceId • SpanId • TraceFlags • SeverityText • SeverityNumber • Body • Resource • InstrumentationScope • Attributes via OTLP