Docs » Splunk APMのAlwaysOn Profilingの概要 » Splunk APMのAlwaysOn Profilingにデータを取り込む

Splunk APMのAlwaysOn Profilingにデータを取り込む 🔗

以下の手順に従って、Splunk APMのAlwaysOn Profilingにプロファイリングを取り込みます。

前提条件 🔗

Splunk APMのAlwaysOn Profilingにデータを取り込むには、以下が必要です:

AlwaysOn Profilingはホストベースのすべてのサブスクリプションで有効になっています。1分あたりの解析トレース数(TAPM)に基づくサブスクリプションの場合は、Splunk サポートの担当者に確認してください。

Helmチャートのデプロイメント 🔗

If you’re deploying the Splunk Distribution of the OpenTelemetry Collector using Helm, pass the following value when installing the chart:

--set splunkObservability.profilingEnabled='true'

values.yamlファイル自体でパラメータを編集することもできます。例:

# This option enables only the shared pipeline for logs and profiling data.
# There is no active collection of profiling data.
# Instrumentation libraries must be configured to send it to the collector.
# If you don't use AlwaysOn Profiling for Splunk APM, you can disable it.
profilingEnabled: false

If you are using a version of the OTel Collector lower than 0.78.0, make sure to turn off logs collection:

logsEnabled: false

注釈

profileEnabledtrue に設定すると、AlwaysOn Profilingに必要なログパイプラインが作成されますが、 APMのインストルメンテーションはインストールされません。インストルメンテーションをインストールするには、プロファイリングデータを取り込む を参照してください。

プロファイリングデータを取り込む 🔗

AlwaysOn Profilingを使用してSplunk APMにプロファイリングデータを取り込むには、以下の手順に従います:

  1. アプリケーションやサービスをインストルメントする

  2. AlwaysOn Profilingの有効化

  3. Splunk Observability Cloudがプロファイリングデータを受信していることを確認する

アプリケーションやサービスをインストルメントする 🔗

AlwaysOn Profilingでは、スタックトレースをアプリケーションリクエストに関連付けるためにAPMのトレースデータを必要とします。Splunk APM用にアプリケーションをインストルメントするには、適切なプログラミング言語の手順に従ってください:

言語

利用可能なインストルメンテーション

ドキュメント

Java

Splunk Distribution of OpenTelemetry Javaバージョン1.14.2以降

OpenJDKのバージョン15.0から17.0.8までは、メモリプロファイリングに対応していません。詳細はJDKバグトラッカーの https://bugs.openjdk.org/browse/JDK-8309862 を参照してください。

Node.js

Splunk Distribution of OpenTelemetry JSバージョン2.0以降

Node.jsアプリケーションをSplunk Observability Cloudにインストルメンテーションする

.NET

Splunk Distribution of OpenTelemetry .NETバージョン 1.3.0以上

.NET アプリケーションを Splunk Observability Cloud (OpenTelemetry) にインストルメンテーションする

Python

Splunk Distribution of OpenTelemetry Pythonバージョン 1.15以上

注釈

プロファイリングデータの保持については、Application Performance Monitoring(APM)のデータ保持 を参照してください。

AlwaysOn Profilingの有効化 🔗

Splunk Observability Cloud用にサービスをインストルメントし、Splunk APMにAPMのデータが取り込まれていることを確認したら、AlwaysOn Profilingを有効にします。

AlwaysOn Profilingを有効にするには、該当するプログラミング言語の手順に従ってください:

CPUとメモリのプロファイリングを有効にする

  • CPUのプロファイリングを使用するには、splunk.profiler.enabled システムプロパティを有効にするか、SPLUNK_PROFILER_ENABLED 環境変数を true に設定します。

  • メモリのプロファイリングを有効にするには、splunk.profiler.memory.enabled システムプロパティまたは SPLUNK_PROFILER_MEMORY_ENABLED 環境変数を true に設定します。メモリのプロファイリングを有効にするには、splunk.profiler.enabled プロパティを true に設定する必要があります。

