- AWS CLI から AWS X-Ray の使用を開始する - AWS X-Ray - 機械翻訳
- aws-samples/eb-java-scorekeep at xray-gettingstarted
よくわからん。
AWS SAMは sam init
で x-rayオプションあるのでそれが早いかも。ああできた。
デプロイして curlでURL呼んで AWS X-Rayコンソールで、トレース開くだけ。
ただこれCloudWatch log同様 AWS::XRay::Group 書いたほうがいいのでは。Former2で掘ってみる。
上のsamをFormer2で掘ってみた。
app.pyは普通。trace的なものはなにも入ってない。
AWS::Lambda::Functionだと
Properties:
TracingConfig:
Mode: 'Active'
Roleは
- "arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess"
- "arn:aws:iam::aws:policy/service-role/"
"AWS::XRay::Group"はデフォルトしかない
XRayGroup:
Type: 'AWS::XRay::Group'
Properties:
GroupName: 'Default'
InsightsConfiguration:
InsightsEnabled: false
NotificationsEnabled: false
プロジェクトごとに指定できたほうがいいよね...
グループの作成 Configuring groups in the X-Ray console - AWS X-Ray
ああなるほど。グループはルールベースなんだ。 最初からフィルタって名前にしとけばいいのに
フィルタ式を使用したコンソールでのトレースの検索 - AWS X-Ray
では AWS::XRay::SamplingRule は?
- AWS::XRay::SamplingRule - AWS CloudFormation
- aws_xray_sampling_rule | Resources | hashicorp/aws | Terraform Registry
AWS X-Ray
AWSのモニタリングサービスの1つで 主にプロファイラ、エラー検出の機能を持つ。
用語
X-Rayで使われる用語は AWS X-Ray の概念 - AWS X-Ray を参照。
とりあえず知っておく用語は以下の2つ
トレース
一連のサービス呼び出し・結果の返却(「セグメント」)の塊。たとえばAPI GatewayのstageからLambdaが呼び出され、LambdaがDynamDBを呼んで... の一連のセグメント。
トレース1個分を表示するのが X-Rayコンソール の traces で、 一定期間のトレースをまとめて表示するのが service map
グループ
グループという名前だが、実質フィルタ。トレースに対する条件式を書く。 X-Rayコンソールのトレースやサービスマップでグループを指定すると、フィルタされたトレースのみが表示されるようになる。
条件式はこれ フィルタ式を使用したコンソールでのトレースの検索 - AWS X-Ray
Lambdaの同期呼出のサンプル
非同期呼出やPollベース呼出だと
devでX-Rayを有効にして、prodで無効にする、のようなマスタースイッチ的な機能は?
アプリケーション側では Lambda Powertools Pythonを使うなら、Disabling response auto-capture からの3節を参照。