Mackerelトレーシング機能はOpenTelemetryの仕組み (計装)を利用してデータを送信します。
このページでは OpenTelemetry Collectorを使用してデータを送信する方法を解説します。
OpenTelemetry Collectorとは
OpenTelemetry Collector は特定ベンダーに依存しない、OpenTelemetry 用エージェントです。
Dockerを使用してサイドカーにすることも、APKやDEBを通してインストールすることもできます。
このページではOpenTelemetry Collectorのインストール方法について説明します。
細かい実装については公式のドキュメントを参照してください。
Collectorを使用するべきか
Collector を使わずに、SDK から直接データを送信することもできます。
どちらにするかどうかを決める際は以下のページを参考にしてください。
導入方法
OpenTelemetry Collectorを使用するためにはインストールと設定が必要です。
インストール
OpenTelemetry Collectorは
- Docker
- Kubernetes
- Linux パッケージ
などで配布されています。
例えば、apkを使用する場合以下のコマンドでインストールできます。
wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/${VERSION}/otelcol_${VERSION}_linux_amd64.deb sudo dpkg -i otelcol_${VERSION}_linux_amd64.deb
各プラットフォームに対応したコマンドは以下にまとめられています
設定
OpenTelemetry Collector はファイルと環境変数で設定することができます。
例えば、systemd を使用している場合は /etc/otelcol/config.yaml
を以下のように設定すると、Mackerelに送信することができます。
receivers: otlp: protocols: grpc: http: processors: memory_limiter: check_interval: 1s limit_mib: 500 spike_limit_mib: 100 batch: # Mackerel では 6MB 以上のリクエストを受け付けません。 # そのため、リクエストあたりの最大スパン数を適当に設定します。 # スパンはトレースにおける作業または操作の単位です。 # データベースへのクエリ実行やアプリケーションの処理の 1 部分などをスパンとして表現できます。 # https://opentelemetry.io/docs/concepts/signals/traces/#spans # Mackerel には 1 オーガニゼーションあたり月間 500 万スパンまで送信できます send_batch_size: 5000 send_batch_max_size: 5000 exporters: otlphttp/mackerel: endpoint: "https://otlp-vaxila.mackerelio.com" headers: Accept: "*/*" "Mackerel-Api-Key": ${env:MACKEREL_APIKEY} extensions: health_check: service: extensions: [health_check] pipelines: traces: receivers: [otlp] processors: [batch] exporters: [otlphttp/mackerel]
この例では、次の項目を設定しています。
- exporters
- exportersに
otlphttp
を使用します。 - endpointをMackerelのエンドポイント (
https://otlp-vaxila.mackerelio.com
) にします。 - headersには
Mackerel-Api-Key
とAccept
を設定します。- Mackerel-Api-Key: Mackerel で発行した API キーを設定します。*1
- Accept: 常に
*/*
を設定します。 (Mackerelが内部でAWS Lambdaを使用しているために必要な設定です。)
- exportersに
- service
- pipelines の traces に作成したexporterを設定します。
これらを設定することで、CollectorからMackerelへデータを送信するようになります。
*1 :テレメトリデータを送信するための API キーは Mackerel のダッシュボードの API キータブで確認できます。 "Write" 権限が付与されている API キーを環境変数 MACKEREL_APIKEY
にセットしてください。API キーの権限を変更した際は反映まで1分ほどお待ちください。