LoginSignup
10
4

More than 1 year has passed since last update.

OpenTelemetry の Community Demo のトレースとメトリクスを Datadog に送信してみた

Last updated at Posted at 2022-06-24

はじめに

OpenTelemetryのブログに以下のような記事が出ていました

Announcing a Community Demo for OpenTelemetry
https://opentelemetry.io/blog/2022/demo-announcement/

これはOpenTelemetryのデモキットで、ECサイトがさまざまな言語のマイクロサービスで作られています。さらにメトリクスやトレースの計装もすでに行われていて、手元にDocker環境があればdocker compose upだけで動かすことができます。
OpenTelemetryのデモとしては、JeagerやPrometheusでトレースやメトリクスを見られるようになっています。今回は、それらをDatadogに送って、Datadogで見られるようにしたいと思います。

構成

いくつかのマイクロサービスで構成され、それぞれ異なる言語で作られています。(画像はREADMEより引用)

デモの動かし方

Githubのレポジトリをクローンして、docker compose upすると動きます。初回はビルドに時間がかかります。

Webstore Demo
https://github.com/open-telemetry/opentelemetry-demo

立ち上がったら、ブラウザでhttp://localhost:8080にアクセスすると、以下のようなECサイトが現れます。
image.png
同様に、http://localhost:9090でPrometheusに、http://localhost:16686でJeagerにアクセスできます。
image.png
image.png

Datadog Exporter

ではこれらのメトリクスとトレースをDatadogに送信してみます。OpenTelemetryのCollectorに対応したDatadog Exporterは現在betaですので、あくまでお試し用途となります。

OpenTelemetry collector Datadog exporter (Datadog document)
https://docs.datadoghq.com/tracing/setup_overview/open_standards/otel_collector_datadog_exporter

Datadog Exporter (Github)
https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/datadogexporter

変更点は以下のとおりで、Collectorの設定ファイルにDatadogの設定を追加します。

exportersにDatadogの設定を追加します。<API_KEY>はそれぞれお使いのAPI Keyに置き換えてください。envタグやその他のタグもここで設定できます。あとは、pipelinestracemetricsdatadogを追加して送信されるようにします。
下記の設定では、PrometheusやJeagerにも引き続き送信されます。

src/otelcollector/otelcol-config.yml
...
exporters:
  jaeger:
    endpoint: "jaeger:14250"
    tls:
      insecure: true
  logging:
  prometheus:
    endpoint: "otelcol:9464"
+ datadog:
+   api:
+     key: <API_KEY>
+   host_metadata:
+     tags:
+       - otel:true

 processors:
   batch:
+  resource:
+    attributes:
+    - key: deployment.environment  # Set env tag for Datadog
+      value: "otel"
+      action: upsert

service:
  pipelines:
    traces:
      receivers: [otlp]
-     processors: [batch]
+     processors: [batch, resource]
-     exporters: [logging, jaeger]
+     exporters: [logging, jaeger, datadog]
    metrics:
      receivers: [otlp]
-     processors: [batch]
+     processors: [batch, resource]
-     exporters: [prometheus, logging]
+     exporters: [prometheus, logging, datadog]

あと、Datadog Exporterはオリジナルのdocker-compose.yamlにあるコンテナイメージには含まれていないので、contribを含むイメージに変更します。

./docker-compose.yaml
  # Collector
  otelcol:
-   image: otel/opentelemetry-collector:0.56.0
+   image: otel/opentelemetry-collector-contrib:0.56.0
    command: [ "--config=/etc/otelcol-config.yml" ]

Datadogに表示された!

再度docker compose upしてECサイトにアクセスしてみると、Datadogにもトレースとメトリクスが表示されました!
本当にシンプルで簡単で感動しました。

サービスマップ:マイクロサービス間の呼び出し関係や、トラフィックの流れが見えます
image.png

トレース:個別のトレースの中で、バックエンドの呼び出し関係や、かかった時間、その他詳細情報が見えます
image.png

メトリクス:メトリクスも送信されていて、タグが付加されています
image.png

Datadog Agentでも受信できます

今回のデモ環境では、OpenTelemetry Collectorでメトリクスやトレースを受け取って、Datadogに送信していますが、この代わりにDatadog Agentを使うことも可能です。
現状すでにDatadog Agentが動いているような場合は、そのまま使うことが可能です。(ただしAgentは最新バージョンにしてください)
以下の図のように、OpenTelemetryとの組み合わせはいくつか方法があります。詳細はDatadogのブログ記事をご参照ください。

Ingest OpenTelemetry traces and metrics with the Datadog Agent
https://www.datadoghq.com/blog/ingest-opentelemetry-traces-metrics-with-datadog-agent/

image.png

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4