このページでは、Python サーバレストレーサ API を使用して、AWS Lambda 関数内のトレーサの動作を変更する方法について説明します。
exit コールの作成
exit コールは、HTTP、Amazon DynamoDB、および AWS Lambda 間のコールでは自動的にインストゥルメント化されます。他のすべてのプロトコルでは、手動で exit コールを作成する必要があります。
exit コールを作成するには、with
ステートメント内の ExitCallContextManager
メソッドを使用して exit コールをラップします。このメソッドは、次の必須パラメータを使用します。
ExitCallContextManager
メソッドは、メソッドの範囲内で発生するすべてのランタイム例外を、exit コールエラーとして自動的に報告します。
次のコードサンプルは、MySQL データベースに exit コールメソッドを使用する方法を示しています。
import appdynamics # Add AppDynamics libraries. Must be the first line of code
@appdynamics.tracer
def handler(event, context):
with appdynamics.ExitCallContextManager(exit_point_type="DB", exit_point_sub_type="DB", identifying_properties={"VENDOR": "MYSQL"}) as ec:
data = fetch_from_db()
PY
exit コールタイプおよび識別プロパティ
コントローラでは、すべての exit コールに個別のタイプがあり、一連の識別プロパティによって決定されます。各 exit コールタイプに少なくとも 1 つの識別プロパティを含めます。
exitCall
のタイプ、サブタイプ、および識別プロパティを次に示します。exit コールサブタイプの場合、表に記載されている例を使用するか、空の文字列を使用できます。
終了コールタイプ | exit コールサブタイプ | 識別プロパティ |
---|
HTTP | HTTP | HOST
PORT
URL
QUERY STRING
|
DB | DB
| URL
HOST
PORT
DATABASE
VERSION
VENDOR
|
CACHE | CACHE
| VENDOR
SERVER POOL
|
CUSTOM | Cassandra CQL
Couchbase
Amazon Web Services
Mongo DB
| ユーザ定義のプロパティセット |
次のインターセプタがサポートされており、手動でのインストゥルメンテーションは必要ありません。
- Boto クライアント:
- Lambda:
invoke
、invokeAsync
- DynamoDB:
batch_get_item
、batch_write_item
、create_table
、delete_table
、delete_item
、get_item
、put_item
、update_item
- Tornado
http
ライブラリ
exit コールエラーレポートの作成
ExitCallContextManager
メソッドは自動的にエラーを報告します。カスタムエラーレポートを追加する場合は、report_exit_call_error
メソッドを使用します。このメソッドは、次のパラメータを使用します。
error_name:
エラーの名前error_message
(オプション):説明的なエラーメッセージhttp_status_code
(オプション):使用可能な場合は HTTP ステータスコード
次のコードサンプルは、exit コール エラー レポート メソッドを使用する方法を示しています。
import appdynamics
@appdynamics.tracer
def handler(event, context):
#Create an exit call
with appdynamics.ExitCallContextManager("DB", "DB", {"HOST": "ec2-12-123-123-12.us-west-2.compute.amazonaws.com", "PORT": "3306", "DATABASE": "movies", "VENDOR": "MYSQL"}) as ec:
movies = fetch_movies_from_mysql_db()
if movies == None:
#Create an exit call error report
ec.report_exit_call_error(error_name="DBError", error_message="Item not found") #ec is the object returned by ExitCallContextManager above
PY
トランザクション エラー レポートの作成
デフォルトでは、Python トレーサはトランザクション エラー レポートを自動的に検出します。トランザクションエラーを報告するために appdynamics.report_error(error_name: str, error_message: str)
メソッドを使用して、これらのエラーレポートをカスタマイズできます。このメソッドは、次のパラメータを使用します。
次のコードサンプルは、トランザクション エラー レポート メソッドを使用する方法を示しています。
import appdynamics # Add AppDynamics libraries. Must be the first line of code
import requests #Add request library
@appdynamics.tracer # Must come before the handler function
def my_handler(event, context):
try:
r = requests.get('https://api.github.com/events')
except Exception as e:
appdynamics.report_error(error_name=type(e).__name__, error_message=str(e)) # Reports a transaction error
PY