📡 Step 12: Application Signals(次世代監視)
⏱️ このステップの所要時間
約15分
🎯 このステップのゴール
- AWS Application Signalsによる統合監視を導入
- アプリケーションレベルのメトリクスとSLI/SLOを設定
- 自動的なアプリケーションマップ生成を体験
- 次世代の統合監視プラットフォームを理解
💡 AWS Application Signalsとは?
AWS Application Signals は、2024年に一般公開された次世代のアプリケーション監視サービスです。
🌟 Application Signalsの革新的な特徴
- 統合監視: メトリクス、ログ、トレースを統一ダッシュボードで表示
- 自動検出: アプリケーション構成を自動的に発見・マップ化
- SLO管理: Service Level Objectives の設定と追跡を自動化
- リアルタイム分析: 異常検知とアラート機能
- X-Ray連携: 分散トレーシングと完全統合
- コスト効率: 設定不要で即座に利用開始可能
🚧 新サービスについて
Application Signalsは比較的新しいサービスのため、一部リージョンでは利用できない場合があります。東京リージョン(ap-northeast-1)での利用を前提とします。
🏗️ Application Signals監視範囲
🔧 Step 12-1: Application Signalsの有効化
CloudWatch Applicationコンソールへ移動
- AWS コンソール → 「CloudWatch」 を選択
- 左メニューから 「Application Signals」 をクリック
- 「開始方法」 または 「アプリケーションを検出」 ボタンをクリック
💡 初回アクセス
Application Signalsを初めて使用する場合、サービスの有効化に数分かかる場合があります。
自動検出の開始
-
「自動インストルメンテーションを有効にする」 を選択
-
対象サービス で以下にチェック:
- ✅ API Gateway
- ✅ AWS Lambda
- ✅ Amazon DynamoDB
-
「監視の開始」 をクリック
監視対象の確認
設定完了後、数分待つとアプリケーションの自動検出が開始されます:
- 「サービス」 タブで検出されたサービス一覧を確認
- あなたのAPI Gateway、Lambda関数、DynamoDBテーブルが表示されることを確認
📊 Step 12-2: アプリケーションマップの確認
サービスマップの表示
- Application Signals → 「サービスマップ」 をクリック
- 自動生成されたアプリケーション構成図を確認
表示される情報例:
🌐 API Gateway (2025-tohoku-it-giovanni-image-api)
↓ 平均レスポンス時間: 245ms
↓ エラー率: 0.5%
⚡ Lambda関数 (2025-tohoku-it-giovanni-api)
↓ 平均実行時間: 180ms
↓ 実行成功率: 99.2%
📊 DynamoDB (2025-tohoku-it-giovanni-image-metadata)
↓ 平均クエリ時間: 45ms
↓ スロットリング: 0件
詳細メトリクスの確認
各サービスノードをクリックして詳細情報を表示:
-
パフォーマンスメトリクス:
- リクエスト数(RPM)
- レスポンス時間(P50, P90, P99)
- エラー率
-
依存関係:
- 上流・下流サービスの特定
- トラフィックフローの可視化
🎯 Step 12-3: SLO(Service Level Objective)の設定
API用SLOの作成
- Application Signals → 「SLO」 → 「SLOを作成」
- SLO設定:
SLO名: Image API Availability
説明: 画像APIの可用性目標
対象サービス:
- API Gateway: 2025-tohoku-it-giovanni-image-api
- Operation: GET /images
SLI(指標)タイプ: 可用性
目標: 99.5%
期間: 30日間
しきい値:
- 成功: HTTP 200-299
- 失敗: HTTP 400-599
- 「SLOを作成」 をクリック
画像処理用SLOの作成
- 「SLOを作成」 → 新しいSLOを作成
- 設定:
SLO名: Image Processing Latency
説明: 画像処理のレスポンス時間目標
対象サービス:
- Lambda: 2025-tohoku-it-giovanni-image-processor
SLI(指標)タイプ: レイテンシ
目標: 95%のリクエストが3秒以内
期間: 7日間
しきい値: 3000ms(3秒)
SLOダッシュボードの確認
- 「SLO」 タブで設定したSLOの状況を確認
- エラーバジェット の消費状況をチェック
- 傾向グラフ でパフォーマンス推移を分析
🚨 Step 12-4: アラートの設定
SLOベースアラートの作成
- 作成したSLO を選択 → 「アラートを作成」
- アラート設定:
アラート名: Image API SLO Breach
説明: 画像APIのSLOが危険レベルに到達
条件:
- エラーバジェット消費率が80%を超えた場合
- 評価期間: 5分間
通知先:
- SNSトピック: (オプション)
- メール通知: your-email@example.com
- 「アラートを作成」 をクリック
カスタムメトリクスアラート
- CloudWatch → 「アラーム」 → 「アラームの作成」
- メトリクス選択:
名前空間: AWS/ApplicationSignals
メトリクス名: Latency.Average
ディメンション:
- Service: your-lambda-function
- Operation: invoke
- しきい値設定:
しきい値タイプ: 静的
条件: より大きい
しきい値: 2000 (2秒)
データポイント: 2/3 (3評価期間中2回)
🧪 Step 12-5: 監視データの生成とテスト
APIトラフィックの生成
以下のスクリプトで定期的なAPIアクセスを実行:
#!/bin/bash
# API負荷テスト用スクリプト
API_URL="https://your-api-gateway-url/prod"
echo "画像API負荷テスト開始..."
# 5分間、10秒間隔でAPIを呼び出し
for i in {1..30}; do
echo "[$i/30] API呼び出し中..."
# 正常なAPI呼び出し
curl -s "${API_URL}/images" > /dev/null
# 存在しない画像IDでの呼び出し(エラー生成)
if [ $((i % 10)) -eq 0 ]; then
curl -s "${API_URL}/images/nonexistent-id" > /dev/null
echo " → エラーケース実行"
fi
sleep 10
done
echo "負荷テスト完了"
画像処理トラフィックの生成
- S3バケットの
uploads/
フォルダに複数の画像をアップロード - Lambda関数の自動実行を確認
- CloudWatch Logsでログ出力を確認
📊 Step 12-6: 統合ダッシュボードの活用
カスタムダッシュボードの作成
- Application Signals → 「ダッシュボード」 → 「ダッシュボードを作成」
- ダッシュボード設定:
ダッシュボード名: 画像処理システム統合監視
説明: ハンズオン画像処理システムの包括的監視
ウィジェット構成:
1. システム概要
- 全体のリクエスト数
- 平均レスポンス時間
- エラー率
2. API Gateway メトリクス
- エンドポイント別リクエスト数
- レスポンス時間分布
3. Lambda 処理状況
- 実行時間傾向
- エラー発生状況
- 同時実行数
4. DynamoDB パフォーマンス
- 読み取り・書き込み容量消費
- スロットリング状況
5. SLO 達成状況
- エラーバジェット消費率
- SLO達成率の推移
リアルタイム監視の設定
- 「自動更新」 を1分間隔に設定
- 時間範囲 を直近1時間に設定
- アラート状況 パネルを追加
📈 Step 12-7: 高度な分析機能
異常検知の有効化
- Application Signals → 「異常検知」 → 「検出器を作成」
- 設定:
検出器名: Image Processing Anomaly
対象メトリクス:
- Lambda Duration (平均実行時間)
- API Gateway 4XXError
- DynamoDB ConsumedReadCapacityUnits
感度: 中レベル
学習期間: 7日間
トレンド分析
- 「分析」 タブで長期的なトレンドを確認
- 時間範囲 を過去30日間に設定
- 以下の指標を分析:
- ピークトラフィック時間帯
- エラー発生パターン
- パフォーマンス改善効果
🔧 トラブルシューティング
Q: Application Signalsが表示されない
確認ポイント
- リージョン: 東京リージョン(ap-northeast-1)を使用しているか
- 権限: CloudWatchFullAccessまたはApplicationSignalsReadOnlyAccess
- サービス有効化: Application Signalsサービスが有効化されているか
Q: サービスマップにコンポーネントが表示されない
原因と対処
- トラフィック不足: APIを数回呼び出してトラフィックを生成
- 検出時間: 初回検出には15-30分程度要する場合がある
- 設定確認: 自動インストルメンテーションが有効になっているか
Q: SLOが計算されない
解決方法
必要条件:
- 対象サービスに十分なトラフィックがある
- メトリクスが正常に収集されている
- SLO設定で正しいサービスを選択している
🚀 実運用での活用方法
1. 日常監視のベストプラクティス
毎日の確認項目:
□ SLO達成状況をチェック
□ エラーバジェット消費率を確認
□ 異常検知アラートの確認
□ パフォーマンストレンドの分析
週次レビュー:
□ SLO設定の妥当性確認
□ アラートのチューニング
□ 長期トレンドの分析
□ 改善施策の効果測定
2. インシデント対応フロー
3. パフォーマンス改善の指標
Application Signalsで追跡すべきKPI:
可用性:
- API成功率: 99.5%以上
- Lambda実行成功率: 99.9%以上
パフォーマンス:
- API P99レスポンス時間: 1秒以内
- 画像処理時間: P95で3秒以内
効率性:
- DynamoDBスロットリング: 0件
- Lambda同時実行制限到達: 0件
🏆 Step 12完了!
🎉 Application Signals次世代監視の導入完了!
習得した最新監視技術:
- ✅ 統合アプリケーション監視の実装
- ✅ 自動サービス検出と依存関係マップ
- ✅ SLI/SLO管理による品質保証
- ✅ リアルタイム異常検知システム
- ✅ 次世代監視プラットフォームの活用
構築した監視システム:
- 📡 統合ダッシュボードによる一元管理
- 🎯 SLOベースの品質管理
- 🚨 プロアクティブなアラート機能
- 📊 自動化されたパフォーマンス分析
- 🗺️ リアルタイムアプリケーションマップ
📚 このステップで学んだ次世代技術
-
統合監視の新しいアプローチ
- メトリクス、ログ、トレースの統合表示
- 自動化されたサービス検出
-
SRE(Site Reliability Engineering)実践
- SLI/SLO による品質定義
- エラーバジェット管理
-
運用効率化の実現
- 設定レス監視の実現
- インテリジェントアラート機能
🌟 総括:完全な監視エコシステムの構築
Step 10-12を通じて、以下の包括的な監視システムが完成しました:
この統合監視システムにより、エンタープライズレベルの運用品質を実現できます!