OpenTelemetry Collector のデプロイと設定のカスタマイズ 15 minutes
「データを取り込む」ための最初のステップは、OpenTelemetry Collectorをデプロイすることです。Collectorは環境内のテレメトリデータを受信して処理し、Splunk Observability Cloudにエクスポートします。
このワークショップではKubernetesを使用し、Helmを使用してK8sクラスターにCollectorをデプロイします。
Helm とは? HelmはKubernetes用のパッケージマネージャーで、以下のような利点があります:
複雑さの管理多数のマニフェストファイルではなく、単一のvalues.yamlファイルで対応 簡単なアップデート ロールバックのサポートhelm rollbackを使用するだけで、リリースの古いバージョンにロールバック可能 Helm を使用して Collector をインストールする 正しいディレクトリに移動し、スクリプトを実行してCollectorをインストールしましょう:
cd /home/splunk/workshop/tagging
./1-deploy-otel-collector.sh "splunk-otel-collector-chart" has been added to your repositories
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "splunk-otel-collector-chart" chart repository
Update Complete. ⎈Happy Helming!⎈
NAME: splunk-otel-collector
LAST DEPLOYED: Mon Dec 23 18:47:38 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
Splunk OpenTelemetry Collector is installed and configured to send data to Splunk Observability realm us1. スクリプトの実行には1分程度かかる場合があります。
このスクリプトはどのようにしてCollectorをインストールしたのでしょうか?まず、~./profile ファイルに設定された環境変数が読み込まれていることを確認しました:
重要:以下のコマンドは 1-deploy-otel-collector.sh スクリプトによって既に実行されているため、
実行する必要はありません。
次に、splunk-otel-collector-chart Helmチャートをインストールし、最新の状態であることを確認しました:
helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart
helm repo update 最後に、helm install を使用してCollectorをインストールしました:
helm install splunk-otel-collector --version 0.136.0 \
--set= "splunkObservability.realm= $REALM " \
--set= "splunkObservability.accessToken= $ACCESS_TOKEN " \
--set= "clusterName= $INSTANCE -k3s-cluster" \
--set= "environment=tagging-workshop- $INSTANCE " \
splunk-otel-collector-chart/splunk-otel-collector \
-f otel/values.yamlhelm install コマンドは values.yaml ファイルを参照していることに注意してください。
このファイルは Collector の設定をカスタマイズするために使用されます。詳細は後述します。
Collector が実行中であることを確認する 以下のコマンドでCollectorが実行中かどうかを確認できます:
NAME READY STATUS RESTARTS AGE
splunk-otel-collector-agent-kfvjb 1/1 Running 0 2m33s
splunk-otel-collector-certmanager-7d89558bc9-2fqnx 1/1 Running 0 2m33s
splunk-otel-collector-certmanager-cainjector-796cc6bd76-hz4sp 1/1 Running 0 2m33s
splunk-otel-collector-certmanager-webhook-6959cd5f8-qd5b6 1/1 Running 0 2m33s
splunk-otel-collector-k8s-cluster-receiver-57569b58c8-8ghds 1/1 Running 0 2m33s
splunk-otel-collector-operator-6fd9f9d569-wd5mn 2/2 Running 0 2m33s K8s クラスターが O11y Cloud に存在することを確認する Splunk Observability Cloudで、Infrastructure → Kubernetes → Kubernetes Clusters に移動し、
クラスター名($INSTANCE-k3s-cluster)を検索します:
Collector の設定を取得する Collectorの設定をカスタマイズする前に、現在の設定がどのようになっているかを
確認するにはどうすればよいでしょうか?
Kubernetes環境では、Collectorの設定はConfig Mapを使用して保存されています。
以下のコマンドで、クラスター内に存在するconfig mapを確認できます:
kubectl get cm -l app = splunk-otel-collector NAME DATA AGE
splunk-otel-collector-otel-k8s-cluster-receiver 1 3h37m
splunk-otel-collector-otel-agent 1 3h37m 次に、以下のようにしてCollectorエージェントのconfig mapを表示できます:
kubectl describe cm splunk-otel-collector-otel-agent Name: splunk-otel-collector-otel-agent
Namespace: default
Labels: app = splunk-otel-collector
app.kubernetes.io/instance= splunk-otel-collector
app.kubernetes.io/managed-by= Helm
app.kubernetes.io/name= splunk-otel-collector
app.kubernetes.io/version= 0.113.0
chart = splunk-otel-collector-0.113.0
helm.sh/chart= splunk-otel-collector-0.113.0
heritage = Helm
release = splunk-otel-collector
Annotations: meta.helm.sh/release-name: splunk-otel-collector
meta.helm.sh/release-namespace: default
Data
====
relay:
----
exporters:
otlphttp:
headers:
X-SF-Token: ${ SPLUNK_OBSERVABILITY_ACCESS_TOKEN }
metrics_endpoint: https://ingest.us1.signalfx.com/v2/datapoint/otlp
traces_endpoint: https://ingest.us1.signalfx.com/v2/trace/otlp
( followed by the rest of the collector config in yaml format) K8s で Collector の設定を更新する方法 K8sでは values.yaml ファイルを使用してCollectorの設定をカスタマイズできます。
values.yaml ファイルで利用可能なカスタマイズオプションの包括的なリストについては、
このファイル を参照してください。
例を見てみましょう。
Debug Exporter を追加する Collectorに送信されるトレースを確認したいとします。この目的にはdebug exporterを使用できます。これはOpenTelemetry関連の問題のトラブルシューティングに役立ちます。
vi または nano を使用して values.yaml ファイルを編集できます。ここではviを使用した例を示します:
vi /home/splunk/workshop/tagging/otel/values.yaml 以下のテキストをコピーして values.yaml ファイルの末尾に貼り付けて、debug exporterを追加します:
以下のテキストを追加する前に、vi で ‘i’ を押してインサートモードに入ってください。
# NEW CONTENT
exporters :
debug :
verbosity : detailed
service :
pipelines :
traces :
exporters :
- otlphttp
- signalfx
- debug これらの変更後、values.yaml ファイルは以下の内容を含むはずです:
splunkObservability :
profilingEnabled : true
infrastructureMonitoringEventsEnabled : true
certmanager :
enabled : true
operator :
enabled : true
operatorcrds :
install : true
agent :
config :
receivers :
kubeletstats :
insecure_skip_verify : true
auth_type : serviceAccount
endpoint : ${K8S_NODE_IP}:10250
metric_groups :
- container
- pod
- node
- volume
k8s_api_config :
auth_type : serviceAccount
extra_metadata_labels :
- container.id
- k8s.volume.type
extensions :
zpages :
endpoint : 0.0.0.0 : 55679
# NEW CONTENT
exporters :
debug :
verbosity : detailed
service :
pipelines :
traces :
exporters :
- otlphttp
- signalfx
- debug vi で変更を保存するには、esc キーを押してコマンドモードに入り、:wq! と入力してから
enter/return キーを押します。
ファイルを保存したら、以下のコマンドで変更を適用できます:
cd /home/splunk/workshop/tagging
helm upgrade splunk-otel-collector \
--set= "splunkObservability.realm= $REALM " \
--set= "splunkObservability.accessToken= $ACCESS_TOKEN " \
--set= "clusterName= $INSTANCE -k3s-cluster" \
--set= "environment=tagging-workshop- $INSTANCE " \
splunk-otel-collector-chart/splunk-otel-collector \
-f otel/values.yamlRelease "splunk-otel-collector" has been upgraded. Happy Helming!
NAME: splunk-otel-collector
LAST DEPLOYED: Mon Dec 23 19:08:08 2024
NAMESPACE: default
STATUS: deployed
REVISION: 2
NOTES:
Splunk OpenTelemetry Collector is installed and configured to send data to Splunk Observability realm us1. values.yaml ファイルを通じてCollectorの設定を変更した場合は、
config mapを確認して、Collectorに適用された実際の設定を確認することが有用です:
kubectl describe cm splunk-otel-collector-otel-agent 期待通り、debug exporterがtracesパイプラインに追加されたことが確認できます:
traces :
exporters :
- otlphttp
- signalfx
- debug debug exporterの出力については、クラスターにアプリケーションをデプロイして
トレースのキャプチャを開始した後に確認します。