aws cloudformation describe-stacks \
--stack-name <あなたのDLTスタック名> \
--query "Stacks[0].Description" --output text
# CLAUDE.md
## CloudWatch カスタムメトリクス設計ルール
### 名前空間の命名規則
Custom/{システム名}/{サービス名}
例:Custom/EcSite/ApiService
### 必須メトリクス(全サービス共通)
- ResponseTime(Milliseconds)
- ErrorRate(Percent)
- RequestCount(Count)
### ディメンション設計
- Environment: dev/stg/prod
- Service: サービス名
- Region: ap-northeast-1
### アラーム設定基準
- ResponseTime p99 > 3000ms → Warning
- ResponseTime p99 > 5000ms → Critical
- ErrorRate > 1% → Warning
- ErrorRate > 5% → Critical
### Terraform 管理
- アラームは modules/cloudwatch/ に配置
- ダッシュボードは environments/{env}/ に配置
Claude Code が生成するもの
① メトリクス送信コード(Python + boto3)
② Terraform(アラーム + ダッシュボード)
「以下の要件でCloudWatchカスタムメトリクスを設計・実装してください。
対象:ECS Fargate上のAPIサービス
取得したいメトリクス:
- APIレスポンスタイム(p50/p95/p99)
- エラーレート(5xx/4xx)
- アクティブセッション数
実装:
- Lambda で定期的にメトリクスを送信
- Terraform でアラームとダッシュボードも作成
- 名前空間は Custom/ApiService」
JMeterログは標準出力ではなく、ログファイル(/tmp/artifacts/)に
出力されているようです。(cloudwatchでは見つからない)
テスト終了後、以下のファイルがS3に自動アップロードされています
S3バケット
└── results/
└── <TEST_ID>/
├── xxx.xml ← テスト結果サマリー
├── bzt-xxx.log ← Taurusログ
├── jmeter-xxx.log ← JMeterログ
├── jmeter-xxx.out ← 標準出力
├── jmeter-xxx.err ← エラー出力
└── xxx.jtl ← リクエスト単位の詳細ログ
DLTがS3に出力するエラー情報にリクエスト/レスポンスボディを
追加して、Claude(MCP)+S3 MCPサーバーでエラー解析させることは
可能です。
<ご参考>
================================================================
DLT エラー原因分析
Claude + MCP連携 + S3 MCPサーバーを使用した負荷テストエラー調査
================================================================
【課題】
DLTがS3に出力するJMeter結果ファイルには、
エラー率・レスポンスタイムは含まれるが、
リクエスト/レスポンスボディが含まれないため
エラー原因の特定が困難。
----------------------------------------------------------------
【解決方針】
JMeter実行時のエラー詳細(リクエスト/レスポンスボディ)を
コンテナ内に記録し、DLT標準機能でS3に自動アップロードされた
ファイルをClaude(MCP)が取得・分析する。
JMeter実行(ECS Fargate)
↓
/tmp/results-detail.jtl に記録
↓
load-test.shの既存処理がS3に自動アップロード ← 追加実装不要
↓
Claude(MCP)がS3 MCPサーバー経由でS3から取得して分析
----------------------------------------------------------------
【事前作業1】JMXファイルへのリスナー追加
リクエスト/レスポンスボディを記録するため、JMXファイルにリスナーを追加する。
filenameタグの記載により、load-test.shが自動でS3にアップロードする。
追加するXML(JMXファイルの </jmeterTestPlan> 直前に挿入):
<!-- JMXファイルに追加するリスナー設定 -->
<ResultCollector guiclass="SimpleDataWriter"
testclass="ResultCollector"
testname="結果ファイル出力">
<boolProp name="ResultCollector.error_logging">true</boolProp> <!-- エラーのみ -->
<objProp>
<name>saveConfig</name>
<value class="SampleSaveConfiguration">
<!-- リクエスト/レスポンスボディを記録する設定 -->
<requestHeaders>true</requestHeaders>
<responseData>true</responseData> <!-- レスポンスボディ -->
<requestData>true</requestData> <!-- リクエストボディ -->
<responseHeaders>true</responseHeaders>
<url>true</url>
<time>true</time>
<latency>true</latency>
<responseCode>true</responseCode>
<responseMessage>true</responseMessage>
<encoding>false</encoding>
</value>
</objProp>
<stringProp name="filename">/tmp/results-detail.jtl</stringProp> <!-- S3アップロード -->
</ResultCollector>
----------------------------------------------------------------
【事前作業2】S3 MCPサーバーのセットアップ(ローカルPC)
(1) uvx のインストール(未インストールの場合)
pip install uv
(2) MCPクライアント設定ファイルに以下を追記する
{
"mcpServers": {
"awslabs.aws-api-mcp-server": {
"command": "uvx",
"args": ["awslabs.aws-api-mcp-server@latest"],
"env": {
"AWS_REGION": "ap-northeast-1",
"AWS_PROFILE": "your-profile"
}
}
}
}
(3) AWS認証情報の確認
・aws configure またはプロファイル設定済みであること
・実行ユーザーに s3:GetObject 権限があること
----------------------------------------------------------------
【Claudeでの分析手順】
(1) Claude(claude.ai)を開く
(2) S3 MCPサーバーが接続されていることを確認する
(3) 以下のように指示する
「s3://[バケット名]/[test-id]/results-detail.jtl を取得して
エラー原因を分析してください」
Claudeが自動で実行する内容:
① S3 MCPサーバー経由でresults-detail.jtlを取得
② JTLファイルの内容を解析
③ エラー原因・傾向をレポート生成
----------------------------------------------------------------
【注記】
・コンテナイメージ(Dockerfile)の改修は不要
・S3 MCPサーバーはローカルPCで起動している必要がある
・Claude Codeは不要
================================================================