サポートセンターホーム


Pythonアプリケーションのインストルメント

PythonアプリケーションのOpenTelemetryで促進されるインストルメンテーションにアプローチする方法はXNUMXつあります。

  1. (推奨)自動計測は開始するための最速の方法ですが、トレースデータの出力方法を制御することはできません。 自動計装を使用すると、に固有のいくつかのパッケージをダウンロードします 使用中のサポートされているアプリケーション、OTLPエクスポーターを構成し、インストルメント化されたPythonアプリケーションを実行します。 操作名は自動的に設定されます。
  2. 手動インストルメンテーションは、自動インストルメンテーションでサポートされていないライブラリとフレームワークを使用するアプリケーションの唯一のオプションです。 手動インストルメンテーションを使用すると、OpenTelemetrySDKを使用してトレースデータをキャプチャして出力するコードをアプリケーションに記述します。

最終的には、手動と自動の両方の計装の組み合わせが必要になる場合があります。

必須条件

自動計装

LogicMonitorは、Pythonアプリケーションの自動インストルメンテーション用の構成ウィザードを提供します。

1.右上に 形跡 ページ、選択 ご意見をお寄せください.

2。 選択 Python 、自動計装を確認します。

ウィザードは、アプリケーションが使用するPythonライブラリを指定するように求めます。 requests of grpc、その後、UIは各ライブラリにpipinstallコマンドを提供します。

3.(必須)OpenTelemetryインストルメンテーションに汎用的なXNUMXつのクライアントライブラリと、指定したアプリケーションライブラリごとにXNUMXつのインストルメンテーションクライアントライブラリをインストールします。

4.インストルメンテーションに必要なライブラリをインストールすると、スクリプトが表示されます tracer.py 次の画面で

このスクリプトは、「サーバー」と呼ばれるアプリのトレーサーを初期化する方法を示しています。 このスクリプトを直接使用して、Pythonアプリケーションに固有の値でカスタマイズできます。

5.次に、ウィザードは次の情報の入力を求めます。

  • (必須) サービス名 あなたは計装しています。 この名前は、LogicMonitorポータルのサービスの表示名としても使用されます。 スペースなどの特殊文字は使用できません。
  • (推奨) カスタムタグ これは、このサービスのすべての操作に関連付けられます。 たとえば、サービスのビジネスまたは技術的な優先順位を表すタグを追加したい場合があります。 見る 注意.
  • (オプション) サービス名前空間、サービスのグループ化を表すために使用できます。 指定すると、自動作成された各サービスにプロパティとして追加され、名前空間を表す親サービスが作成されます。 これは、基盤となる複数のサービスを使用してアプリケーションを整理する場合に役立ちます。

注意: LogicMonitorでは、トレースを既存の監視対象リソースにマップするために、次のカスタムタグが必要です。 ip, resource.type (kubernetes-pod、cloud、またはhostに設定する必要があります)、および host.name (これはKubernetesのポッド名である必要があります)。 可能な場合はこれらのカスタムタグを使用して、ログ、メトリック、およびアラートのコンテキストでトレースを表示できるようにすることをお勧めします。

6. XNUMXつのフィールドに入力した内容に基づいて、 opentelemetry-instrument でアプリケーションをインストルメント化するためのコマンド tracer.py 生成されます。 このコマンドをコピーして、アプリケーションが実行されているサーバーで実行し、アプリケーションを起動します。

Kubernetesの構成

(推奨)アプリケーションをKubernetesでインストルメント化する場合は、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:55680" 
ENV OTEL_RESOURCE_ATTRIBUTES=service.name=recommendationServiceProd,resource.type=kubernetes-pod,ip=$POD_IP,host.name=$POD_NAME

エントリポイントを変更して、インストルメンテーションを使用してアプリケーションを開始します。

ENTRYPOINT ["opentelemetry-instrument", "python", "tracer.py"]

手動計装

(1)次のようなアプリケーションを使用している場合は、Pythonアプリケーションの一部またはすべてを手動でインストルメント化する必要があります。 OpenTelemetry自動計測ではサポートされていません; または(2)自動計測によるトレースの生成方法(操作の命名方法など)をカスタマイズする場合。 

Python アプリケーションを手動でインストルメント化するための最良の指示ソースは、 OpenTelemetryの公式ドキュメント。 このドキュメントでは、OpenTelemetry SDKとトレーサーのインスタンス化、トレースの作成、およびそれらの強化について説明します。

記事上で