AWS X-Ray SDK for Python - AWS X-Ray

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS X-Ray SDK for Python

X-Ray SDK for Python は、X-Ray デーモンにトレースデータを生成して送信するためのクラスとメソッドを提供する Python ウェブアプリケーションのライブラリです。トレースデータには、アプリケーションによって処理される受信HTTPリクエストに関する情報と、、 AWS SDKHTTPクライアント、またはSQLデータベースコネクタを使用してアプリケーションがダウンストリームサービスに対して行う呼び出しが含まれます。セグメントを手動で作成し、注釈およびメタデータにデバッグ情報を追加することもできます。

SDK で をダウンロードできますpip

$ pip install aws-xray-sdk
注記

X-Ray SDK for Python はオープンソースプロジェクトです。プロジェクトに従い、 で問題やプルリクエストを送信できます GitHub。github.com/aws/aws-xray-sdk-python

Django または Flask を使用する場合は、まずSDKミドルウェアをアプリケーションに追加して受信リクエストをトレースします。ミドルウェアでは、トレース対象リクエストごとに「セグメント」を作成し、レスポンスが送信されるとセグメントを完了します。セグメントが開いている間は、SDKクライアントのメソッドを使用してセグメントに情報を追加し、サブセグメントを作成してダウンストリーム呼び出しをトレースできます。SDK また、 は、セグメントが開いている間にアプリケーションがスローした例外を自動的に記録します。他のアプリケーションの場合、手動でセグメントを作成することができます。

測定されたアプリケーションまたはサービスから呼び出された Lambda 関数に対して、Lambda は トレースヘッダー を読み込み、サンプリングされたリクエストを自動的にトレースします。その他の関数については、Lambda の設定 から受信リクエストのサンプリングとトレースを行うことができます。いずれの場合も、Lambda はセグメントを作成し、X-Ray に提供しますSDK。

注記

Lambda では、X-Ray SDKはオプションです。関数でこれを使用しない場合、サービスマップには Lambda サービスのノードと Lambda 関数ごとに 1 つのノードが含まれます。を追加することでSDK、関数コードを計測して、Lambda によって記録された関数セグメントにサブセグメントを追加できます。詳細については、「AWS Lambda および AWS X-Ray」を参照してください。

Lambda で実行されているサンプル Python 関数については、「ワーカー」を参照してください。

次に、X-Ray SDK for Python を使用して、アプリケーションのライブラリ にパッチを適用してダウンストリーム呼び出しを計測します。は、以下のライブラリSDKをサポートしています。

サポートされているライブラリ
  • botocoreboto3 – 計測 AWS SDK for Python (Boto) クライアント。

  • pynamodb – 測定された Amazon DynamoDB クライアントの PynamoDB のバージョン。

  • aiobotocoreaioboto3 — for Python クライアント用の の非同期統合バージョンを計測SDKします。

  • requestsaiohttp — 高レベルHTTPクライアントを計測します。

  • httplibhttp.client — 低レベルHTTPクライアントとそれを使用する高レベルライブラリを計測します。

  • sqlite3 – 実装SQLite クライアント。

  • mysql-connector-python – SQLクライアントを計測します。

  • pg8000 — Pure-Python PostgreSQL インターフェイスを計測します。

  • psycopg2 – PostgreSQL データベースアダプターを計測します。

  • pymongo - MongoDB クライアントを測定します。

  • pymysql - MySQL および MariaDB の計測 PyMySQLベースのクライアント。

アプリケーションが AWS、SQLデータベース、またはその他の HTTPのサービスを呼び出すたびに、 はサブセグメントの呼び出しに関する情報SDKを記録します。 AWS サービス また、サービス内でアクセスするリソースは、トレースマップにダウンストリームノードとして表示され、個々の接続でエラーやスロットリングの問題を識別しやすくなります。

の使用を開始したらSDK、レコーダーとミドルウェア を設定して動作をカスタマイズします。プラグインを追加して、アプリケーションを実行しているコンピューティングリソースに関するデータを記録したり、サンプリングルールを定義してサンプリング動作をカスタマイズしたり、ログレベルを設定してアプリケーションログSDKの からの情報を表示したりできます。

アプリケーションが注釈やメタデータで行うリクエストや作業に関する追加情報を記録します。注釈は、フィルタ式で使用するためにインデックス化されたシンプルなキーと値のペアで、特定のデータが含まれているトレースを検索できます。メタデータエントリは制限が低く、オブジェクトと配列全体を記録できます。これは、 にシリアル化できるものなら何でも構いませんJSON。

注釈とメタデータ

注釈とメタデータは、X-Ray でセグメントに追加する任意のテキストですSDK。注釈は、フィルタ式用にインデックス付けされます。メタデータはインデックス化されませんが、X-Ray コンソールまたは を使用して raw セグメントで表示できますAPI。X-Ray への読み取りアクセスを許可した人は誰でも、このデータを表示できます。

コードに多数の計測されたクライアントがある場合、単一のリクエストセグメントには計測されたクライアントで行われた呼び出しごとに 1 個の多数のサブセグメントを含めることができます。カスタムサブセグメントで、クライアント呼び出しをラップすることで、サブセグメントを整理してグループできます。関数全体またはコードの任意のセクションに対して、カスタムサブセグメントを作成できます。親セグメントのすべてを書き込むのではなく、サブセグメントにメタデータと注釈を記録することができます。

のクラスとメソッドのリファレンスドキュメントについては、SDK「 for AWS X-Ray SDKPython API Reference」を参照してください。

要件

X-Ray SDK for Python では、次の言語バージョンとライブラリバージョンがサポートされています。

  • Python – 2.7、3.4 以降

  • Django – 1.10 以降

  • Flask – 0.10 以降

  • aiohttp – 2.3.0 以降

  • AWS SDK for Python (Boto) - 1.4.0 以降

  • botocore – 1.5.0 以降

  • enum – 0.4.7 以降 (Python バージョン 3.4.0 以前)

  • jsonpickle – 1.0.0 以降

  • setuptools – 40.6.3 以降

  • wrapt – 1.11.0 以降

依存関係管理

X-Ray SDK for Python は から入手できますpip

  • パッケージaws-xray-sdk

を依存関係SDKとして requirements.txt ファイルに追加します。

例 requirements.txt
aws-xray-sdk==2.4.2 boto3==1.4.4 botocore==1.5.55 Django==1.11.3

Elastic Beanstalk を使用してアプリケーションをデプロイする場合、Elastic Beanstalk は requirements.txt のパッケージをすべて自動的にインストールします。