CloudWatchメトリクス、名前空間、ディメンション
AWSサービスに組み込まれたメトリクスを理解し、アプリケーションからカスタムメトリクスを発行して、ディメンションで絞り込みながら特定のリソースを詳しく分析します。
「CloudWatchメトリクス、名前空間、ディメンション」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
Amazon CloudWatchとは
Amazon CloudWatchは、AWSリソースやアプリケーションからメトリクス、ログ、トレースを収集するAWSの統合オブザーバビリティサービスです。インフラストラクチャの状態を包括的に把握できるため、異常の検出、アラームの設定、運用上の変化への自動対応が可能になります。CloudWatchはほぼすべてのAWSサービスと緊密に統合されており、SAA-C03試験で扱われる主要な監視ツールです。
CloudWatchメトリクスを理解する
CloudWatchメトリクスは、リソースの測定可能な側面の値を時間の経過に沿って表す、時系列に並んだデータポイントの集合です。たとえば、1分ごとに測定したEC2インスタンスのCPUUtilizationが該当します。メトリクスは名前空間、名前、ディメンションによって識別されます。AWSは数百種類の組み込みメトリクスを自動的に公開しており、アプリケーションコードやスクリプトから独自のカスタムメトリクスを公開することもできます。
名前空間:メトリクスの整理
名前空間は、異なるソースのメトリクス間で名前が衝突するのを防ぐ、CloudWatchメトリクスのコンテナです。AWSサービスでは、AWS/EC2、AWS/RDS、AWS/Lambda、AWS/S3のような名前空間が使用されます。カスタムメトリクスを公開する場合は、たとえばMyApp/OrderServiceのように独自の名前空間を選択します。異なる名前空間に属するメトリクスは、同じメトリクス名を共有していても完全に分離されています。
# List all namespaces in your account
aws cloudwatch list-metrics \
--query 'Metrics[].Namespace' \
--output text | tr '\t' '\n' | sort -u
# List metrics in the AWS/EC2 namespace
aws cloudwatch list-metrics \
--namespace AWS/EC2 \
--query 'Metrics[].MetricName' \
--output text | tr '\t' '\n' | sort -uディメンション:メトリクスのフィルタリング
ディメンションは、名前空間内でメトリクスを一意に識別するキーと値のペアです。たとえばAWS/EC2名前空間では、CPUUtilizationをディメンションInstanceId=i-0123456789abcdef0でフィルタリングすると特定の1台のインスタンスを確認でき、AutoScalingGroupName=my-asgでフィルタリングするとフリート全体の集計メトリクスを確認できます。1つのメトリクスには最大30個のディメンションを設定でき、各サービスのメトリクスで使用できるディメンションはAWSによってあらかじめ定義されています。
# Get CPU utilization for a specific EC2 instance
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-01T01:00:00Z \
--period 300 \
--statistics Average標準モニタリングと詳細モニタリング
デフォルトでは、AWSサービスは5分間隔(標準モニタリング)でメトリクスをCloudWatchに公開します。追加料金はかかりません。時間的に正確な監視が必要なワークロードでは、詳細モニタリングを有効にして1分単位の粒度で取得できます。詳細モニタリングはEC2、Auto Scaling、ELB、RDSなどで利用できますが、CloudWatchの追加料金が発生します。SAA-C03では、ステップスケーリングを使用するAuto Scalingポリシーが、1分間隔のメトリクスによってより適切に機能するCloudWatchアラームに依存することを覚えておきましょう。
# Enable detailed (1-minute) monitoring for an EC2 instance
aws ec2 monitor-instances \
--instance-ids i-0123456789abcdef0
# Verify monitoring state
aws ec2 describe-instance-status \
--instance-ids i-0123456789abcdef0 \
--query 'InstanceStatuses[].Monitoring'カスタムメトリクスの公開
任意のアプリケーションから、put-metric-data APIまたはCloudWatch Agentを使ってカスタムメトリクスをCloudWatchに送信できます。一般的なカスタムメトリクスには、ビジネスKPI(1分あたりの注文数)、アプリケーションレベルのレイテンシー、キューの深さ、エラー率などがあります。カスタムメトリクスは可変の解像度で15か月間保持され、料金はメトリクス1つあたり月単位で発生します。高解像度カスタムメトリクス(1秒単位の粒度)もサポートされていますが、料金は高くなります。
# Publish a custom metric from the CLI
aws cloudwatch put-metric-data \
--namespace 'MyApp/OrderService' \
--metric-name 'OrdersProcessedPerMinute' \
--value 47 \
--unit Count \
--dimensions Environment=Production,Region=us-east-1
# Publish from application code (Python boto3)
# cloudwatch.put_metric_data(
# Namespace='MyApp/OrderService',
# MetricData=[{'MetricName': 'ErrorRate', 'Value': 0.5, 'Unit': 'Percent'}]
# )EC2メトリクス用のCloudWatch Agent
CloudWatch Agentは、EC2インスタンスやオンプレミスサーバーにインストールして、組み込みのEC2ハイパーバイザーでは取得できないメトリクスを収集するソフトウェアエージェントです。対象にはメモリ使用率、ディスク容量、ネットワーク接続数などがあります。また、エージェントはログも収集してCloudWatch Logsに送信します。メモリ使用率は試験でよく扱われるシナリオです。これはEC2のデフォルトメトリクスではなく、CloudWatch Agentを介して収集する必要があります。
# Install and start the CloudWatch Agent on Amazon Linux 2
sudo yum install -y amazon-cloudwatch-agent
# Use the wizard to generate a config
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
# Start the agent with the generated config
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config \
-m ec2 \
-s \
-c ssm:/AmazonCloudWatch-linuxメトリクス数学と異常検出
メトリクス数学を使用すると、既存のメトリクスに対して算術演算を行い、結果を別のメトリクスとして保存せずに新しい時系列を作成できます。たとえば、CloudWatchダッシュボードの式でErrors / Requests * 100を直接計算し、エラー率を求められます。異常検出では、機械学習を過去のメトリクスデータに適用して予測値の帯域を作成します。その帯域の範囲外にメトリクスが逸脱したときに、固定しきい値がなくても作動するアラームを作成できます。
# Get metric data using metric math
aws cloudwatch get-metric-data \
--metric-data-queries '[
{"Id":"e1","Expression":"m1/m2*100","Label":"ErrorRate%"},
{"Id":"m1","MetricStat":{"Metric":{"Namespace":"MyApp","MetricName":"Errors"},"Period":60,"Stat":"Sum"}},
{"Id":"m2","MetricStat":{"Metric":{"Namespace":"MyApp","MetricName":"Requests"},"Period":60,"Stat":"Sum"}}
]' \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-01T01:00:00Zメトリクスの保持期間
CloudWatchでは、解像度に応じて異なる期間メトリクスが保持されます。1秒解像度のデータポイントは3時間、1分間隔のデータは15日間、5分間隔のデータは63日間、1時間間隔のデータは15か月間保持されます。CloudWatchは時間の経過に伴い、高解像度データを低解像度データへ自動的に集約します。そのため、長期的な傾向を分析する場合、数か月前の元の1分間隔の測定値ではなく、1時間単位の平均値を確認することになります。
CloudWatchコンソールでメトリクスを表示する
CloudWatchコンソールにはMetrics ExplorerとMetrics browserがあり、任意の名前空間、メトリクス、ディメンションの組み合わせを選択して、時間の経過に伴うデータを可視化できます。1つのグラフに複数のメトリクスを重ねて表示したり、集計期間を変更したり、ダッシュボードに追加したりすることも可能です。プログラムからアクセスする場合、GetMetricStatistics APIとGetMetricData APIによって、生のデータポイントまたは集計統計(Average、Sum、Minimum、Maximum、SampleCount)が返されます。
# Get average CPU for all instances in an ASG over the last hour
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=AutoScalingGroupName,Value=my-asg \
--start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) \
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
--period 300 \
--statistics Average Maximum主要なEC2およびRDSメトリクス
SAA-C03試験では、次の重要なメトリクスを覚えておきましょう。EC2 — CPUUtilization、NetworkIn/Out、DiskReadOps/WriteOps(インスタンスストアのみ)。EC2のデフォルトでは取得されないもの:メモリ、ディスク容量(CloudWatch Agentを使用)。RDS — DatabaseConnections、FreeStorageSpace、ReadLatency、WriteLatency、ReplicaLag。ELB — RequestCount、TargetResponseTime、UnHealthyHostCount。Lambda — Invocations、Errors、Duration、Throttles、ConcurrentExecutions。
クイックチェック
このレッスンで扱ったAWS Solutions Architect (SAA-C03)の概念について、理解度を確認しましょう。
レッスンのまとめ
このレッスンでは、名前空間によってサービスごとにメトリクスを整理し、名前の衝突を防げること、ディメンションによって単一のEC2インスタンスやASGなど特定のリソースにメトリクスを絞り込めること、そしてメモリ使用率はEC2のデフォルトメトリクスではなく、取得にはCloudWatch Agentが必要であることを学びました。次は、自動アラートに使用するCloudWatchアラームと複合アラームについて学びます。
AI チューターと学ぶ Cloud & IT Cert Prep — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 150
- レッスン
- 600
よくある質問
「CloudWatchメトリクス、名前空間、ディメンション」レッスンは無料ですか?
はい。「CloudWatchメトリクス、名前空間、ディメンション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「CloudWatchメトリクス、名前空間、ディメンション」で何を学びますか?
AWSサービスに組み込まれたメトリクスを理解し、アプリケーションからカスタムメトリクスを発行して、ディメンションで絞り込みながら特定のリソースを詳しく分析します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「CloudWatchメトリクス、名前空間、ディメンション」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- CloudWatchメトリクス、名前空間、ディメンション
- CloudWatchアラームと複合アラーム
- CloudWatch LogsとLogs Insights
- CloudWatchダッシュボードとContainer Insights