📟

さくらのクラウド モニタリングスイート専用OpenTelemetry Collector exporterを作りました

に公開

さくらのクラウドで提供しているモニタリングスイート向けに OpenTelemetry Collector (otelcol) 用のエクスポーターを開発し、sacloud-otel-collector v0.5.0 に同梱してリリースしました。

sacloud-otel-collectorはOpenTelemetry Collectorのカスタムビルド版で、さくらのクラウド上で利用するのに便利なコンポーネントを組み込んで配布しています。

https://github.com/sacloud/sacloud-otel-collector

さくらのモニタリングスイートに対しては、ログとトレースはOTLP(OpenTelemetry Protocol)で、メトリクスはPrometheus Remote Write Protocolで送信できます。そのため、これまではotlpexporterとprometheusremotewriteexporterを利用する方法を案内していました。

今回、さくらのクラウド モニタリングスイート専用のエクスポーター(sacloudexporter)を開発し、sacloud-otel-collector に組み込みました。これにより、より簡単にモニタリングスイートへデータを送信できるようになりました。

sacloudexporter の使い方

sacloud-otel-collector v0.5.0 以降を利用すると、以下のように sacloud エクスポーターを設定できます。
必要な設定値はendpointとtokenの2つだけです。これらはコントロールパネルから確認できる値を指定してください。

exporters:
  sacloud:
    metrics:
      endpoint: "123456789012" # or "https://123456789012.metrics.monitoring.global.api.sacloud.jp/prometheus/api/v1/write"
      token: "${SACLOUD_METRICS_TOKEN}" # met-***************
    logs:
      endpoint: "123456789012" # or "https://123456789012.logs.monitoring.global.api.sacloud.jp"
      token: "${SACLOUD_LOGS_TOKEN}" # log-***************
    traces:
      endpoint: "123456789012" # or "https://123456789012.traces.monitoring.global.api.sacloud.jp"
      token: "${SACLOUD_TRACES_TOKEN}" # trc-***************

service:
  pipelines:
    metrics:
      receivers: [...] # 任意のレシーバーを指定
      exporters: [sacloud]
    logs:
      receivers: [...]
      exporters: [sacloud]
    traces:
      receivers: [...]
      exporters: [sacloud]

なお、sacloudexporterを利用する場合はbatchプロセッサーは不要です。モニタリングスイートに送信するために要求される1リクエストあたりのサイズ制限などの設定はデフォルトで適切に行われています。この設定は上書きできません[1]。 タイムアウトやリトライについては、個別に上書きで設定可能です。詳細は ドキュメント を参照してください。

参考までに、これまでのotlpexporterとprometheusremotewriteexporterを直接利用した場合の設定例も以下に示します(これに加えて実運用では適切なbatch/sending_queue設定も別途必要です)。sacloudexporterによって、シンプルに設定できるようになりました。

# これまでの設定例
exporters:
  otlphttp/sakura-monitoring-suite-log:
    endpoint: https://123456789012.logs.monitoring.global.api.sacloud.jp
    headers:
      Authorization: "Bearer ${SACLOUD_LOGS_TOKEN}"
  prometheusremotewrite/sakura-monitoring-suite-metrics:
    endpoint: https://123456789012.metrics.monitoring.global.api.sacloud.jp/prometheus/api/v1/write
    headers:
      Authorization: "Bearer ${SACLOUD_METRICS_TOKEN}"
    resource_to_telemetry_conversion:
      enabled: true
  otlphttp/sakura-monitoring-suite-trace:
    endpoint: https://123456789012.traces.monitoring.global.api.sacloud.jp
    headers:
      Authorization: "Bearer ${SACLOUD_TRACES_TOKEN}"

sacloudexporterはMackerel OpenTelemetry Collectorを参考にしています

実は、sacloudexporterはMackerel用のOpenTelemetry Collectorエクスポーターである mackerelotlpexporter を参考にして開発したものです。詳細は以下の記事をご覧ください。

https://mackerel.io/ja/blog/entry/weekly/20251113

https://blog.arthur1.dev/entry/2025/12/02/042249

MackerelもOTLPでのデータ送信に対応していますが、汎用のotlpexpoterをラップした専用エクスポーターを提供することで、より簡単にMackerelへデータを送信できるようになっています。この考え方はとても参考になりました。この場を借りてお礼申し上げます。

まとめ

さくらのクラウド モニタリングスイート専用OpenTelemetry Collectorエクスポーターを開発し、sacloud-otel-collector v0.5.0としてリリースしました。これにより、モニタリングスイートへのデータ送信がより簡単になりました。どうぞご利用ください。

脚注
  1. 個別に設定しても問題を引き起こす可能性の方が高いだろうと判断し、設定オプション自体を提供していません。 ↩︎

さくらインターネット株式会社

Discussion