コンテンツにスキップ

運用性@AWS

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


02. 監視

ビジネス成果の監視

▼ ビジネス成果の監視とは

ビジネス成果に関するメトリクスを監視する。

例えば、BIツール (例:Redash、Metabase、Google Cloud Lookerなど) を採用し、DBから取得したデータ (例:取引履歴) をメトリクスとする。

▼ DevOps成果

以下のメトリクスをDevOps成果の指標として、QuickSightで監視する。

Code三兄弟のデータポイントを収集し、メトリクスとして分析している。

  • リポジトリ別コード変更量 (コミッター、コード変更数)
  • アプリケーション別のMTTR
  • 変更失敗率 (デプロイの失敗頻度)
  • CIの状態 (失敗、成功、実施頻度)
  • CDの状態 (失敗、成功、実施頻度)
  • CI/CD全体の状態 (失敗、成功、実施頻度)


システムの監視

▼ システムの監視とは

システムに関するメトリクスを監視する。

▼ ユーザー定義の名前空間

名前空間ユーザー定義としたメトリクスの監視ポリシーは以下の通りである。

メトリクス名 単位 説明 アラート条件例 (合致したら発火)
<任意のプレフィクス>LogMetrics カウント ログステータスの検出数をデータポイントとする。メトリクスと検出ルールはフィルターパターンで作成できる。 ・統計 : 期間内合計数
・期間 : 5
・閾値 : >= 1

▼ ALB

名前空間をALBとしたメトリクスの監視ポリシーは以下の通りである。

メトリクス名 単位 説明 アラート条件例 (合致したら発火)
HTTPCode_ELB_4XX_Count カウント ALBが原因で返信した400系ステータスをデータポイントとする。 ・統計 : 期間内合計数
・期間 : 24時間
・閾値 : >= 1
HTTPCode_ELB_5XX_Count カウント ALBが原因で返信した500系ステータスをデータポイントとする。 ・統計 : 期間内合計数
・期間 : 5
・閾値 : >= 1
HealthyHostCount カウント ターゲットグループ内の正常なターゲットの数をデータポイントとする。
UnHealthyHostCount カウント ターゲットグループ内の異常なターゲットの数をデータポイントとする。
HTTPCode_TARGET_4XX_Count カウント ターゲットグループ内のターゲットが400ステータスを返信した数をデータポイントとする。 ・統計 : 期間内合計数
・期間 : 24時間
・閾値 : >= 1
HTTPCode_TARGET_5XX_Count カウント ターゲットグループ内のターゲットが500ステータスを返信した数をデータポイントとする。 ・統計 : 期間内合計数
・期間 :5
・閾値 : >= 1
RejectedConnectionCount カウント ターゲットグループ内のターゲットから接続拒否された数をデータポイントとする。
TargetConnectionErrorCount カウント ターゲットグループ内のターゲットに対する通信でエラーが発生した数をデータポイントとする。
TargetTLSNegotiationErrorCount カウント ターゲットグループ内のターゲットへのHTTPSプロトコルでエラーが発生した数をデータポイントとする。

▼ AWS API Gateway

名前空間をAWS API Gatewayとしたメトリクスの監視ポリシーは以下の通りである。

メトリクス名 単位 説明 アラート条件例 (合致したら発火)
IntegrationLatency マイクロ秒 AWS API Gatewayがリクエストをバックエンドにルーティングしてから、バックエンドからレスポンスを受信するまでの時間をデータポイントとする。
Latency マイクロ秒 AWS API Gatewayがクライアントからリクエストを受信してから、クライアントにこれを返信するまでの時間をデータポイントとする。
4XXError カウント 400系ステータスの数をデータポイントとする。 ・統計 : 期間内合計数
・期間 : 24時間
・閾値 : >= 1
5XXError カウント 500系ステータスの数をデータポイントとする。アプリケーションが停止してしまうようなインシデントを検出することに適する。 ・統計 : 期間内合計数
・期間 : 5
・閾値 : >= 1

▼ EC2

名前空間をEC2としたメトリクスの監視ポリシーは以下の通りである。

メトリクス名 単位 説明 アラート条件例 (合致したら発火)
CPUUtilization % EC2で使用されているCPU使用率をデータポイントとする。 ・統計 : 期間内平均使用率
・期間 : 5
・閾値 : >= 80
MemoryUtilization % EC2で使用されているメモリ使用率をデータポイントとする。 ・統計 : 期間内平均使用率
・期間 : 5
・閾値 : >= 80
StatusCheckFailed_Instance カウント インスタンスのインスタンスステータスの失敗数をデータポイントとする。インスタンスが停止してしまうようなインシデントに適する。反対に、インスタンスが正常に稼働していて、プロセスが停止しているようなインシデントを検出することには不適である。
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html#types-of-instance-status-checks
StatusCheckFailed_System カウント インスタンスのシステムステータスの失敗数をデータポイントとする。AWSの障害によるインシデントの検出に適する。
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html#types-of-instance-status-checks

似たメトリクスにStatusCheckFailed_SystemStatusCheckFailed_Instanceがある。

これらはAWS側が原因のメトリクスであるため、ユーザーが監視する必要はない。

▼ AWS ECS

名前空間をAWS ECSクラスターまたはAWS ECSサービスとしたメトリクスの監視ポリシーは以下の通りである。

ClusterNameディメンションとServiceNameディメンションを使用して、AWS ECSクラスターとAWS ECSサービスに関するメトリクスを区別できる。

