Python アプリケーションを Splunk Observability Cloud にインストルメンテーションする 🔗
注釈
Due to changes in the upstream OpenTelemetry documentation, 「automatic instrumentation」 has been changed to 「zero-code instrumentation」. For more information, see Instrumentation methods for Splunk Observability Cloud.
OpenTelemetry Python の Splunk ディストリビューションの Python エージェントは、サポートされているライブラリに動的にパッチを適用することで、Python アプリケーションを自動的にインストルメンテーションすることができます。
開始するには、ガイド付きセットアップを使用するか、手動で指示に従ってください。
ガイド付きセットアップを使用してカスタマイズされた指示を生成する 🔗
環境とアプリケーションのための基本的なインストールコマンドをすべて生成するには、Pythonガイド付きセットアップを使用してください。Pythonガイド付きセットアップにアクセスするには、以下の手順に従います:
Splunk Observability Cloud にログインします。
Python ガイド付きセットアップ を開いてください。オプションで、ガイド付きセットアップに自分で移動することもできます:
ナビゲーションメニューで、
を選択します。Go to the Available integrations tab, or select Add Integration in the Deployed integrations tab.
インテグレーションフィルターーメニューで、By Product を選択します。
APM 製品を選択します。
Pythonガイド付きセットアップを開くには、Python タイルを選択します。
Splunk Distribution of OpenTelemetry Python を手動でインストールする 🔗
ガイド付きセットアップを使用しない場合は、以下の手順に従って手動で Splunk Distribution of OpenTelemetry Python をインストールしてください:
Pythonエージェントのインストールと有効化 🔗
以下の手順に従って、Pythonエージェントを使用してアプリケーションを自動的にインストルメンテーションしてください:
条件を満たしているか確認してください。Pythonエージェントの互換性と要件 を参照してください。
splunk-opentelemetry[all]
パッケージをインストールします:pip install "splunk-opentelemetry[all]"
requirements.txtまたはpyproject.tomlファイルを使用している場合は、
splunk-opentelemetry[all]
を追加してください。ブートストラップ・スクリプトを実行して、お使いの環境でサポートされているすべてのパッケージのインストルメンテーションをインストールします:
splunk-py-trace-bootstrap
インストルメンテーション・パッケージをインストールする代わりにコンソールに出力するには、
splunk-py-trace-bootstrap --action=requirements
を実行します。そして、その出力をあなたのrequirementsやPipfileに追加することができます。環境変数
OTEL_SERVICE_NAME
を設定します:export OTEL_SERVICE_NAME=<yourServiceName>
$env:OTEL_SERVICE_NAME=<yourServiceName>
(オプション) Splunk Distribution of OpenTelemetry Collectorが別のホストで実行されている場合は、エンドポイント URL を設定します:
export OTEL_EXPORTER_OTLP_ENDPOINT=<yourCollectorEndpoint>:<yourCollectorPort>
$env:OTEL_EXPORTER_OTLP_ENDPOINT=<yourCollectorEndpoint>:<yourCollectorPort>
(オプション)デプロイ環境とサービスバージョンを設定します:
export OTEL_RESOURCE_ATTRIBUTES='deployment.environment=<envtype>,service.version=<version>'
$env:OTEL_RESOURCE_ATTRIBUTES='deployment.environment=<envtype>,service.version=<version>'
Python サービスコマンドを編集して Splunk OTel Python エージェントをアクティブにします。
例えば、以下のようにPythonアプリケーションを開く場合:
python3 main.py --port=8000
コマンドの前に
splunk-py-trace
を付加:splunk-py-trace python3 main.py --port=8000
注釈
uWSGIアプリケーションをインストルメンテーションするには、Splunk Observability Cloud 用の Python アプリケーションを手動でインストルメンテーションする を参照してください。
(オプション) Django フレームワークを使用している場合は、以下の追加手順を実行します:
アプリケーション・メトリクスはデフォルトで収集されます。詳細については、OpenTelemetry Python の Splunk ディストリビューションによって収集されたメトリクスと属性 を参照してください。
APM にデータが表示されない場合は、Splunk Observability Cloud の Python インストルメンテーションのトラブルシューティング を参照してください。
AlwaysOn Profilingの有効化 🔗
注釈
AlwaysOn Profiling for Python はベータ版です。この機能は、保証、メンテナンス、サポート、サービスレベルのコミットメントを伴わずに、Splunk によって「現状のまま」提供されます。本機能の使用には、Splunk 一般条項 が適用されます。
AlwaysOn Profiling を有効にするには、SPLUNK_PROFILER_ENABLED
環境変数を true
に設定するか、アプリケーションコード内で start_profiling
関数を呼び出します。
次の例は、アプリケーションコードからプロファイラを起動する方法を示しています:
from splunk_otel.profiling import start_profiling
# Activates CPU profiling
# All arguments are optional
start_profiling(
service_name='my-python-service',
resource_attributes={
'service.version': '3.1'
'deployment.environment': 'production',
}
endpoint='http://localhost:4317'
)
詳細は Splunk APMのAlwaysOn Profilingにデータを取り込む を参照してください。その他の設定については、AlwaysOn Profiling の Python 設定 を参照してください。
Pythonエージェントの設定 🔗
ほとんどの場合、入力が必要な設定項目はサービス名だけです。また、デプロイ環境、サービスバージョン、エンドポイントなど、その他の基本設定も定義できます。
トレース伝播フォーマットの変更、トレースとログの相関、サーバーのトレースデータの設定など、 Python エージェントの高度な設定については、Splunk Observability Cloud 用の Python エージェントを設定する を参照してください。
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 に直接データを送信するには、以下の環境変数を設定します:
export SPLUNK_ACCESS_TOKEN=<access_token>
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://ingest.<realm>.signalfx.com/v2/trace/otlp
$env:SPLUNK_ACCESS_TOKEN=<access_token>
$env:OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf
$env:OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://ingest.<realm>.signalfx.com/v2/trace/otlp
アクセストークンを取得するには、Splunk Observability Cloudを使用したユーザー APIアクセストークンの取得と管理 を参照してください。
Splunk レルムを見つけるには、レルムに関する注意事項 を参照してください。
注釈
取り込みAPIエンドポイントの詳細については、APMのトレースの送信 を参照してください。
ソースホストの指定 🔗
エージェントが使用するホストを上書きするには、環境変数 OTEL_RESOURCE_ATTRIBUTES
を使用して、ホストの名前を希望するソースに設定します:
$env:OTEL_RESOURCE_ATTRIBUTES=host.name=<host_name>
export OTEL_RESOURCE_ATTRIBUTES=host.name=<host_name>
Lambda 関数のインストルメンテーション 🔗
Splunk OpenTelemetry Lambda Layer を使用して AWS Lambda 関数をインストルメンテーションできます。詳細は AWS Lambda 関数を Splunk Observability Cloud にインストルメンテーションする を参照してください。