すべてのプロダクト
Search
ドキュメントセンター

Managed Service for OpenTelemetry:SkyWalking を使用して Python アプリケーションデータをレポートする

最終更新日:Dec 30, 2024

アプリケーションのトレースデータを表示するには、クライアントを使用してトレースデータを Managed Service for OpenTelemetry にレポートする必要があります。このトピックでは、SkyWalking SDK for Python を使用して Python アプリケーションデータをレポートする方法について説明します。

前提条件

  • Apache SkyWalking の Python エージェントがダウンロードされていること。最新バージョンの Python エージェントをダウンロードすることをお勧めします。

  • Python プロジェクトで SkyWalking-Python が参照されていること。

前提条件

SkyWalking のエンドポイントを取得するには、次の手順を実行します。

  1. Managed Service for OpenTelemetry コンソール にログインします。

  2. 左側のナビゲーションペインで、クラスタ設定をクリックします。表示されるページで、アクセスポイント情報タブをクリックします。

  3. 上部のナビゲーションバーで、リージョンを選択します。クラスタ情報セクションで、トークンを表示をオンにします。

  4. Client パラメーターを SkyWalking に設定します。

    下の表の関連情報列にあるSkyWalkingのエンドポイントを取得します。

    SkyWalking接入点信息

    説明

    アプリケーションがAlibaba Cloudの本番環境にデプロイされている場合は、VPCエンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。

背景情報

SkyWalking は、中国で開発された一般的なアプリケーションパフォーマンス監視(APM)サービスです。SkyWalking は、マイクロサービス、クラウドネイティブアーキテクチャ、および Docker、Kubernetes、Mesos などのコンテナ向けに設計されています。SkyWalking は分散トレーシングシステムでもあります。

SkyWalking-Python は、SkyWalking の公式 Python エージェントリポジトリです。SkyWalking-Python を使用して、Python アプリケーションを監視できます。SkyWalking-Python を使用すると、Kafka、AIOHTTP、Redis、WebSockets などのサードパーティリポジトリを自動的にインストゥルメントできます。

次の表に、SkyWalking-Python を使用して監視できるサードパーティリポジトリを示します。

リポジトリ

Python バージョン - リポジトリバージョン

プラグイン

aiohttp

3.7 以降 - 3.7.*

sw_aiohttp

aioredis

3.7 以降 - 2.0.*

sw_aioredis

aiormq

3.7 以降 - 6.3 および 6.4

sw_aiormq

amqp

3.7 以降 - 2.6.1

sw_amqp

asyncpg

3.7 以降 - 0.25.0

sw_asyncpg

bottle

3.7 以降 - 0.12.23

sw_bottle

celery

3.7 以降 - 5.1

sw_celery

confluent_kafka

3.7 以降 - 1.5.0、1.7.0、および 1.8.2

sw_confluent_kafka

django

3.7 以降 - 3.2

sw_django

elasticsearch

3.7 以降 - 7.13、7.14、および 7.15

sw_elasticsearch

hug

3.11 以降 - サポートされていません

3.10 以降 - 2.5 および 2.6

3.7 以降 - 2.4.1、2.5、および 2.6

sw_falcon

fastapi

3.7 以降 - 0.89.* および 0.88.*

sw_fastapi

flask

3.7 以降 - 2.0

sw_flask

happybase

3.7 以降 - 1.2.0

sw_happybase

http_server

3.7 以降 - *

sw_http_server

werkzeug

3.7 以降 - 1.0.1 および 2.0

sw_http_server

httpx

3.7 以降 - 0.23.* および 0.22.*

sw_httpx

kafka-python

3.7 以降 - 2.0

sw_kafka

loguru

3.7 以降 - 0.6.0 および 0.7.0

sw_loguru

mysqlclient

3.7 以降 - 2.1.*

sw_mysqlclient

neo4j

3.7 以降 - 5.*

sw_neo4j

psycopg[binary]

3.11 以降 - 3.1.*

3.7 以降 - 3.0.18 および 3.1.*

