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

Splunk OpenTelemetry Python エージェントは、Python アプリケーションやサービスを自動的にインストルメンテーションすることができます。次の手順に従って、操作を開始します。

注: 元の OpenTelemetry ドキュメントに変更があったため、「自動インストルメンテーション」は「ゼロコード インストルメンテーション」に変更されました。詳細については、「Splunk Observability Cloud のインストルメンテーションの方法」を参照してください。

OpenTelemetry Python の Splunk ディストリビューションの Python エージェントは、サポートされているライブラリに動的にパッチを適用することで、Python アプリケーションを自動的にインストルメンテーションすることができます。

開始するには、ガイド付きセットアップを使用するか、手動で指示に従ってください。

ガイド付きセットアップを使用してカスタマイズされた指示を生成する

環境とアプリケーションのための基本的なインストールコマンドをすべて生成するには、Python ガイド付きセットアップを使用してください。Python ガイド付きセットアップにアクセスするには、以下の手順に従ってください。

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

  2. Python ガイド付きセットアップを開きます。オプションで、ガイド付きセットアップに自分で移動することもできます:

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

    2. Available integrations タブにアクセスするか、Deployed integrations タブで Add Integration を選択します。

    3. インテグレーションフィルターメニューで、By Product を選択します。

    4. APM 製品を選択します。

    5. Pythonガイド付きセットアップを開くには、Python タイルを選択します。

Splunk Distribution of OpenTelemetry Python を手動でインストールする

ガイド付きセットアップを使用しない場合は、以下の手順に従って Splunk Distribution of OpenTelemetry Python を手動でインストールしてください。

Pythonエージェントのインストールと有効化

以下の手順に従って、Pythonエージェントを使用してアプリケーションを自動的にインストルメンテーションしてください:

  1. 要件を満たしているか確認してください。「Python エージェントの互換性と要件」を参照してください。

  2. splunk-opentelemetry パッケージをインストールします:

    BASH
    pip install splunk-opentelemetry

    requirements.txt または pyproject.toml ファイルを使用している場合は、splunk-opentelemetry to it. を追加してください。

  3. ブートストラップ・スクリプトを実行して、お使いの環境でサポートされているすべてのパッケージのインストルメンテーションをインストールします:

    BASH
    opentelemetry-bootstrap -a install

    インストルメンテーション パッケージをインストールする代わりにコンソールに出力するには、opentelemetry-bootstrap --action=requirements を実行します。その後、出力を要件または Pipfile に追加できます。

  4. OTEL_SERVICE_NAME 環境変数を設定します:

    Linux
    SHELL
    export OTEL_SERVICE_NAME=<yourServiceName>
    Windows PowerShell
    SHELL
    $env:OTEL_SERVICE_NAME=<yourServiceName>
  5. (オプション) Splunk Distribution of OpenTelemetry Collectorが別のホストで実行されている場合は、エンドポイント URL を設定します:

    Linux
    SHELL
    export OTEL_EXPORTER_OTLP_ENDPOINT=<yourCollectorEndpoint>:<yourCollectorPort>
    Windows PowerShell
    SHELL
    $env:OTEL_EXPORTER_OTLP_ENDPOINT=<yourCollectorEndpoint>:<yourCollectorPort>
  6. (オプション)デプロイ環境とサービスバージョンを設定します:

    Linux
    BASH
    export OTEL_RESOURCE_ATTRIBUTES='deployment.environment=<envtype>,service.version=<version>'
    Windows PowerShell
    SHELL
    $env:OTEL_RESOURCE_ATTRIBUTES='deployment.environment=<envtype>,service.version=<version>'
  7. Python サービスコマンドを編集して Splunk OTel Python エージェントをアクティブにします。

    たとえば、以下のように Python アプリケーションを開く場合。

    BASH
    python3 main.py --port=8000

    コマンドの前に opentelemetry-instrument を付加します。

    BASH
    opentelemetry-instrument python3 main.py --port=8000
    注: uWSGI アプリケーションをインストルメンテーションするには、「Splunk Observability Cloud 用の Python アプリケーションを手動でインストルメンテーションする」を参照してください。
  8. (オプション)Django フレームワークを使用している場合は、以下の追加手順を実行します。「Django アプリケーションのインストルメンテーション」を参照してください。

