AWSのCloudWatchを中心としたアプリケーションの観測について学びます

Last Updated: 2024-08-03

本資料の位置づけ

以下のAWS公式で提供されているハンズオン資料があります。

しかしながら、2022年に作成されたものであるため、

2024年現在の画面と大きく乖離が入っていることを受けて、

ベースはいただきつつも、2024年5月時点でのものに更新します。

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-monitoring-2022-reg-event.html

Amazon CloudWatchとは、Amazonが提供するクラウドサービスの監視ツールです。 このツールを使えば、AWSのリソース(コンピューター、ストレージ、ネットワークなど)の状況を簡単に監視することができます。 リソースの使用状況や、エラーの発生などを確認でき、問題に早期に対処することができます。

GUI or CUI どちらで実施しても構いません

(GUI)CloudFormationを実行

次のどちらかのURLからファイルを取得する

https://github.com/midnight480/aws-monitoring-hands-on-1/blob/master/monitoring-1.yaml

https://raw.githubusercontent.com/midnight480/aws-monitoring-hands-on-1/master/monitoring-1.yaml

東京(ap-northeast-1)でCloudformationを開く

https://ap-northeast-1.console.aws.amazon.com/cloudformation/home

Create stack(スタックの作製)を押す

Choose an existing template(既存のテンプレートを選択)

> Upload a template file(テンプレートファイルのアップロード)

> monitoring-1.yaml

スタック名には以下を指定し他はデフォルトのまま次へを押下する

スタック名:monitoring-1

スタックのオプションの設定は何も変更せず次へを押下する

確認画面で「AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。」にチェックを入れ、送信を押下する

(CUI)CloudFormationを実行

CloudShellを起動する

command

git clone https://github.com/midnight480/aws-monitoring-hands-on-1.git
cd aws-monitoring-hands-on-1/
sh monitoring-1-create-stack.sh 

(任意)リソースの確認

実際に起動しているリソースの確認

(任意)EC2を見てみる

作成しているEC2の情報を見てみてください

https://ap-northeast-1.console.aws.amazon.com/ec2/home

(任意)RDSを見てみる

作成しているRDSの情報を見てみてください。

https://ap-northeast-1.console.aws.amazon.com/rds/home

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home

Alarm

設定したしきい値に基づいて通知をする際に利用します

Logs

EC2やRDS、Lambdaといった各サービスから連携されるログの収集先となります

Metrics

Logsで収集した結果を元にグラフで可視化する際に利用します

(任意)その他

  1. X-Ray traces:構築したサーバレスサービス間のIOなどボトルネックを洗い出す際に利用します
  2. EventsEventBridge Rulesに統合されていますが、Cron式などで所定の時間に起動させたいなどの設定する際に利用します
  3. Application Signals:自前のアプリケーションを外形監視したい、結合状況を可視化したいといった際に利用します
  4. Network monitoring:世界のインターネットで発生している障害状況を確認する際に利用しま
  5. Insights:LambdaやEC2などより詳細に調査する際に利用します

Cloudformationで作成されたリソースの確認

Outputs(出力)タブ

https://ap-northeast-1.console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/getting-started

Stacks > monitoring-1

以下の4つの情報をご自身のメモアプリなどに転記してください

  1. EC2WebServer01:CloudWatchでLogを確認する際に識別するインスタンスIDとなります
  2. EC2WebServer01DNS:WordPressの初期設定を行うURLとなります
  3. EC2WebServer02:CloudWatchでLogを確認する際に識別するインスタンスIDとなります
  4. EC2WebServer02DNS:WordPressで初期設定後にアクセスするURLとなります
  5. RDSEndpointAddress:WordPressのデータベースに設定するURLとなります

WordPressの初期設定

EC2WebServer01DNS のURLにアクセスしてください

設定値

設定値

EC2のディスク使用率が90%以上のときにアラートを発報する

Alarmにアクセス

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#alarmsV2:

アラームの作成 > メトリクスの選択 に進みます

Metrics > CWAgent に進みます

CWAgent > ImageId, InstanceId, InstanceType, device, fstype, path に進みます

設定値

以下のような選択をする

左端のチェックボックスに☑を入れて、Select metricに進みます

設定値

次へ に進みます

設定値

以下のように設定します

トピックの作成を押下し次へ に進みます

設定値

次へ に進みます

アラームの作成 に進みます

入力したメールアドレスに、SNSから確認メールが届いているので Confirm subscriptionしてください

EC2のaccess_log, error_logを確認する

Logsにアクセス

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logsV2:log-groups

wordpress_access_log > 保持 > 失効しない を押す

1か月(30日) を選択して、 保存 を押す

アクセスログを表示

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logsV2:log-groups/log-group/wordpress_access_log

ログストリームがEC2のインスタンスごとに設定されている(今回のハンズオンにおいて)

参考:

ウィザードを使用して CloudWatch エージェント設定ファイルを作成する

保存期間

法令、ガイドラインなど

1ヶ月間

刑事訴訟法 - 第百九十七条の3

3ヶ月間

