CloudWatchと可観測性設計

モダンなクラウドシステムでは、インフラ・アプリケーション・ネットワークを含めた「可観測性(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で分散トレーシングによる可視化
採用情報 長谷川 横バージョン
SHARE
PHP Code Snippets Powered By : XYZScripts.com
お問い合わせ