Linux での自動ディスカバリーのための高度なカスタマイズ

Linux 環境におけるオートディスカバリーとインストルメンテーションのデプロイをカスタマイズする方法を学びます。

高度なシナリオのために Splunk のオートディスカバリーとゼロコードインストルメンテーションをカスタマイズする方法を学びます。

高度なカスタマイズにより、以下のタスクを達成することができます:

デフォルトの自動インストルメンテーション設定をオーバーライドする

デフォルトの自動インストルメンテーション設定をオーバーライドして、プロファイリングとランタイムメトリクス収集の機能を使用することができます。

AlwaysOn Profilingの有効化

インストルメンテーションの環境変数を更新することで、CPU およびメモリのプロファイリングをアクティブ化できます。AlwaysOn Profiling では、スタックトレースを継続的に収集するため、プロセスを低速化させているコード行を特定できます。プロファイリングの詳細については、「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 プロファイリングを有効にするには、次の手順に従います:

  1. /etc/splunk/zeroconfig ディレクトリにある <language>.conf ファイルを開きます。

  2. CPU プロファイリングには環境変数 SPLUNK_PROFILER_ENABLED=true を、メモリプロファイリングには SPLUNK_PROFILER_MEMORY_ENABLED=true を設定します。

  3. アプリケーションを再起動します。

注: 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 が言語レベルで送信するランタイムメトリクスを決定できます。

個々の言語のランタイムメトリクス収集を有効にするには、以下の手順に従います:

  1. /etc/splunk/zeroconfig ディレクトリにある <language>.conf ファイルを開きます。

  2. 環境変数 SPLUNK_METRICS_ENABLED=true を設定します。

  3. アプリケーションを再起動します。

ゲートウェイモードで自動ディスカバリーを使用する

Splunk OpenTelemetry Collector チャートは、デフォルトでエージェントモードを使用します。ゲートウェイモードをアクティブ化すると、OpenTelemetry Collector のインスタンスが別のコンテナに配置され、このインスタンスがクラスター全体からデータを収集します。

ゲートウェイモードの詳細については、「データ転送(ゲートウェイ)モード」を参照してください。

Linux 用のゲートウェイモードでオートディスカバリを直接展開することはできませんが、オートディスカバリから収集したデータを既存のゲートウェイデプロイに送信することはできます。

以下の手順に従って、OpenTelemetry Collector のゲートウェイデプロイにデータを送 信してください:

  1. /etc/splunk/zeroconfig にある <language>.conf ファイルを開きます。

  2. 環境変数 OTEL_EXPORTER_OTLP_ENDPOINT=<gateway_endpoint> を設定します。<gateway_endpoint>はゲートウェイデプロイのポートです。

  3. アプリケーションを再起動します。

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に含まれるプロパティは無視されます。

カスタム設定を作成する

カスタム・ディスカバリー設定を作成するには、以下の手順に従ってください:

  1. Linuxの /etc/otel/collector/config.dconfig.d フォルダに移動します。

  2. <name>.discovery.yaml ファイルを作成し、config.d のサブディレクトリ内に置きます。例えば、extensionsreceivers のように、<name> は使用したいコンポーネントの名前です。

  3. <name>.discovery.yaml ファイルを編集して、必要な設定を追加します。たとえば、レシーバを追加する場合、ディスカバリモードは 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 オプションを使用して、 結果のディスカバリー構成を確認します。

詳細については、「ディスカバリレシーバの README ファイル」を参照してください。

カスタム設定ディレクトリを定義する

ディスカバリー設定用のカスタム・ディレクトリを定義するには、例のように --config-dir オプションを使用します:

otelcol --discovery --config-dir <custom_path>

言語ランタイムの追加設定

自動インストルメンテーションを使用してカスタマイズできる設定は他にも多数あります。

各言語で変更できる設定のリストについては、以下のリソースを参照してください:

言語

リソース

Java

Splunk Observability Cloud 用の Java エージェントを設定する

Node.js

Splunk Observability Cloud 用の Splunk Distribution of OTel JS を設定する