プロファイリングを設定する

  • プロファイリングデータをエクスポートするOTLPエンドポイントが正しく設定されていることを確認します:
    • プロファイリング固有のエンドポイントは、splunk.profiler.logs-endpoint システムプロパティまたは SPLUNK_PROFILER_LOGS_ENDPOINT 環境変数で設定します。

    • このエンドポイントが設定されていない場合、汎用のOTLPエンドポイントが使用され、otel.exporter.otlp.endpoint システムプロパティまたは OTEL_EXPORTER_OTLP_ENDPOINT 環境変数によって設定されます。

    • このエンドポイントも設定されていない場合は、デフォルトの http://localhost:4317 になります。

    • Kubernetes以外のデプロイメントでは、OTLPエンドポイントは http://${COLLECTOR_IP}:4317 を指す必要があります。コレクターとプロファイルされたアプリケーションが同じホスト上で実行されている場合は、http://localhost:4317 を使用してください。それ以外の場合は、プロファイルされたホストからコレクターホスト向けのポート4317に対するアクセスをブロックするファイアウォールルールがないことを確認してください。

    • Kubernetesデプロイメントの場合、OTLPエンドポイントは http://$(K8S_NODE_IP):4317 を指す必要があります。ここで K8S_NODE_IP は、アプリケーションを実行しているKubernetesポッド上の環境構成を設定することにより、KubernetesダウンストリームAPIからフェッチされます。例:

      env:
      - name: K8S_NODE_IP
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: status.hostIP
      
  • ポート9943は、コレクターの配布におけるSignalFxレシーバー用のデフォルトポートです。コレクターの設定でこのポートを変更する場合は、カスタムポートをJVMに渡す必要があります。

次の例は、システムプロパティを使用してプロファイラーを有効にする方法を示しています:

java -javaagent:./splunk-otel-javaagent.jar \
-Dsplunk.profiler.enabled=true \
-Dsplunk.profiler.memory.enabled=true \
-Dotel.exporter.otlp.endpoint=http(s)://collector:4317 \
-Dsplunk.metrics.endpoint=http(s)://collector:9943
-jar <your_application>.jar

プロファイリングデータ用に別のエンドポイントを設定するなど、その他の設定オプションについては、AlwaysOn Profilingの Java 設定 を参照してください。

注釈

AlwaysOn Profilingは、Oracle JDK 8およびIBM J9ではサポートされていません。

Splunk Observability Cloudがプロファイリングデータを受信していることを確認する 🔗

AlwaysOn Profilingを設定し有効化したら、プロファイリングデータが受信されていることを確認します:

  1. Splunk Observability Cloudにログインします。

  2. ナビゲーションメニューで、APM を選択します。

  3. Splunk APM で、AlwaysOn Profiling を選択します。

  4. サービスを選択し、CPUビューからメモリビューに切り替えます。

  5. サービスが複数のインスタンスで実行されている場合は、ホスト、コンテナ、プロセスIDを選択して、関心のあるインスタンスを選択します。

  6. メモリのプロファイリングを有効にしている場合は、メモリのメトリクスを調べます。メモリプロファイリングのメトリクス を参照してください。

ゲートウェイデプロイメントでAlwaysOn Profilingを有効化する 🔗

以下の手順に従って、以下のゲートウェイデプロイメント例と同様のデータ転送モードまたはゲートウェイモードのコレクターにAlwaysOn Profilingをセットアップします:

flowchart LR accTitle: Example gateway deployment diagram accDescr: Step one. Point the instrumentation agent to the collector in host (agent) monitoring mode. Step two. Configure the collector in host (agent) monitoring mode. Step three. Configure the collector in data forwarding (gateway) mode. Step four. Send data to Splunk Observability Cloud. instrumentation["`**(1)** Instrumentation agent`"] --> collector["`**(2)** Collector in host (agent) monitoring mode`"] --> datacollector["`**(3)** Collector in data forwarding (gateway) mode`"] --> SOC["`**(4)** Splunk Observability Cloud`"]
  1. インストルメンテーションエージェントを、ホスト監視(エージェント)モードのコレクターのOTLP gRPCレシーバーに向けます。OTLP gRPCレシーバーは、ホスト監視(エージェント)モードのコレクターと同じホストおよびポートで動作している必要があります。

  2. 以下のコンポーネントを使用して、ホスト監視(エージェント)モードのコレクターを設定します:

    1. OTLP gRPCレシーバー

    2. データ転送(ゲートウェイ)モードのコレクターを指すOTLPエクスポーター

    3. レシーバーとエクスポーターを接続するログパイプライン。 例えば、ゲートウェイに送信するために必要な調整を加えたデフォルトのエージェント構成は、GitHubの Splunk Opentelemetry Collector を参照してください。

    service:
       pipelines:
          logs:
             receivers: [fluentforward, otlp]
             processors:
             - memory_limiter
             - batch
             - resourcedetection
             #- resource/add_environment
             #exporters: [splunk_hec, splunk_hec/profiling]
             # Use instead when sending to gateway
             exporters: [otlp]
    
  3. 以下のコンポーネントを使って、データ転送(ゲートウェイ)モードのコレクター (3) を設定します:
    1. OTLP gRPCレシーバー

    2. splunk_hecエクスポーター

    3. レシーバーとエクスポーターを接続するログパイプライン

このページは 2024年10月09日 に最終更新されました。