サイバー犯罪に関する条約(略称:サイバー犯罪条約)(通称:ブダペスト条約)- 第十六条 2

12ヶ月間(1年間)

PCIDSS v4.0 - 10.5.1

Successful SIEM and Log Management Strategies for Audit and Compliance - Discussion

36ヶ月間(3年間)

不正アクセス行為の禁止等に関する法律の時効に合わせて

60ヶ月間(5年間)

金融商品取引法 - 25条の期間に合わせて

・電子計算機損壊等業務妨害罪の時効に合わせて

84ヶ月(7年間)

下記3つの時効に合わせて

・電子計算機使用詐欺罪

・詐欺罪

・窃盗罪

120ヶ月(10年間)

・『不当利得返還請求』等、2020年改正前民法上の請求権期限

商法19条(旧商法36条)

引用:ログの保持期間の目安についてまとめられている資料があるので2023年2月時点で照らし合わせる

EC2のaccess_logを分析する

Logs Insightにアクセス

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logsV2:logs-insights

特に変更せずに クエリの実行 を押す

Query Sample

parse '* - * [*] "* * *" * * * *' as host, identity, dateTimeString, httpVerb, url, protocol, statusCode, bytes, referrer, userAgent
| filter statusCode like /(4\d\d)/ 

Amazon Q - 生成 AI 搭載アシスタント の登場により、

Query Generator を押して、 プロンプトを 英語 で入力してください

新しいクエリを生成 を押すと、クエリが置き換わります

英語が苦手な方は DeepL Translate を使ってみてください

例)

Give me searching for HTTP status code 200.

(HTTPのステータスコードが200のものを検索してください。)

参考:サポートされるログと検出されるフィールド - Amazon CloudWatch Logs

WordPressのダッシュボードを作成する

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#dashboards/

ダッシュボードの作成 を押す

設定値

EC2のCPU使用率を可視化する

線 を選択して 次へ を押す

EC2 > インスタンス別メトリック を選択する

検索窓 に 「 CPU 」と入力し絞り込む

設定値

ウィジェットの作成 を押す

🖊 アイコンを押すと名前が変更できる(今回は変更しません)

テキストウィジェットを追加する

右端にある ➕ を押す

その他のコンテンツタイプ を選択する

テキスト/画像... がデフォルトで選択されているので 次へ を押す

マークダウンの枠に以下の文字列をコピー・アンド・ペーストする

Markdown Sample

# WordPress 運用者向け資料

## 公式ドキュメント

*  [CloudWatch Logs - ウィザードを使用して CloudWatch エージェント設定ファイルを作成する](https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file-wizard.html).

[button:Emergency](https://jaws-ug.jp/) 

ウィジェットの追加 を押す

横幅を調整する

右上の 自動保存:オフ が標準になっているのでオンにする

再度EC2のCPU使用率を可視化するウィジェットを追加する

ウィジェットの位置を調整する

クエリの結果を可視化する

ウィジェットの追加で ログ > ログテーブル を選択して 次へ

クエリを特に修正することなく実行して、ウィジェットの作成 を押す

設定値

ダッシュボードを保存 を押す

各サービスには標準のダッシュボードが用意されている

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#dashboards?listOptions=~(tab~'service)

EC2を選択する

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#home:dashboards/EC2

リソースグループを作成する

リソースグループに移動する

https://ap-northeast-1.console.aws.amazon.com/resource-groups/home?region=ap-northeast-1#

リソースグループの作成 を押す

設定値

グループを作成 を押す

CloudWatchの画面に戻りリロード(F5)するとリソースグループが表示される

EC2を停止したときの通知を作成する

CloudWatchのイベントからアクセスする

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#rules:

https://ap-northeast-1.console.aws.amazon.com/events/home?region=ap-northeast-1#/rules?redirect_from_cwe=true

ルールを作成 を押す

設定値

設定値

設定値

次へを押す

次へ を押す

ルールの作成 を押す

EC2に移動する

https://ap-northeast-1.console.aws.amazon.com/ec2/home?region=ap-northeast-1#Instances:instanceState=running

monitoring-1-WebServer01 を停止する

インスタンスを停止 (インスタンスを終了ではない)を押す

以下のようなメールが届いていれば設定完了している

リソースを削除する

CloudFormationにアクセス

https://ap-northeast-1.console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks

monitoring-1 のチェックを押し、削除を押す

削除 を押す

CloudWatchにアクセス

Alarms

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#alarmsV2:

Dashboards

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#dashboards/

Logs

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logsV2:log-groups

EventBridgeにアクセス

https://ap-northeast-1.console.aws.amazon.com/events/home?region=ap-northeast-1#/rules?redirect_from_cwe=true

SNSにアクセス

https://ap-northeast-1.console.aws.amazon.com/sns/v3/home?region=ap-northeast-1#/topics

S3にアクセス

※以降の手順はAWSアカウントで初めてCloudFormationを利用した方向けです。

※普段からCloudFormationを利用されている場合、S3バケット内の対象yamlファイル「monitoring-1.yaml」のみ削除してください。

https://ap-northeast-1.console.aws.amazon.com/s3/home?region=ap-northeast-1#