モダンなクラウドシステムでは、インフラ・アプリケーション・ネットワークを含めた「可観測性(Observability)」の設計が、システムの信頼性と運用効率を大きく左右します。
本章では、AWSにおける可観測性の中心となるCloudWatchと、その周辺サービスを使って、モニタリング・ログ分析・分散トレーシングを組み合わせた統合監視の実現方法を解説します。
解説内容は以下の通りです:
- カスタムメトリクスとアラーム設計
- ログの構造化とAthenaによる検索・分析
- AWS X-Rayによる分散トレーシングと統合可視化
カスタムメトリクスとアラーム設計
CloudWatchメトリクスの基本
CloudWatchでは、EC2やRDS、LambdaなどのAWSリソースから標準メトリクスが自動収集されます。加えて、アプリケーションから独自のデータを送信することで、カスタムメトリクスも活用できます。
カスタムメトリクスの送信例
# Pythonで例:例外発生回数を送信 import boto3 cloudwatch = boto3.client('cloudwatch') cloudwatch.put_metric_data( Namespace='MyApp', MetricData=[ { 'MetricName': 'ExceptionCount', 'Dimensions': [{'Name': 'ServiceName', 'Value': 'UserAPI'}], 'Value': 1, 'Unit': 'Count' } ] )
アラーム設計のポイント
- アプリケーションの異常指標(例:レスポンスタイム、エラー率)を監視
- 過去の傾向からしきい値を動的に設定する
Anomaly Detectionを活用 - 通知にはSNS → Slack / ChatOps連携がおすすめ
# CLIでアラーム作成例(CPU使用率) aws cloudwatch put-metric-alarm \ --alarm-name HighCPU \ --metric-name CPUUtilization \ --namespace AWS/EC2 \ --statistic Average \ --period 300 \ --threshold 80 \ --comparison-operator GreaterThanThreshold \ --evaluation-periods 2 \ --alarm-actions arn:aws:sns:ap-northeast-1:123456789012:NotifyMe \ --dimensions Name=InstanceId,Value=i-0123456789abcdef0
ログの構造化とAthenaでの分析
CloudWatch Logsの基本
アプリケーションやAWSサービスから出力されるログをCloudWatch Logsに送信することで、リアルタイム監視やトラブルシューティングが可能になります。
ただし、ログの構造がバラバラだと分析が困難になるため、JSON形式でのログ出力がおすすめです。
構造化ログの出力例
{ "timestamp": "2025-10-01T12:00:00Z", "level": "ERROR", "service": "payment-api", "message": "Timeout when calling Stripe API", "requestId": "abc123" }
Athenaでの分析
CloudWatch LogsをS3にエクスポートし、Amazon Athenaを使ってSQLで高速分析が可能になります。事前にGlueでスキーマ定義をしておくと効率的です。
# Athenaクエリ例:エラーレベルの件数を集計 SELECT level, COUNT(*) AS count FROM logs_table WHERE level = 'ERROR' GROUP BY level;
ログ分析の応用
- API GatewayやLambdaのログからボトルネック特定
- セキュリティイベントの可視化(IAM操作・認証失敗)
- Athena + QuickSightでBIダッシュボードを構築
分散トレーシング(X-Ray)と統合監視
分散トレーシングとは?
モノリシックなシステムではなく、マイクロサービス化された環境では、どこで処理が遅れているのか把握しづらくなります。そこで活躍するのが AWS X-Ray です。
X-Rayはアプリケーション間のリクエストフローを追跡し、遅延・エラー箇所を可視化します。
X-Rayの導入例(Lambda)
# Lambda関数のX-Rayトレースを有効化 aws lambda update-function-configuration \ --function-name MyFunction \ --tracing-config Mode=Active
X-Rayは以下のような構成に効果的です:
- API Gateway → Lambda → RDS
- Step Functions → Lambda連携
- コンテナ(ECS/EKS)によるサービス連携
Service Mapで全体可視化
X-Rayでは、サービス間の連携を自動的にマッピングしたService Mapを提供。全体の依存関係やレイテンシの傾向がひと目で把握できます。
まとめ
AWS環境における可観測性の実現には、CloudWatchを中心にメトリクス・ログ・トレーシングの3要素を組み合わせる必要があります。
- CloudWatchでリアルタイムなメトリクス監視とアラームを構成
- ログはJSONで構造化し、AthenaやQuickSightで柔軟な分析を実現
- 複雑なシステム連携はX-Rayで分散トレーシングによる可視化