アプリケーションメトリクスはデフォルトで収集されます。詳しくは、「OpenTelemetry Python の Splunk ディストリビューションによって収集されたメトリクスと属性」を参照してください。

APM に何もデータが表示されない場合は、「Splunk Observability Cloud の Python インストルメンテーションのトラブルシューティング」を参照してください。

AlwaysOn Profilingの有効化

注: Python 用の AlwaysOn Profiling はベータ開発されています。この機能は、保証、メンテナンスおよびサポート、またはサービスレベルのコミットメントなしで、Splunk がユーザーに「現状」で提供するものです。この機能を活用する場合は、「Splunk General Terms」が適用されます。

AlwaysOn Profiling を有効にするには、SPLUNK_PROFILER_ENABLED 環境変数を true に設定するか、アプリケーションコード内で start_profiling 関数を呼び出します。

次の例は、アプリケーションコードからプロファイラを起動する方法を示しています:

PYTHON
from splunk_otel.profile import start_profiling

# Activates CPU profiling
start_profiling()

詳細については、「Splunk APMのAlwaysOn Profiling にデータを取り込む」を参照してください。追加の設定については、「AlwaysOn プロファイリングの Python 設定」を参照してください。

Pythonエージェントの設定

ほとんどの場合、入力する必要がある設定はサービス名だけです。また、デプロイ環境、サービスバージョン、エンドポイントなど、その他の基本設定も定義できます。

トレース伝播フォーマットの変更、トレースとログの相関、サーバートレースデータの設定など、 Python エージェントの高度な設定については、「Configure the Python agent for Splunk Observability Cloud」を参照してください。

KubernetesにPythonエージェントをデプロイする

KubernetesにPythonエージェントをデプロイするには、Kubernetesのリソースに環境変数を公開するようにKubernetes Downward APIを設定します。

次の例は、.spec.template.spec.containers.env セクションにエージェント設定を追加して、環境変数を公開するようにデプロイを更新する方法を示しています:

YAML
apiVersion: apps/v1
kind: Deployment
spec:
  selector:
    matchLabels:
      app: your-application
  template:
    spec:
      containers:
        - name: myapp
          env:
            - name: SPLUNK_OTEL_AGENT
              valueFrom:
                fieldRef:
                  fieldPath: status.hostIP
            - name: OTEL_EXPORTER_OTLP_ENDPOINT
              value: "http://$(SPLUNK_OTEL_AGENT):4317"
            - name: OTEL_SERVICE_NAME
              value: "<serviceName>"
            - name: OTEL_RESOURCE_ATTRIBUTES
              value: "deployment.environment=<environmentName>"

Splunk Observability Cloud に直接データを送信する

デフォルトでは、エージェントはすべてのテレメトリを Splunk Distribution of OpenTelemetry Collector のローカルインスタンスに送信します。

Splunk Observability Cloud に直接データを送信するには、以下の環境変数を設定します:

Linux
BASH
export SPLUNK_ACCESS_TOKEN=<access_token>
export SPLUNK_REALM=<realm>
Windows PowerShell
SHELL
$env:SPLUNK_ACCESS_TOKEN=<access_token>
$env:SPLUNK_REALM=<realm>

アクセストークンを取得するには、「Splunk Observability Cloud を使用したユーザー API アクセストークンの取得と管理」を参照してください。

Splunk のレルムを見つけるには、「 Splunk Observability Cloud の SSO 統合を設定する」でレルムに関する注意事項を参照してください。

注: 取り込み API エンドポイントの詳細については、「トレースを APM に送信する」を参照してください。

ソースホストの指定

エージェントが使用するホストを上書きするには、環境変数 OTEL_RESOURCE_ATTRIBUTES を使用して、ホストの名前を希望するソースに設定します。

Windows PowerShell
SHELL
$env:OTEL_RESOURCE_ATTRIBUTES=host.name=<host_name>
Linux
BASH
export OTEL_RESOURCE_ATTRIBUTES=host.name=<host_name>

Lambda 関数のインストルメンテーション

Splunk OpenTelemetry Lambda Layer を使用して AWS Lambda 関数をインストルメンテーションできます。詳細については、「AWS Lambda 関数を Splunk Observability Cloud にインストルメンテーションする」を参照してください。