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

Application Real-Time Monitoring Service:SkyWalking を使用した Python アプリケーションのデータレポート

最終更新日:Mar 12, 2026

分散環境で Python マイクロサービスを実行する場合、リクエストがサービス境界を越えて流れる際のエンドツーエンド可視性が必要です。SkyWalking Python エージェントは、Django、Flask、Redis、Kafka、MySQL を含む 30 以上のライブラリを自動的にインストルメント化するため、コード変更を最小限に抑えながら、トレースデータを OpenTelemetry 向けマネージドサービスにレポートできます。

本トピックでは、エージェントのインストール、エンドポイントの取得、およびトレースレポートのためのエージェント構成手順について説明します。

背景情報

Apache SkyWalking は、マイクロサービス、クラウドネイティブアーキテクチャ、Docker、Kubernetes、Mesos などのコンテナ環境向けに設計されたアプリケーションパフォーマンスモニタリング(APM)および分散トレーシングシステムです。SkyWalking-Python は、SkyWalking の公式 Python エージェントリポジトリです。Kafka、AIOHTTP、Redis、WebSocket などのサードパーティライブラリを自動的にインストルメント化するために利用できます。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • Python 3.7 以降がインストール済みであること

  • トレーシングを追加する Python プロジェクトが存在すること

  • パッケージをインストールするための pip が利用可能であること

SkyWalking Python エージェントをインストールします。

pip install apache-skywalking

SkyWalking エンドポイントの取得

エージェントを OpenTelemetry 向けマネージドサービスに接続するには、コンソールからエンドポイントと認証トークンを取得します。

  1. OpenTelemetry 向けマネージドサービスコンソールにログインします。

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

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

  4. クライアント パラメーターを SkyWalking に設定します。

  5. 関連情報 列から、エンドポイントとトークンをコピーします。

SkyWalking endpoint information
説明

ご利用のアプリケーションが Alibaba Cloud の本番環境で実行される場合は、VPC エンドポイントをご利用ください。それ以外の場合は、パブリックエンドポイントをご利用ください。

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

SkyWalking Python エージェントは、コード内構成および環境変数による構成の 2 種類の方法をサポートしています。デプロイメントに最も適した方法をお選びください。

オプション 1:コード内での構成

SkyWalking モジュールをインポートし、エージェント起動前に、エンドポイント、トークン、およびサービス名を指定して config.init() を呼び出します。

from skywalking import agent, config

config.init()
agent.start()

以下のプレースホルダーを実際の値に置き換えてください。

プレースホルダー説明
<endpoint>コンソールから取得した SkyWalking エンドポイント<your-endpoint>
<auth-token>コンソールから取得した認証トークンxxxxxxxxxxxx
<your-service-name>トレース内でアプリケーションを識別するための名前my-python-app

オプション 2:環境変数による構成

以下の環境変数を設定し、コード内で引数を渡さずにエージェントを起動します。

export SW_AGENT_COLLECTOR_BACKEND_SERVICES=<endpoint>
export SW_AGENT_AUTHENTICATION=<auth-token>
export SW_AGENT_NAME=<your-service-name>
export SW_AGENT_PROTOCOL=grpc
export SW_AGENT_LOG_REPORTER_ACTIVE=false
export SW_AGENT_METER_REPORTER_ACTIVE=false

その後、Python コード内でエージェントを起動します。

from skywalking import agent, config

config.init()
agent.start()

Docker コンテナーを利用する場合は、environment セクションに環境変数を追加します(docker-compose.yaml ファイル)。

services:
  my-app:
    image: my-python-app
    environment:
      SW_AGENT_COLLECTOR_BACKEND_SERVICES: "<endpoint>"
      SW_AGENT_AUTHENTICATION: "<auth-token>"
      SW_AGENT_NAME: "my-python-app"
      SW_AGENT_PROTOCOL: "grpc"
      SW_AGENT_LOG_REPORTER_ACTIVE: "false"
      SW_AGENT_METER_REPORTER_ACTIVE: "false"

エージェントの構成が完了したら、アプリケーションを再起動してトレースデータのレポートを開始します。

