SkyWalking を使用してアプリケーションのイベントトラッキングを行い、分散トレーシングデータをManaged Service for OpenTelemetryにレポートすると、Managed Service for OpenTelemetryがアプリケーションのモニタリングを開始します。その後、アプリケーションのトポロジー、トレース、失敗したトランザクション、低速トランザクション、SQL 分析など、さまざまなモニタリングデータを表示できます。このトピックでは、SkyWalking Python エージェントを使用して自動イベントトラッキングを有効にし、アプリケーションデータをレポートする方法について説明します。
前提条件
-
Apache SkyWalking の Python エージェントをダウンロード済みであること。最新バージョンの使用を推奨します。
-
Python プロジェクトに SkyWalking Python エージェントを追加しました。
-
背景情報
SkyWalking は、マイクロサービス、クラウドネイティブ、および Docker、Kubernetes、Mesos などのコンテナベースのアーキテクチャ向けの、人気のあるオープンソースのアプリケーションパフォーマンスモニタリング (APM) ツールです。その中核は分散トレーシングシステムです。
skywalking-python は、SkyWalking の公式 Python エージェントライブラリです。skywalking-python を統合して Python アプリケーションをモニターできます。Kafka、HTTP、AIOHTTP、Redis、WebSocket など、多くのサードパーティライブラリの自動イベントトラッキングをサポートしています。
サンプルアプリケーション
サンプルアプリケーションリポジトリ:SkyWalking Demo
このデモは、リクエストを転送し、MySQL データベースと対話する、Flask ベースのシンプルな例です。SkyWalking エージェントはアプリケーションをモニターし、データをレポートします。
Python アプリケーションの自動インストルメンテーションの有効化
SkyWalking Python エージェントのパラメーターは、Python プロジェクトファイル内、または環境変数として設定できます。
コードでのパラメーター設定
Python プロジェクトファイル内のconfig.init パラメーターを修正します。サンプルアプリケーションでは、対応するファイルは proxy/TestProxy.py と controller/TestController.py です。
from skywalking import config
config.init(ConfigurationName = ConfigurationValue)
環境変数としてのパラメーター設定
次の内容を環境変数ファイルに追加し、アプリケーションを再起動して変更を有効にします。
export SW_AGENT_ConfigurationName=ConfigurationValue
Docker コンテナ環境の場合、docker-compose.yaml ファイルの environment オプションで環境変数を設定できます。
-
エンドポイントとトークンを設定します。
-
Python ファイルに SkyWalking をインポートします。
from skywalking import agent, config -
エンドポイントと認証トークンを設定します。
<endpoint>と<auth-token>を、「前提条件」セクションで取得したエンドポイントと認証トークンで置き換えます。config.init(agent_collector_backend_services='<endpoint>', agent_authentication='<auth-token>')
-
-
アプリケーション識別子としてサービス名を設定します。
config.init(agent_name='<service name>') -
データレポートプロトコルを設定します。サポートされているプロトコルは gRPC のみです。
### 利用可能なレポートプロトコルは 'grpc' のみです。 config.init(agent_protocol='<protocol>') -
必要に応じて他のオプションパラメーターを設定します。詳細については、Apache SkyWalking 公式ドキュメントをご参照ください。
-
アプリケーションを再起動します。
よくある質問
-
gRPC を介してデータをレポートする際に
Method not found: skywalking.v3.LogReportService/collectエラーが発生した場合はどうすればよいですか?grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: status = StatusCode.UNIMPLEMENTED details = "Method not found: skywalking.v3.LogReportService/collect" debug_error_string = "UNKNOWN:Error received from peer {grpc_message:"Method not found: skywalking.v3.LogReportService/collect", grpc_status:12, created_time:"2023-07-05T15:58:00"}" >config.init呼び出しでagent_log_reporter_activeをFalseに設定します。config.init(agent_log_reporter_active=False) -
gRPC を介してデータをレポートする際に
Method not found: skywalking.v3.MeterReportService/collectエラーが発生した場合はどうすればよいですか?grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: status = StatusCode.UNIMPLEMENTED details = "Method not found: skywalking.v3.MeterReportService/collect" debug_error_string = "UNKNOWN:Error received from peer {grpc_message:"Method not found: skywalking.v3.MeterReportService/collect", grpc_status:12, created_time:"2023-07-05T16:00:00+08:00"}" >コンソールは
metricデータのレポートをサポートしていません。config.init呼び出しで、agent_meter_reporter_activeをFalseに設定します。config.init(agent_meter_reporter_active=False)

