概要
システムを構築する際、必ず考慮しなければいけないことは、運用を考慮した監視サービスです。システムにトラブルが起きた際、素早く原因を発見し、発生したトラブルを解決する必要があります。
例えば、ECサイトを構築した際、ログイン画面で正しい情報(ユーザー名やパスワード)を入力してもログインできない事象が発生した場合、システム側で原因が発生した場所を特定する為にログを確認します。また、サーバーがダウンした際に通知を発生されることも運用を考慮した監視サービスの一つです。
このように、運用を考慮した監視サービスは、システムを稼働する上でなくてなならない設定です。AWSでは、このような監視サービスを実現できる設定をサービスとして提供しています。本記事では、このような監視サービスをご紹介します。
AWSが提供する監視サービスについて

AWSが提供する監視サービスとは
AWSの監視サービスとは、具体的にどのようなサービスがあるでしょうか。例えば、AWSサービスに異常が発生した際に通知を行うCloudWatch AlarmやAWSサービスやEC2のOSログなどを出力、管理するCloudWatch Logなどがあります。
このようなAWSの監視サービスは、具体的にどのような違いがあるでしょうか。以下のAWSの代表的な監視サービスをまとめてみました。
- CloudWatch
- AWSサービスの各メトリクスを監視する。CPU使用率や5xxERRORの状態などメトリクスを監視し、CloudWatchAlarmでAlarmする事が可能。CloudWatchLogsで各AWSサービスのログを出力し、メトリクスフィルターでCloudWatchLogsに出力したログの文字列に基づきCloudWatchAlarmでAlarmする事ができる。
- CloudTrail
- AWSサービスに対する証跡ログを取得する事ができる。証跡ログはS3に出力する事が可能。コンソール上で誰が何を操作したかを証跡ログで確認する事ができる。
- Config
- AWSサービスの設定変更に基づきSNSで通知する事ができる。また、Configルールで非準拠設定を行い、非準拠と判定されたAWSリソースを検知する事が可能。例えば、指定するタグを設定し、そのタグが設定されてない場合に非準拠として検知することができる。また、Configルール→EventBrige→SNSと連携し、非準拠検知と同時にSNSで通知する事が可能。
- Billing and Cost Management
- AWSの利用料金を監視するサービスであり、月間のコストの閾値を設定する事で、閾値を調査する場合に通知する事ができる。
このように、AWS監視サービス別に監視できる対象が異なることが分かります。それぞれ何をどのように監視するかによって、使用する監視サービスを検討する必要があります。
各AWS監視サービスの詳細
では、具体的に各AWS監視サービスにどのような機能があるか見ていきましょう。
AWS Config
こちらのサービスは、AWSアカウントにあるAWSリソースの設定を評価、監査、審査できるサービスです。複数のConfigルールを設定し、設定したConfigルールで非準拠のAWSリソースを評価する事ができます。
また、AWSサービスの設定変更も監視する事ができ、AWSサービスに設定変更が発生した場合、Amazon SNSで通知する事が可能です。
AWS Configの機能について
AWS Configは、マルチアカウント、マルチリージョンのデータ集約が可能な為、管理者が単一のAWSコンソール上から、複数AWSアカウントを監視することができます。
また、AWSサービスの設定変更履歴を追跡できる事が可能です。
AWS リソースの一般的な評価を行う
AWS Configルール機能を利用する事で、AMIのモニタリング、EBSボリュームが暗号化されているか、特定のタグがリソースに適用されているかなど、AWS リソースの一般的な評価をルール化することができます。
カスタムルールを利用する
Configのカスタムルールを作成する事で、マネージドルールより柔軟で詳細なConfigルールを作成できます。
カスタムルールを作成する際は、Lambdaと関連付ける必要があります。
Amazon CloudWatch
こちらのサービスは、AWS リソースとAWSで実行するアプリケーションをモニタリングする事ができるAWSの監視サービスです。
CloudWatchの機能は、CloudWatchメトリクス,CloudWatchLogs,CloudWatchAlarmなどがあり、CloudWatchメトリクスにより、AWSリソースをモニタリングし、モニタリングしたリソースの通知設定をCloudWatchAlarmで設定する事ができます。
また、CloudWatchLogsで各AWSサービスのログをロググループに出力する事ができ、保管期間を設定する事ができます。
CloudWatch Logs とは
前述で紹介した通り、CloudWatchは、ログ出力の機能として、CloudWatchLogsを提供しています。AWSサービスのログをCloudWatch Logsに連携し、CloudWatch Logsでログを管理する事ができます。また、CloudWatch Logsのログストリーム機能を利用する事で、CloudWatch Logsに出力されたログを論理的に分割して管理する事ができます。
基本的にAWSコンソール上で監視対象のAWSサービスとCloudWatchLogsを連携できますが、EC2のsyslogをCloudWatchLogsに出力したい場合は、EC2にCloudwatch Agent を設定し、EC2内のシステムログをCloudWatch Logsに連携する必要があります。
CloudWatch Logs サブスクリプションフィルター
サブスクリプションフィルターとは、CloudWatchLogsに出力されたログにフィルターをかけて他のAWSサービスに連携する機能です。連携先のAWSサービスは、Knesis data firehose, Knesis data Stream, Lambdaが提供されています。
フィルターについては、パターンを記入し、パターンに一致したログのみ連携先に送信する事ができます。
CloudWatch Logs Insights
CloudWatch Logs Insightsを利用する事で、CloudWatch Logs 内で管理されているログをクエリを実行し、分析することができます。
また、CloudWatchダッシュボードを利用する事で、CloudWatch Logs内のログ分析結果するクエリを保存できるため、分析するたびにクエリを実行せず、ダッシュボードで検出結果を確認する事ができます。
CloudWatch Alarm
CloudWatchメトリクス及びCloudWatch Logsと連携し、AWSのログ監視、リソース監視を行う機能です。監視したいCloudWatchメトリクスを指定し、閾値を設定する事で、設定した閾値を超過した際にAlarmを発生することができます。
また、「アクション」設定により、SNSを指定し、Alarmが発生した時にSNSでメール通知する事もできます。
CloudWatchメトリクス
CloudWatchメトリクスは、AWSサービスごとに複数のメトリクスが存在し、各メトリクスを確認する事でAWSリソースの状況を確認する事ができます。
CloudWatchメトリクスは各AWSサービスごとに複数存在する為、全てご紹介する事はできませんが、各AWSサービスの公式サイトに記載されています。例えば、EC2(Linux)の場合、EC2のLinuxインスタンス用ユーザーガイドに監視可能なメトリクス一覧が記載されてます。
今回は、一例として、以下のメトリクスをご紹介します。
SurgeQueueLength
正常なインスタンスへのルーティングを保留中のリクエスト (HTTP リスナー) または接続(TCP リスナー) の合計数
SpilloverCount
サージキューがいっぱいなため、拒否されたリクエストの総数
HealthyHostCount
ロードバランサーに登録された正常なインスタンスの数のみ
UnHealthyHostCount
ロードバランサーに登録された異常なインスタンスの数
RequestCount
指定された間隔 (1 分または 5 分) の間に完了したリクエストの数、または接続の数を確認。これは単純な総数の為、トラフィックの問題点を把握するのには不十分
IntegrationLatency
API Gateway がバックエンドにリクエストを中継してから、バックエンドからレスポンスを受け取るまでの時間。
Latency
API Gateway がクライアントからリクエストを受け取ってから、クライアントにレスポンスを返すまでの時間。
AWS CloudTrail
こちらのサービスは、ユーザーアクティビティと API 使用状況の追跡するAWSサービスです。CloudTrailで取得した証跡ログは、S3と連携し、S3に証跡ログを出力する事ができます。
AWS CloudTrailの機能について
こちらでは、CloudTrailが提供する機能と注意すべき点を紹介します。
すべてのアカウントのイベントログを確認できるように監査人のアクセス設定を行う
CloudTrailで取得できる証跡ログは、リリース後、運用担当者や監査対象者が観覧する為に証跡ログのアクセス設定を行う場合があります。証跡ログにアクセスする為には、AWS Organizationsでアカウント管理を行う場合、マスターアカウントのCloudTrailにおいて組織の証跡を有効化する必要があります。
また、AWS Organizationsでアカウント管理を行っていない場合は、各AWSアカウントでCloudTrail を有効化し、CloudTrailの読み取り専用のIAMロールを担当者に提供する必要があります。
AWS Glue
こちらのサービスは、ETL、分析、機械学習、アプリケーション開発のためのデータの検出、準備、結合を簡単に行えるサーバーレスデータ統合サービスです。
Amazon EMR
こちらのサービスは、Apache HadoopやApache Sparkなどのオープンソースツールを利用した、ビッグデータの分析が可能なAWSサービスです。
Amazon EMRの機能について
EMRの機能について、紹介します。
HDFS
大規模データを蓄積するストレージとして機能することができ、かつEMRが転送中と保存中の両方のデータ暗号化をサポートしてくれます。
Apache Spark
暗黙のデータ並列性と耐故障性を備えたクラスタ全体をプログラミングでき、ストリームデータの高速並列処理が可能です。
Apache Hive
Hadoopの上に構築されたデータウェアハウス 構築環境であり、データの集約・問い合わせ・分析を行うことができる。長期的なストレージとして機能するといった要件には合致しない。
※Hadoop+BigQuaryの代替可能。Redshiftで代替はできません。
コメント