構成リファレンス

オプションのパラメーターの詳細については、「Apache SkyWalking Python 構成リファレンス」をご参照ください。

サポート対象ライブラリ

SkyWalking-Python は、以下のライブラリを自動的にインストルメント化します。エージェントが実行中であれば、追加のコード変更は不要です。

ライブラリPython バージョン - ライブラリバージョンプラグイン
aiohttp3.7+ - 3.7.*sw_aiohttp
aioredis3.7+ - 2.0.*sw_aioredis
aiormq3.7+ - 6.3, 6.4sw_aiormq
amqp3.7+ - 2.6.1sw_amqp
asyncpg3.7+ - 0.25.0sw_asyncpg
bottle3.7+ - 0.12.23sw_bottle
celery3.7+ - 5.1sw_celery
confluent_kafka3.7+ - 1.5.0, 1.7.0, 1.8.2sw_confluent_kafka
django3.7+ - 3.2sw_django
elasticsearch3.7+ - 7.13, 7.14, 7.15sw_elasticsearch
falcon3.7+ - 2.4.1, 2.5, 2.6; 3.10+ - 2.5, 2.6; 3.11+ - 非対応sw_falcon
fastapi3.7+ - 0.88.*, 0.89.*sw_fastapi
flask3.7+ - 2.0sw_flask
happybase3.7+ - 1.2.0sw_happybase
http.server3.7+ - *sw_http_server
werkzeug3.7+ - 1.0.1, 2.0sw_http_server
httpx3.7+ - 0.22.*, 0.23.*sw_httpx
kafka-python3.7+ - 2.0sw_kafka
loguru3.7+ - 0.6.0, 0.7.0sw_loguru
mysqlclient3.7+ - 2.1.*sw_mysqlclient
neo4j3.7+ - 5.*sw_neo4j
psycopg\[バイナリ\]3.7+ - 3.0.18, 3.1.*; 3.11+ - 3.1.*sw_psycopg
psycopg2-binary3.7+ - 2.9; 3.10+ - 非対応sw_psycopg2
pymongo3.7+ - 3.11.*sw_pymongo
pymysql3.7+ - 1.0sw_pymysql
pyramid3.7+ - 1.10, 2.0sw_pyramid
pika3.7+ - 1.2sw_rabbitmq
redis3.7+ - 3.5.*, 4.5.1sw_redis
requests3.7+ - 2.25, 2.26sw_requests
sanic3.7+ - 20.12; 3.10+ - 非対応sw_sanic
tornado3.7+ - 6.0, 6.1sw_tornado
urllib33.7+ - 1.25, 1.26sw_urllib3
urllib.request3.7+ - *sw_urllib_request
websockets3.7+ - 10.3, 10.4sw_websockets

サンプルコード

完全な動作例については、「skywalking-demo」リポジトリ(GitHub)をご参照ください。

このデモアプリケーションでは、Flask を使用して HTTP リクエストを処理し、サービス間でルーティングするとともに、途中で MySQL データベース操作を行います。エージェントがデータをレポートした後、OpenTelemetry 向けマネージドサービスコンソールで、プロセス間のトレースおよび MySQL 呼び出しのモニタリングデータを確認できます。

よくある質問

Method not found: skywalking.v3.LogReportService/collect

OpenTelemetry 向けマネージドサービスは、SkyWalking のログ収集をサポートしていません。ログレポーターを無効化してください。

config.init(agent_log_reporter_active=False)

または、環境変数を設定してください。

export SW_AGENT_LOG_REPORTER_ACTIVE=false

Method not found: skywalking.v3.MeterReportService/collect(gRPC によるレポート時)

バックエンドは、SkyWalking のメトリック収集をサポートしていません。メーターレポーターを無効化してください。

config.init(agent_meter_reporter_active=False)

または、環境変数を設定してください。

export SW_AGENT_METER_REPORTER_ACTIVE=false
説明

本トピックの構成例では、両方のパラメーターがすでに False に設定されています。例に従って構成した場合、これらのエラーは発生しません。

参考文献