Python アプリケーションを Splunk Observability Cloud にインストルメンテーションする
Splunk OpenTelemetry Python エージェントは、Python アプリケーションやサービスを自動的にインストルメンテーションすることができます。次の手順に従って、操作を開始します。
OpenTelemetry Python の Splunk ディストリビューションの Python エージェントは、サポートされているライブラリに動的にパッチを適用することで、Python アプリケーションを自動的にインストルメンテーションすることができます。
開始するには、ガイド付きセットアップを使用するか、手動で指示に従ってください。
ガイド付きセットアップを使用してカスタマイズされた指示を生成する
環境とアプリケーションのための基本的なインストールコマンドをすべて生成するには、Python ガイド付きセットアップを使用してください。Python ガイド付きセットアップにアクセスするには、以下の手順に従ってください。
-
Splunk Observability Cloud にログインします。
-
Python ガイド付きセットアップを開きます。オプションで、ガイド付きセットアップに自分で移動することもできます:
-
ナビゲーションメニューで、Data Management を選択します。
-
Available integrations タブにアクセスするか、Deployed integrations タブで Add Integration を選択します。
-
インテグレーションフィルターメニューで、By Product を選択します。
-
APM 製品を選択します。
-
Pythonガイド付きセットアップを開くには、Python タイルを選択します。
-
Splunk Distribution of OpenTelemetry Python を手動でインストールする
ガイド付きセットアップを使用しない場合は、以下の手順に従って Splunk Distribution of OpenTelemetry Python を手動でインストールしてください。
Pythonエージェントのインストールと有効化
以下の手順に従って、Pythonエージェントを使用してアプリケーションを自動的にインストルメンテーションしてください:
-
要件を満たしているか確認してください。「Python エージェントの互換性と要件」を参照してください。
-
splunk-opentelemetryパッケージをインストールします:BASHpip install splunk-opentelemetryrequirements.txt または pyproject.toml ファイルを使用している場合は、
splunk-opentelemetry to it.を追加してください。 -
ブートストラップ・スクリプトを実行して、お使いの環境でサポートされているすべてのパッケージのインストルメンテーションをインストールします:
BASHopentelemetry-bootstrap -a installインストルメンテーション パッケージをインストールする代わりにコンソールに出力するには、
opentelemetry-bootstrap --action=requirementsを実行します。その後、出力を要件または Pipfile に追加できます。 -
OTEL_SERVICE_NAME環境変数を設定します:- Linux
-
SHELL
export OTEL_SERVICE_NAME=<yourServiceName> - Windows PowerShell
-
SHELL
$env:OTEL_SERVICE_NAME=<yourServiceName>
-
(オプション) 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>
-
(オプション)デプロイ環境とサービスバージョンを設定します:
- 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>'
-
Python サービスコマンドを編集して Splunk OTel Python エージェントをアクティブにします。
たとえば、以下のように Python アプリケーションを開く場合。
BASHpython3 main.py --port=8000コマンドの前に
opentelemetry-instrumentを付加します。BASHopentelemetry-instrument python3 main.py --port=8000注: uWSGI アプリケーションをインストルメンテーションするには、「Splunk Observability Cloud 用の Python アプリケーションを手動でインストルメンテーションする」を参照してください。 -
(オプション)Django フレームワークを使用している場合は、以下の追加手順を実行します。「Django アプリケーションのインストルメンテーション」を参照してください。
アプリケーションメトリクスはデフォルトで収集されます。詳しくは、「OpenTelemetry Python の Splunk ディストリビューションによって収集されたメトリクスと属性」を参照してください。
APM に何もデータが表示されない場合は、「Splunk Observability Cloud の Python インストルメンテーションのトラブルシューティング」を参照してください。
AlwaysOn Profilingの有効化
AlwaysOn Profiling を有効にするには、SPLUNK_PROFILER_ENABLED 環境変数を true に設定するか、アプリケーションコード内で start_profiling 関数を呼び出します。
次の例は、アプリケーションコードからプロファイラを起動する方法を示しています:
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 セクションにエージェント設定を追加して、環境変数を公開するようにデプロイを更新する方法を示しています:
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 統合を設定する」でレルムに関する注意事項を参照してください。
ソースホストの指定
エージェントが使用するホストを上書きするには、環境変数 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 にインストルメンテーションする」を参照してください。