sw_psycopg

psycopg2-binary

3.10 以降 - サポートされていません

3.7 以降 - 2.9

sw_psycopg2

pymongo

3.7 以降 - 3.11.*

sw_pymongo

pymysql

3.7 以降 - 1.0

sw_pymysql

pyramid

3.7 以降 - 1.10 および 2.0

sw_pyramid

pika

3.7 以降 - 1.2

sw_rabbitmq

redis

3.7 以降 - 3.5.* および 4.5.1

sw_redis

requests

3.7 以降 - 2.26 および 2.25

sw_requests

sanic

3.10 以降 - サポートされていません

3.7 以降 - 20.12

sw_sanic

tornado

3.7 以降 - 6.0 および 6.1

sw_tornado

urllib3

3.7 以降 - 1.26 および 1.25

sw_urllib3

urllib_request

3.7 以降 - *

sw_urllib_request

websockets

3.7 以降 - 10.3 および 10.4

sw_websockets

サンプルコード

サンプルコードリポジトリの詳細については、GitHub のskywalking demo を参照してください。

サンプルコードは、Flask フレームワークに基づいて HTTP リクエストの単純なルーティングと転送を実装し、リクエストに基づいて MySQL データベースに対する操作を実行します。データが Managed Service for OpenTelemetry にレポートされると、クロスプロセストレースと MySQL データベース呼び出しの監視データを表示できます。

SkyWalking を使用して Python アプリケーションを自動的にインストゥルメントする

SkyWalking Python エージェントのパラメータは、Python プロジェクトで直接、または環境変数を定義することで設定できます。

Python プロジェクトで SkyWalking Python エージェントのパラメータを設定する

Python プロジェクトファイルの config.init パラメータを変更します。このサンプルコードでは、proxy/TestProxy.py ファイルと controller/TestController.py ファイルが使用されます。

from skywalking import config
config.init(ConfigurationName = ConfigurationValue) # 設定名 = 設定値

環境変数を定義して SkyWalking Python エージェントのパラメータを設定する

環境変数ファイルに次のコンテンツを追加し、ファイルを更新して変更を反映させます。

export SW_AGENT_ConfigurationName=ConfigurationValue # 環境変数名=設定値
説明

Docker コンテナの場合、docker-compose.yaml ファイルの environment ディレクトリで環境変数を設定できます。

  1. エンドポイントとトークンを設定します。

    1. Python ファイルで SkyWalking Python エージェントを設定します。

      from skywalking import agent, config
    2. エンドポイントとトークンを設定します。

      <endpoint> および <auth-token> を、前提条件で取得したエンドポイントと認証トークンに置き換えます。

      config.init(agent_collector_backend_services='<endpoint>', # エンドポイント
                  agent_authentication='<auth-token>') # 認証トークン
  2. アプリケーション識別子としてサービス名を設定します。

    config.init(agent_name='<service name>') # サービス名
  3. データのレポートに使用するプロトコルを指定します。SkyWalking は gRPC をサポートしています。

    ### gRPC をプロトコルとして指定します。
    config.init(agent_protocol='<protocol>') # プロトコル
  4. ビジネス要件に基づいてオプションのパラメータを設定します。パラメータの詳細については、Apache SkyWalking のドキュメントを参照してください。

  5. アプリケーションを再起動します。

FAQ

  • Method not found: skywalking.v3.LogReportService/collect というメッセージが表示された場合はどうすればよいですか?image.png

    config.init にネストされている agent_log_reporter_active パラメータを False に設定します。

    config.init(agent_log_reporter_active=False) # ログレポート機能を無効化
  • gRPC 経由でデータをレポートするときに Method not found: skywalking.v3.MeterReportService/collect というメッセージが表示された場合はどうすればよいですか?image.png metrics をコンソールにレポートすることはできません。config.init にネストされている agent_meter_reporter_active パラメータを False に設定できます。

    config.init(agent_meter_reporter_active=False) # メトリクスレポート機能を無効化

参考資料

Apache SkyWalking の公式 Web サイト