メトリクス名 単位 説明 アラート条件例 (合致したら発火) 補足
CPUUtilization % AWS ECSクラスターまたはサービスで使用されているCPU使用率をデータポイントとする。 ・統計 : 期間内平均使用率
・期間 : 5
・閾値 : >= 80
MemoryUtilization % AWS ECSクラスターまたはサービスで使用されているメモリ使用率をデータポイントとする。 ・統計 : 期間内平均使用率
・期間 : 5
・閾値 : >= 80
RunningTaskCount カウント 稼働中のAWS ECSタスク数をデータポイントとする。 AWS ECSタスク数の増減の遷移から、デプロイのおおよその時間がわかる。

▼ ElastiCache Redis

名前空間をRedisとしたメトリクスの監視ポリシーは以下の通りである。

メトリクス名 単位 説明 アラート条件例 (合致したら発火) 補足
BytesUsedForCache バイト数 Redisで使用されているメモリ使用サイズをデータポイントとする。 ・統計 : 期間内合計サイズ
・期間 : 5
・閾値 : >= 8GB
CPUUtilization % ノードのCPU使用率をデータポイントとする。 ・統計 : 期間内平均使用率
・期間 : 5
・閾値 : >= 80
Evictions カウント 空きサイズを確保するために削除されたRedisのキー数をデータポイントとする。 ・統計 : 期間内合計数
・期間 : 5
・閾値 : >= 1
SwapUsage バイト数 ストレージ上のスワップ領域の使用サイズをデータポイントとする。 ・統計 : 期間内最大サイズ
・期間 : 5
・閾値 : >= 50GB
使用可能な最大メモリを超えると、Redisはストレージ上のスワップ領域を使用する。
https://zenn.dev/dehio3/scraps/710a9714ce9496

▼ AWS RDS (Aurora)

名前空間をAWS RDS (Aurora) としたメトリクスの監視ポリシーは以下の通りである。

メトリクス名 単位 説明 アラート条件例 (合致したら発火) 補足
BlockedTransactions カウント 秒当たりトランザクションの拒否の回数をデータポイントとする。 ・統計 : 期間内合計数
・期間 : 5
・閾値 : >= 1
CPUUtilization % Aurora DBインスタンスのCPU使用率をデータポイントとする。 ・統計 : 期間内平均使用率
・期間 : 5
・閾値 : >= 80
DatabaseConnections カウント Aurora DBインスタンスへの接続数をデータポイントとする。失敗した接続も含まれている可能性があり、実際よりはやや多めに計測される。 ・統計 : 期間内合計数
・期間 : 5
・閾値 : >= 400
クライアントがDBにリクエストしている時間帯がわかるため、メンテナンスウィンドウを実施時間の参考になる。
Deadlocks カウント 秒当たりデッドロック平均数をデータポイントとする。 ・統計 : 期間内合計数
・期間 : 5
・閾値 : >= 1
EngineUptime インスタンスの起動時間をデータポイントとする。 ダウンタイムの最低発生時間の参考になる。
DMLLatency マイクロ秒 Aurora DBインスタンスに対するDML系クエリの遅延秒数をデータポイントとする。 ・統計 : 期間内最大サイズ
・期間 : 5
・閾値 : >= 2GB
FreeableMemory バイト数 Aurora DBインスタンスの使用できるメモリの最大空きサイズをデータポイントとする。 ・統計 : 期間内最大サイズ
・期間 : 5
・閾値 : >= 2GB
FreeLocalStorage バイト数 Aurora DBインスタンスの使用できるローカルストレージの最大空きサイズをデータポイントとする。 ・統計 : 期間内最大サイズ
・期間 : 5
・閾値 : >= 10GB
DBインスタンスのローカルストレージは、一時テーブルやログの保管に使用される。
LoginFailures カウント Aurora DBへのログインの失敗回数をデータポイントとする。 ・統計 : 期間内合計数
・期間 : 5
・閾値 : >= 1

▼ AWS RDS (非Aurora)

名前空間をAWS RDS (非Aurora) としたメトリクスの監視ポリシーは以下の通りである。

AWS RDSのコンソール画面にも同じメトリクスが表示されるが、単位がMByteであり、AWS CloudWatchメトリクスと異なることに注意する。

メトリクス名 単位 説明 アラート条件例 (合致したら発火) 補足
CPUUtilization % DBインスタンスのCPU使用率をデータポイントとする。 ・統計 : 期間内平均使用率
・期間 : 5
・閾値 : >= 80
DatabaseConnections カウント DBインスタンスへの接続数をデータポイントとする。失敗した接続も含まれている可能性があり、実際よりはやや多めに計測される。 ・統計 : 期間内合計数
・期間 : 5
・閾値 : >= 400
クライアントがDBにリクエストしている時間帯がわかるため、メンテナンスウィンドウを実施時間の参考になる。
FreeableMemory バイト数 DBインスタンスの使用できるメモリサイズをデータポイントとする。 ・統計 : 期間内最大サイズ
・期間 : 5
・閾値 : >= 2GB

▼ S3

名前空間をS3としたメトリクスの監視ポリシーは以下の通りである。

メトリクス名 単位 説明 アラート条件例 (合致したら発火)
5xxErrors カウント S3バケットが原因で返信した500系ステータスをデータポイントとする。 ・統計 : 期間内合計数
・期間 : 5
・閾値 : >= 1