Pythonアプリケーションインストルメンテーション
最終更新日: 09 年 2024 月 XNUMX 日OpenTelemetryを利用したPythonアプリケーションのインストルメンテーションには、次のメソッドを使用できます。
- (推奨) 自動計装-このオプションは開始するための最速の方法ですが、トレースデータの出力方法をあまり制御できません。 LogicMonitorは、Pythonアプリケーションの自動インストルメンテーション用のウィザードを提供します。
または、LogicMonitorポータルの外部でPythonアプリケーションを自動的にインストルメント化することもできます。 これには、使用中のサポートされているアプリケーションに固有のライブラリをダウンロードし、OTLPエクスポーターを構成して、インストルメント化されたPythonアプリケーションを実行する必要があります。 操作名は自動的に設定されます。 詳細については、を参照してください。 サポートされているアプリケーション OpenTelemetryから。
ご使用の環境でKubernetesを使用してPythonアプリケーションを実行している場合は、Kubernetesインフラストラクチャ内でアプリケーションを自動的にインストルメント化できます。 これには、コマンドラインインターフェイス(CLI)を使用してDockerイメージを拡張することが含まれます。 - 手動計装-これは、自動インストルメンテーションでサポートされていないライブラリとフレームワークを使用するアプリケーションの唯一のオプションです。 手動インストルメンテーションでは、OpenTelemetrySDKを使用してトレースデータをキャプチャして出力するコードをアプリケーションに記述します。
環境によっては、自動計装と手動計装の両方の組み合わせが必要になる場合があります。
LogicMonitorを使用してPythonアプリケーションをインストルメント化するための要件
Pythonアプリケーションをインストルメント化するには、トレースデータをLogicMonitorポータルに転送するようにOpenTelemetryCollectorをインストールして構成する必要があります。 詳細については、を参照してください。 OpenTelemetryコレクターのインストール.
LogicMonitorのインストルメンテーションウィザードを使用してPythonアプリケーションを自動的にインストルメント化する
ご注意: LogicMonitorポータルの外部でPythonアプリケーションを自動的にインストルメント化するには、OpenTelemetryのを参照してください。 自動計装 のドキュメントで詳しく説明されています)。
- MFAデバイスに移動する 形跡 > 新人研修 をクリックして アプリケーションをインストルメント化する.
- クリック 選択 Pythonの場合は、 自動(推奨).
- プロンプトが表示されたら、アプリケーションが使用するPythonライブラリを指定します(たとえば、
requests of grpc
)、およびLogicMonitorはpip install
各ライブラリのコマンド。
重要: OpenTelemetryインストルメンテーションに汎用的なXNUMXつのクライアントライブラリと、指定したアプリケーションライブラリごとにXNUMXつのインストルメンテーションクライアントライブラリをインストールします。
- ウィザードの「トレーサーの初期化」ステップで、提供されているものを使用します
tracer.py
Pythonアプリケーションに固有の値をカスタマイズするスクリプト。
ご注意: この tracer.py
スクリプトは「サーバー」と呼ばれるサンプルアプリ用です。
- プロンプトが表示されたら、次の情報を入力します。
- (推奨)サービス名前空間
これは、サービスのグループ化を表すために使用されます。 指定すると、自動作成された各サービスにプロパティとして追加され、名前空間を表す親サービスが作成されます。 これは、複数の基盤となるサービスを使用してアプリケーションを整理する場合に役立ちます。 - (必須)サービス名
これは、LogicMonitorポータルのサービスの表示名としても使用されます。 スペースを含む特殊文字は使用できません。 - (推奨)カスタムタグ
これらは、このサービスのすべての操作に関連付けられています。 たとえば、サービスのビジネスまたは技術的な優先順位を表すタグを追加できます。
- (推奨)サービス名前空間
ご注意: LogicMonitorでは、トレースを既存の監視対象リソースにマッピングするために、ip、resource.type(kubernetes-pod、cloud、またはhostに設定する必要があります)およびhost.name(Kubernetesのポッド名である必要があります)のカスタムタグが必要です。 可能な場合はこれらのカスタムタグを使用して、トレースがログ、メトリック、およびアラートのコンテキストで表示されるようにします。
- 提供した情報に基づいて生成されたコマンドをコピーし、アプリケーションが実行されているサーバーで実行します。
LogicMonitorポータルの外部でPythonアプリケーションを自動的にインストルメント化する方法の詳細については、OpenTelemetryのを参照してください。 自動計装 のドキュメントで詳しく説明されています)。
KubernetesでPythonアプリケーションを自動的にインストルメント化する
- Dockerイメージを拡張して、インストルメンテーション手順を組み込みます。 たとえば、Dockerfileに次を追加できます。
#add OpenTelemetry instrumentation packages and set env vars (alternatively can be done in Kube YAML)
RUN pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc opentelemetry-instrumentation-grpc
ENV LMOTEL_ENDPOINT="http://10.74.13.181:4317"
ENV OTEL_RESOURCE_ATTRIBUTES=service.name=recommendationServiceProd,resource.type=kubernetes-pod,ip=$POD_IP,host.name=$POD_NAME
- ENTRYPOINTを変更して、インストルメンテーションを使用してアプリケーションを開始します。
ENTRYPOINT ["opentelemetry-instrument", "python", "tracer.py"]
Pythonアプリケーションを手動でインストルメント化する
アプリケーションがOpenTelemetry自動インストルメンテーションでサポートされていない場合、または自動インストルメンテーションによるトレースの生成方法をカスタマイズする場合は、Pythonアプリケーションを手動でインストルメントできます。 たとえば、操作の命名方法をカスタマイズしたい場合があります。 詳細については、を参照してください。 サポートされているアプリケーション OpenTelemetryの場合。
PythonアプリケーションであるOpenTelemetrySDKを手動でインストルメント化し、トレースを作成して強化する方法の詳細については、OpenTelemetryのを参照してください。 手動計装 のドキュメントで詳しく説明されています)。