Smart Agent からSplunk Distribution of the OpenTelemetry Collectorへの移行プロセス
SignalFX Smart Agent から Splunk Distribution of OpenTelemetry Collector への移行プロセスについて説明します。
Smart AgentからCollectorに移行するには、次の手順を実行します:
1. Collector を非本番働環境にデプロイする
Collector を非本番環境、たとえば開発用のホストや VM、ステージング用の Kubernetes クラスターなどにデプロイします。この環境は、本番環境のコピーか、同一である必要があります。
Splunk Observability Cloud のインスタンスに移動し、ナビゲーションバーで [Data Management > Available integrations] を選択します。Collector をデプロイするプラットフォームを選択します。
ご使用のプラットフォームのセットアップガイドに従って Collector をデプロイします。
2. Collector のデプロイメントを検証する
以下の順序で Collector のデプロイを検証します。
ダッシュボードを使用して検証する
Collector の内蔵ダッシュボードを見ることから始めます:
-
メモリやCPU使用率などのプロセス・メトリクス
-
テレメトリ処理(メトリクス、スパン、ログ)のためのドロップ、失敗、成功メトリクス
ナビゲーションバーで Dashboards を選択します。
OpenTelemetry Collector の組み込みダッシュボードグループを検索します。
[Critical Monitoring] セクションに移動し、データがドロップされていないかをレビューして、データ損失やテレメトリデータの欠落が発生していないことを確認します。メトリクス、スパン、ログのグラフが表示されます。
いずれかのグラフがゼロ以上の値を示している場合は、データがドロップされているため、その原因を調査する必要があります。さらに詳しく診断するには、「Validate using logs」を参照してください。
zPagesを使用して検証する
Collector が正しく設定されていることを確認するには、zPages 拡張機能を有効にします。
これはデフォルトでポート55679上にローカルに公開され、以下の概要を示すために使用できます:
-
サービスおよびビルド、ランタイム情報 (
http://localhost:<port>/debug/servicez) -
パイプラインの実行 (
http://localhost:<port>/debug/pipelinez) -
エクステンション (
http://localhost:<port>/debug/extensionz) -
機能ゲート(
http://localhost:<port>/debug/featurez) -
スパンとエラーサンプル (
http://localhost:<port>/debug/tracez) -
RPC統計 (
http://localhost:<port>/debug/servicez/rpcz)
コンテナ環境では、このポートをローカルだけでなく、パブリックインターフェイスに公開できます。設定に次の行を追加することで公開できます。
extensions:
zpages:
endpoint: 0.0.0.0:55679
メトリクスファインダーを使用して検証する
Metric Finder を使用して、メトリクスが特定のインテグレーションから入力されていることを確認します。ナビゲーションバーで Metric Finder を選択します。
デフォルトで Kubernetes インテグレーションからプルされたすべてのメトリクスの検索結果と、フィルタリングまたは除外できる関連メタデータが表示されます。
例えば、container_cpu_utilization のように、特定のメトリクスを選択します。
選択した期間にわたる時系列データを表示するチャートとして、メトリクスを表示できるようになりました。
監視用に設定されたインテグレーションでメトリクスが見つからない(検索結果で見つからない、またはグラフに最近のデータポイントがない)場合は、ログを使用して検証するのセクションに進んでください。
ログを使用して検証する
ログを使用して、Collector のデプロイメントを検証できます。環境に応じて、次のコマンドを使用します。
Dockerの場合:
docker logs my-container >my-container.log
Journald の場合:
journalctl -u my-service >my-service.log
Kubernetesの場合:
kubectl describe pod my-pod kubectl logs my-pod otel-collector >my-pod-otel.log kubectl logs my-pod fluentd >my-pod-fluentd.log
以下のエラーがないかチェックします:
-
ポートの競合:「bind:address already in use」というエラーメッセージが表示される場合があります。このメッセージが表示された場合は、設定を変更して別のポートを使用します。
-
特定のユースケースを示すHTTPエラーコード:
-
401(認証されていません):設定されたアクセストークンまたはレルムが不正です。
-
404(見つかりません):エンドポイントやパス(例えば/v1/log)のようなコンフィギュレーション・パラメーターが間違っている可能性が高く、ネットワーク/ファイアウォール/ポートの問題である可能性があります。
-
429(リクエストが多すぎる):Orgは送信されるトラフィック量に対してプロビジョニングされていません。
-
503 (サービス利用不可): ステータスのページを確認してください。
-
特定のレシーバーがアプリケーションによって公開されたメトリクスをフェッチしていることを確認するには、次の例に示すように構成ファイルを更新します。
ロギング・レベルを debug に設定します:
service:
telemetry:
logs:
level: debug
SignalFx エクスポーターを使用して、log_data_points を true に設定します:
exporters:
signalfx:
...
log_data_points: true
...
設定の更新後、Collector を再起動します。環境のログを確認して、デプロイメントを検証します。
ログから問題を特定できない場合は、サポートにお問い合わせください。環境、プラットフォーム、設定、ログに関する情報をできるだけ多く収集します。サポートの問い合わせオプションについては、「サポートプログラム」を参照してください。
1. 既存の Smart Agent 設定ファイルを探します。
Smart Agent は、agent.yaml ファイルを編集することで設定できます。デフォルトの設定は、Linux では /etc/signalfx/agent.yaml、Windows では \ProgramData\SignalFxAgent\agent.yaml にインストールされます。-config コマンドラインフラグを使用して Smart Agent のインストール中に場所を上書きすると、構成ファイルは指定した場所に保存されます。
以下はYAMLコンフィギュレーションファイルの例で、該当する場合はデフォルト値を使用します:
signalFxAccessToken: {"#from": "env:SIGNALFX_ACCESS_TOKEN"}
ingestUrl: https://ingest.us1.signalfx.com
apiUrl: https://api.us1.signalfx.com
bundleDir: /opt/my-smart-agent-bundle
procPath: /my_custom_proc
etcPath: /my_custom_etc
varPath: /my_custom_var
runPath: /my_custom_run
sysPath: /my_custom_sys
observers:
- type: k8s-api
collectd:
readThreads: 10
writeQueueLimitHigh: 1000000
writeQueueLimitLow: 600000
configDir: "/tmp/signalfx-agent/collectd"
monitors:
- type: collectd/activemq
discoveryRule: container_image =~ "activemq" && private_port == 1099
extraDimensions:
my_dimension: my_dimension_value
- type: collectd/apache
discoveryRule: container_image =~ "apache" && private_port == 80
- type: postgresql
discoveryRule: container_image =~ "postgresql" && private_port == 7199
extraDimensions:
my_other_dimension: my_other_dimension_value
- type: processlist
4. 本番環境でのリソース使用率の見積もり(サイジング)を行う
Collector および対応する VM またはホストのサイジングは、収集するテレメトリに基づいて実行する必要があります。Collector には、以下につき 1 つの CPU コアが必要です。
-
毎秒15,000スパン
-
毎秒20,000データポイント
-
毎秒10,000ログレコード
Smart Agent には、エージェントの内部状態に関するメトリクスを出力する内部メトリクスモニターがあります。このモニターは、Collector のパフォーマンスの問題をデバッグし、過負荷を防ぐのに役立ちます。Smart Agent 構成ファイルに以下を追加します。
monitors:
- type: internal-metrics
Smart Agent 構成ファイルへの追加は、スマートエージェントを介したデータ送信の検証にのみ必要であることに注意してください。更新された構成ファイルを使用して、Collector を本番ホストにデプロイすると、Smart Agent 構成ファイルは削除されます。
設定ファイルの更新後、Smart Agent を再起動します。
続いて、sfxagent.datapoints_sent と sfxagent.trace_spans_sent メトリクスを使用して、それぞれ Splunk Observability Cloud に送信されるデータポイントとスパンの数を推定できます。それらをダッシュボードにプロットし、ディメンションに基づいてフィルタリングすることで、クラスターまたはホストごとの合計を確認できます。
Collector がトレースデータとメトリクスデータの両方を処理する場合は、サイジング時に両方を考慮する必要があります。たとえば、1 秒あたり 7.5K のスパンと 1 秒あたり 10K のデータポイントには、1 つの CPU コアが必要です。
1 つの CPU に対して 2 GB のメモリを使用します。デフォルトでは、Collector は 512 MB のメモリを使用するように設定されています。
以下の例に示すように、すべての Collector インスタンスで memory_limiter プロセッサーを設定します:
processors:
memory_limiter:
check_interval:
limit_mib:
spike_limit_mib:
memory_limiter プロセッサーを、レシーバーの直後の、パイプラインの最初のプロセッサーとして定義します。5. 更新された設定ファイルを使用して、Collector を非本番環境にデプロイする
必要な更新と構成ファイルの変換を完了し、更新されたファイルを使用して非本番環境でCollectorを再起動します。
Collector の再起動
Linuxの場合:
sudo systemctl restart splunk-otel-collector
Windowsの場合:
Stop-Service splunk-otel-collector
Start-Service splunk-otel-collector
Kubernetesの場合:
helm upgrade my-splunk-otel-collector --values my_values.yaml splunk-otel-collector-chart/splunk-otel-collector
Collector が正常に再起動したら、デプロイメントを検証し、データが収集されていること、更新された構成ファイルにエラーがないことを確認します。
6. 更新された設定ファイルを使用して、Collector を本番ホストにデプロイする
Collector を非本番環境に正常にデプロイし、データが想定通りに Splunk Observability Cloud に取り込まれていることを確認したら、最初の手順として、Smart Agent を停止して単一の本番ホストまたは VM から アンインストールし、移行を開始します。各環境では、以下のコマンドに従ってください。
Linuxの場合:
Ubuntuを含むDebianベースのディストリビューションでは、以下のコマンドを実行します:
sudo dpkg --remove signalfx-agent
Red Hat、CentOS、その他のRPMベースのインストールでは、以下のコマンドを実行します:
sudo rpm -e signalfx-agent
Windowsの場合(インストーラー):
コントロールパネルの Programs and Features からSmart Agent をアンインストールします。
Windowsの場合(ZIPファイル):
以下のPowerShellコマンドを実行して、signalfx-agent サービスを停止し、アンインストールします:
SignalFxAgent\bin\signalfx-agent.exe -service "stop"
SignalFxAgent\bin\signalfx-agent.exe -service "uninstall"
Smart Agent をアンインストールした後、更新された構成ファイルを使用して Collector を本番ホストにデプロイし、Collector のデプロイメントを検証します。
1台のホストで確認した後、残りのホストに同じ設定でCollectorをデプロイします。
__ ___ ___ _ ______ _____________ _____ ________ ___ ___ ___ ____ __ ___ ____ ____ __ ______ _____________ ______ ___ ___ ___ ____ __ ___ _________ _____
_________ __ ______ _____________ _____ _________
-
______ _ ____ __ ___ ______ _______ _______
-
_______ ______ ________
_________ __ ___________ _________ ___ ____ _____ _____
-
___ _ ________ ___ ___ _______ _______ _________ _______ __ ______ ________
-
____ ___ ______ ______________ ____ _____ _____ _______ __ ___________ ____ __________ _________ ___ ______ _________ __________ __ _____ ___ ____ _______