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

セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building...

Avatar for ymotongpoo ymotongpoo
September 26, 2026

セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry

Platform Engineering Kaigi 2026の登壇資料です。
https://www.cnia.io/pek2026/sessions/eba4a57f-e4f0-4201-b731-0a37d6a53f7a/

詳細な内容はこちらのZennの書籍に書いてあります。
https://zenn.dev/ymotongpoo/books/observability-platform-with-otel

本セッションで紹介した構成のブループリントとしてこのプロジェクト公開しています
https://github.com/ymotongpoo/otel-platform-blueprint

Avatar for ymotongpoo

ymotongpoo

September 26, 2026

More Decks by ymotongpoo

Other Decks in Technology

Transcript

  1. セルフサービスの設計 誰が何を決めるか 決めさせないのではなく、決めなくていいようにする 柱 計装 プラットフォームが配る チームが決める 基盤が強制する ディストリビューションと 業務のスパンと

    リソース属性と文 デフォルト値 属性 脈の伝搬 許可された範囲 認証とPII削除、容 の追加 量制御 ドメイン属性の 名前空間、型、互 意味 換性 Collector バイナリとパイプライン 規約 レジストリ、生成物、検査
  2. 柱1: 最初の状態 各チームが書いていたもの exporter, err := otlptracegrpc.New(ctx, otlptracegrpc.WithEndpoint("collector.internal:4317"), otlptracegrpc.WithInsecure(), )

    res, _ := resource.New(ctx, resource.WithAttributes(semconv.ServiceName("payment")), ) tp := sdktrace.NewTracerProvider( sdktrace.WithBatcher(exporter), sdktrace.WithResource(res), ) otel.SetTracerProvider(tp) otel.SetTextMapPropagator(propagation.TraceContext{}) 判断して書いていたもの 送信先 リソース属性 文脈の伝搬 サンプリング Propagatorの1行が抜けても動く
  3. 柱 2 : 構 成 パ タ ーン エージェントとゲートウェイの二段 エージェントはノードごと。ホストのメタデータを付け、全

    ノードで同じ設定 ゲートウェイは組織単位。テイルサンプリング、PII削除、認 証を集約 テイルサンプリングが減らすのは保存量だけ。ゲートウェイ までの流量は減らない
  4. 柱2: OTELCOL VALIDATEの注意点 設定を重ねると後勝ちになる # 基盤が配る base.yaml(抜粋) service: pipelines: traces:

    processors: [memory_limiter, transform/redact] # チームが重ねるファイル service: pipelines: traces: processors: [memory_limiter] $ otelcol validate --config base.yaml --config team.yaml $ echo $? 0 <-- エラーなし この例だとPII削除が消える リストごと置き換わり、実効設定から transform/redact が消える 検証は通る Collectorの設定としては妥当 validate はYAMLの正しさしか確認しない
  5. 柱 3 : O P E N T E L

    E M E T R Y W E A V E R と レ ジ ス トリ Weaverでセマンティック規約を管理する 配布するもの OpenTelemetry Weaverは、レジストリのYAMLを検査 し、SDKの定数やCollectorの設定を生成するCLI # registry.yaml groups: - id: com.example.delivery type: attribute_group attributes: - id: com.example.delivery.id type: string 属性の名前と型と意味を、1か所に定義する そこからSDKの属性定数、Collectorの変換設定、ドキュメ ントを生成して配布 チームの自由 ドメイン固有の属性の意味 レジストリへのPRとして追加する 自動検査: 命名規則をポリシーで検査し、実データとの照合まで 自動化する
  6. 柱3: 運用における循環 定義から、実データの検査まで レジストリのYAMLが唯一の定義 PRで check と diff 、マージ後に generate

    実環境のテレメトリーを live-check で照合 検出したずれはレジストリの変更へ戻す
  7. 明日から 最初の一歩 同時に始める必要はないが、1つでも始めることが大事 柱1 柱2 ディストリビューションを作 Collector層を立てる る まずエージェントへ送信先を向け、 新規サービスから採用する。既存は

    更新のタイミングで移す ゲートウェイを1台置く。PII削除と 認証はここに入れる。ここから始め るのが最も早い 柱3 レジストリを置く まず新しい属性の追加だけを通す。 生成とlive-checkは後から足せる