Linux での自動ディスカバリーのための高度なカスタマイズ 🔗
高度なシナリオのために Splunk のオートディスカバリーとゼロコードインストルメンテーションをカスタマイズする方法を学びます。
高度なカスタマイズにより、以下のタスクを達成することができます:
デフォルトの自動インストルメンテーション設定をオーバーライドする 🔗
デフォルトの自動インストルメンテーション設定をオーバーライドして、プロファイリングとランタイムメトリクス収集の機能を使用することができます。
AlwaysOn Profilingの有効化 🔗
インストルメンテーションの環境変数を更新することで、CPU とメモリのプロファイリングを有効にできます。AlwaysOn プロファイリングでは、スタックトレースが継続的に収集されるため、どのコード行がプロセスの速度を低下させているかがわかります。プロファイリングの詳細については、Splunk APMのAlwaysOn Profilingの概要 を参照してください。
プロファイリングをグローバルに有効にするには、インストール時に CPU プロファイリングには --enable-profiler
フラグを、メモリプロファイリングには --enable-profiler-memory
フラグを追加します。例:
curl -sSL https://dl.signalfx.com/splunk-otel-collector.sh > /tmp/splunk-otel-collector.sh && \
sudo sh /tmp/splunk-otel-collector.sh --with-instrumentation --deployment-environment prod \
--realm <SPLUNK_REALM> -- <SPLUNK_ACCESS_TOKEN> \
--enable-profiler --enable-profiler-memory
また、言語ごとにプロファイリングを有効にすることもできます。この方法を使用すると、プロファイリングでコールスタックを収集する言語を決定できます。
言語ごとに AlwaysOn プロファイリングを有効にするには、次の手順に従います:
/etc/splunk/zeroconfig
ディレクトリにある <language>.conf ファイルを開きます。CPU プロファイリングには環境変数
SPLUNK_PROFILER_ENABLED=true
を、メモリプロファイリングにはSPLUNK_PROFILER_MEMORY_ENABLED=true
を設定します。アプリケーションを再起動します。
注釈
systemd
を使用している場合、環境変数は /usr/lib/systemd/system.conf.d/00-splunk-otel-auto-instrumentation.conf
にあります。
特定の間隔からコールスタックをサンプリングするには、SPLUNK_PROFILER_CALL_STACK_INTERVAL
設定をミリ秒単位で希望の間隔に変更します。デフォルト値は 10000
です。
例えば、SPLUNK_PROFILER_CALL_STACK_INTERVAL=5000
はコールスタック間隔を 5000 ミリ秒に設定します。
ランタイムメトリクスコレクションを有効にする 🔗
インストルメンテーションの環境変数を更新することで、実行時のメトリクス収集を有効にできます。この設定は、アプリケーションから追加のメトリクスを収集するようにエージェントを設定します。
ランタイムメトリクスをグローバルに有効にするには、インストール時に --enable-metrics
フラグを追加します。例:
curl -sSL https://dl.signalfx.com/splunk-otel-collector.sh > /tmp/splunk-otel-collector.sh && \
sudo sh /tmp/splunk-otel-collector.sh --with-instrumentation --deployment-environment prod \
--realm <SPLUNK_REALM> -- <SPLUNK_ACCESS_TOKEN> \
--enable-metrics
また、個々の言語に対してランタイムメトリクスの収集を有効にすることもできます。この方法を使用すると、Collector が言語レベルで送信するランタイムメトリクスを決定できます。
個々の言語のランタイムメトリクス収集を有効にするには、以下の手順に従います:
/etc/splunk/zeroconfig
ディレクトリにある <language>.conf ファイルを開きます。環境変数
SPLUNK_METRICS_ENABLED=true
を設定します。アプリケーションを再起動します。
ゲートウェイモードで自動ディスカバリーを使用する 🔗
The Splunk OpenTelemetry Collector chart uses the agent mode by default. Activating gateway mode deploys an instance of the OpenTelemetry Collector in a separate container, and this instance collects data from the entire cluster.
ゲートウェイモードについて詳細については、データ転送(ゲートウェイ)モード を参照してください。
Linux用のゲートウェイモードで自動検出を直接展開することはできませんが、自動検出から収集したデータを既存のゲートウェイデプロイに送信することはできます。
以下の手順に従って、OpenTelemetry Collector のゲートウェイデプロイにデータを送 信してください:
/etc/splunk/zeroconfig
にある <language>.conf ファイルを開きます。環境変数
OTEL_EXPORTER_OTLP_ENDPOINT=<gateway_endpoint>
を設定します。<gateway_endpoint>はゲートウェイデプロイのポートです。アプリケーションを再起動します。
Collectorはゲートウェイにデータを送信します。
サードパーティアプリケーションのディスカバリー設定をカスタマイズする 🔗
デフォルトでは、自動ディスカバリーはCollector実行可能ファイルによって提供される組み込みの設定を読み取ります。設定を変更したり、部分的な検出ステータスの場合に既存の設定を調整したりするために、独自の設定を提供できます。
ディスカバリー設定値の優先順位は、低いものから高いものへ次のようになっています:
Collector 実行ファイルに組み込まれている、デフォルトの
bundle.d
コンポーネント構成ファイル。config.d/<receivers or extensions>/*.discovery.yaml
コンポーネント設定ファイルconfig.d/properties.discovery.yaml
マッピングされたプロパティ・ファイルの内容--set
フォームを使用したconfig.d/properties.discovery.yaml
プロパティ・ファイルの内容Collector プロセスで使用可能な
SPLUNK_DISCOVERY_<xyz>
プロパティ環境変数--set splunk.discovery.<xyz>
プロパティのコマンドラインオプション
プロパティ・ファイルによりプロパティを定義する 🔗
etc/otel/collector/config.d/properties.discovery.yaml
ファイルを作成することで、プロパティを上書きまたは追加することができます。ファイル内のマッピングされた各プロパティは、既存のディスカバリー設定を上書きします。例:
splunk.discovery: receivers: postgresql: username: "${PG_USERNAME_ENVVAR}" password: "${PG_PASSWORD_ENVVAR}"
--discovery-properties=<filepath.yaml>
引数を使用して、他の Collectorと共有したくないディスカバリーモード プロパティをロードできます。この引数を使用してディスカバリープロパティを指定する場合、config.d/properties.discovery.yaml
に含まれるプロパティは無視されます。
カスタム設定を作成する 🔗
カスタム・ディスカバリー設定を作成するには、以下の手順に従ってください:
Linuxの
/etc/otel/collector/config.d
でconfig.d
フォルダに移動します。<name>.discovery.yaml
ファイルを作成し、config.d
のサブディレクトリ内に置きます。例えば、extensions
やreceivers
のように、<name>
は使用したいコンポーネントの名前です。<name>.discovery.yaml
ファイルを編集して、必要な設定を追加します。たとえば、レシーバーを追加する場合、Discovery Mode は Collector 構成のreceivers
オブジェクト内のコンテンツをロードします。
カスタム設定は、デフォルト設定でオーバーライドしたいフィールドで構成されます。例:
# <some-receiver-type-with-optional-name.discovery.yaml>
<receiver_type>(/<receiver_name>):
enabled: <true | false> # true by default
rule:
<observer_type>(/<observer_name>): <receiver creator rule for this observer>
config:
default:
<default embedded receiver config>
<observer_type>(/<observer_name>):
<observer-specific config items, merged with `default`>
status:
metrics:
<discovery receiver metric status entries>
statements:
<discovery receiver statement status entries>
Collector で使用する前に、--dry-run
オプションを使用して、 結果のディスカバリー構成を確認します。
詳細については、DiscoveryレシーバーのREADMEファイル を参照してください。
カスタム設定ディレクトリを定義する 🔗
ディスカバリー設定用のカスタム・ディレクトリを定義するには、例のように --config-dir
オプションを使用します:
otelcol --discovery --config-dir <custom_path>
言語ランタイムの追加設定 🔗
自動インストルメンテーションを使用してカスタマイズできる設定は他にも多数あります。
各言語で変更できる設定のリストについては、以下のリソースを参照してください:
言語 |
リソース |
---|---|
Java |
|
Node.js |
Splunk Observability Cloud 用の Splunk Distribution of OTel JS を設定する |