このパートでは、お使いのシステムに以下のものがインストールされている必要があります:
なぜ独自のコレクターをビルドするの?
コレクターのデフォルトのディストリビューション(core および contrib)は、含まれれるコンポーネントが少なすぎたり、もしくは多すぎたりします。
本番環境で contrib コレクターを実行することはできますが、インストールされているコンポーネントの量が多く、デプロイに必要ではないものも含まれるため、一般的には推奨されません。
独自のコレクターをビルドする利点は?
独自のコレクターバイナリー(通常は「ディストリビューション」と呼ばれる)を作成することで、必要なものだけをビルドすることができます。
メリットは次のとおりです:
- バイナリーのサイズが小さい
- 一般的な Go の脆弱性スキャナーを利用できる
- 組織独自のコンポーネントを組み込むことができる
カスタムコレクターをビルドするときの注意事項は?
さて、これは Ninja ゾーンの人たちにあえて言うことではないかもしれませんが:
- Go の開発経験を、必須ではないが、推奨される
- Splunk の サポートがない
- ディストリビューションのライフサイクルを管理しなければならない
プロジェクトは安定性に向けて進んでいますが、行われた変更がワークフローを壊す可能性があることに注意してください。Splunk チームは、より高い安定性とサポートを提供し、デプロイメントニーズに対応するためのキュレーションされた経験を提供しています。
Ninja ゾーン
必要なツールをすべてインストールしたら、以下のディレクトリ構造に従い、 otelcol-builder.yaml
という新しいファイルを作成します:
.
└── otelcol-builder.yaml
ファイルを作成したら、インストールするコンポーネントのリストと追加のメタデータを追加する必要があります。
この例では、導入設定に必要なコンポーネントのみをインストールするためのビルダーマニフェストを作成します:
dist:
name: otelcol-ninja
description: A custom build of the Open Telemetry Collector
output_path: ./dist
extensions:
- gomod: go.opentelemetry.io/collector/extension/ballastextension v0.80.0
- gomod: go.opentelemetry.io/collector/extension/zpagesextension v0.80.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.80.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.80.0
exporters:
- gomod: go.opentelemetry.io/collector/exporter/loggingexporter v0.80.0
- gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.80.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter v0.80.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/signalfxexporter v0.80.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter v0.80.0
processors:
- gomod: go.opentelemetry.io/collector/processor/batchprocessor v0.80.0
- gomod: go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.80.0
receivers:
- gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.80.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.80.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.80.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.80.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.80.0
ocb のためのyamlファイルを作成して更新したら、 次のコマンドを実行します:
ocb --config=otelcol-builder.yaml
すると、次のようなディレクトリ構造が作成されます:
├── dist
│ ├── components.go
│ ├── components_test.go
│ ├── go.mod
│ ├── go.sum
│ ├── main.go
│ ├── main_others.go
│ ├── main_windows.go
│ └── otelcol-ninja
└── otelcol-builder.yaml
最後に、 ./dist/otelcol-ninja
を実行すれば、独自ビルドのCollectorが動作することがわかります。このコマンドを実行する前に、 otelcol-contrib
サービスが停止していることを確認してください。
./dist/otelcol-ninja --config=file:/etc/otelcol-contrib/config.yaml
この設定ファイルで記述されているコンポーネントは、ビルドに含まれていないかもしれません。エラーの内容を含めて、何が起こるかを見てみましょう 。
リファレンス
- https://opentelemetry.io/docs/collector/custom-collector/