2021/7/29 JAWS-UG朝会 #23 資料
Amazon CloudWatchを勉強して水分補給アラームを作ってみた2021/7/29JAWS-UG 朝会
View Slide
自己紹介氏名 :藤田 直幸twitter:@amarelo_n24 ※ コーヒー焙煎人兼エンジニア職場 :都内にある企業の情報セキュリティ統制担当取得済AWS認定 :CLF、SAA、DVA(7/5合格!!)今後の受験予定 :SOA-C02(9月予定)、SCS(年内?)好きなAWSサービス:AWS CLI、AWS CloudShell、Cloud9好きなコーヒー :ブラジル ブルボンアマレロ
1.はじめに2.Amazon CloudWatch とは3.給水アラームを作ってみた4.まとめ話すこと
1.はじめに
SysOpsアドミニストレーターアソシエイト(SOA-C02)の勉強をはじめました。
出題分野で一番比重が多いのは「監視、ロギング、および解決」※AWS 認定 SysOps アドミニストレーター - アソシエイト (SOA-C02) 試験ガイドより
監視、ロギングはまだまだ理解が弱い…
おそらく肝となるサービスはCloudWatch(だろう)!CloudWatch勉強しよう!
夏になると、熱くなって仕事中に水分不足を感じることが多々…
CloudWatchの実学を兼ねてCloudWatchで給水アラームを作ってみよう!!
2.Amazon CloudWatch 各種サービス
AWSリソースとAWSで実行されているアプリケーション、オンプレミスで実行されているサービスをリアルタイムでモニタリングするサービスです。メトリクスやログの収集・追跡をし、あらかじめ定義しておいたしきい値を超過した時に、通知を送信したり、リソースを変更するためのアラームを作成します。(1)Amazon CloudWatch とは
CloudWatchは、主に「メトリクス」「名前空間」「ディメンション」で構成されています。①名前空間メトリクスのコンテナであり、AWS/<サービス名>で表示される。(例:AWS/EC2)異なるアプリケーションのメトリクスが誤って同じ統計情報に集計されないようにするため、異なる名前空間のメトリクスは相互に切り離されている。(1)Amazon CloudWatch とは
②メトリクス・CloudWatchに発行された時系列のデータポイントのセット。・データポイントにはタイムスタンプと測定単位がある。・同リージョン内で稼働しているサービスのメトリクスのみ集計。・標準メトリクスとカスタムメトリクスがある。前者は無料、後者は有料。・デフォルトで取得している間隔:1分・メトリクスを意図的に削除はできないが、一定期間を過ぎると自動で削除される。1分ごとのデータポイントを 15 日間保存5 分ごとのデータポイントを 63 日間保存1 時間ごとのデータポイントを 455 日間保存(1)Amazon CloudWatch とは
③ディメンションメトリクスを一意に識別する名前/値のペア(例:インスタンス名/インスタンスID)(1)Amazon CloudWatch とは
マネジメントコンソールのCloudWatch画面より、すべてのメトリクスから名前空間を選択します。(2)メトリクスの確認方法
グラフ表示させたいメトリクス名とディメンション(EC2の場合、インスタンス名とインスタンスIDの組み合わせ)を選択して確認します。(2)メトリクスの確認方法ディメンションメトリクス
メトリクスの監視状況をダッシュボードに表示させることもできます。(2)メトリクスの確認方法
メトリクスを監視して、条件に合致したら実行するアクションを定義します。定義されたしきい値を超えたら、SNSトピックに通知を送ったり、 EC2 アクションまたは Auto Scaling アクションを実行したり、Systems Manager でOpsItem またはインシデントを作成します。(3)CloudWatch アラームAmazon CloudWatchAlarm ClientAmazon Elastic ComputeCloud (Amazon EC2)EC2インスタンスのメトリクスを監視メール通知等しきい値超えたらアラームAmazon SNSPublish
数値の遷移をグラフで確認ができ、ダッシュボードに追加することもできます。(3)CloudWatch アラーム
AWSサービスまたはオンプレミスサービスのログ集約、ログ監視、ログ保存をして、運用負荷軽減と分析をしやすくします。定義した条件に合致したら、アラームを送信することもできます。ログデータの保存期間は1日~永久保存で設定できます。また、S3にログ保存することも可能です。(4)CloudWatch LogsAmazon EC2Alarmメール通知等Amazon SNS ClientLogsAmazon S3publishログ保存ログ集約条件合致したらアラーム
Log Insightsで、CloudWatch Logsのログデータを専用のクエリ言語にて検索して分析することもできます。マネジメントコンソールよりCloudWatch の画面を開き、「Log Insights」から使うことができます。(4)CloudWatch Logs
ルールに指定したイベントパターンを検知した場合、または指定したスケジュールに合致したら、ターゲットに処理を指示します。ターゲットにはLambda、SNS、SQS、EC2などを指定できます。ルールとターゲットは同じリージョンに存在する必要があります。※現在は、同じ基盤となるサービスと API を使った、Amazon EventBridgeでも機能が提供されています。(5)CloudWatch EventsEvent(time-based)メール通知等Amazon SNS ClientEvent(event-based)スケジュールで実行指示AWS Cloudイベント検知実行指示
スケジュールは、Cron式またはRate式(分、時間、日)で設定します。Cron式の文字列サンプルは以下の通りです(ユーザーガイドより)。なお、Cron式で指定する時間はUTCで判定されるのため、日本時間の場合は、9時間の時差を考慮して設定する必要があります。(5)CloudWatch Events
3.給水アラームを作ってみた
CloudWatch Events から2時間おきにSNSからメール送信(1)構成その1Event(time-based)Amazon SNS Email notification Mobile clientAWS Cloud2時間おきに実行指示
①SNSトピックを作成し、サブスクリプションを作成します。(2)構成その1設定(概要)
②CloudWatch Eventsにて、Cron式のスケジュールでSNSに実行指示するルールを作成します。(2)構成その1設定(概要)
③設定した時間にSNSからのメールを受信したことを確認して完成です。件名:AWS Notification Message(2)構成その1設定(概要)②で指定したJSONが表示されています。
イベント通知は分かった。監視とアラームを組み込むことはできないか?
CloudWatch Event からSNSへの実行回数の合計が一定回数を超えたら、AWS ChatbotからSlackにメッセージを出す。(3)構成その2Event(time-based)Amazon SNS Email notification Mobile clientAWS Cloud2時間おきに実行指示AlarmAmazon CloudWatchAmazon SNS AWS Chatbot
①Chatbotからの通知確認をするために、まずはCloudWatchにてSNSのメトリクス「NumberOfMessagesPublished」の5分の合計が1件になったら、SNSに実行指示するよう条件設定します。(3)構成その2設定(概要)
②Chatbotにてログ記録とSlackチャネルを設定(3)構成その2設定(概要)バージニア北部にロググループが作成される。削除漏れがないよう、確認後にすぐに削除した。
③ChatbotからCloudWatchメトリクスにアクセスできるようIAMロール作成(3)構成その2設定(概要)
④事前に作成したChatbot用のSNSトピックを設定します。(3)構成その2設定(概要)
⑤試験的にChatbotに送られるか確認(3)構成その2設定(概要)
送信確認はできたけど、上手い具合のタイミングに送信できるよう調整に悩んでいる。。。※素直に別のイベント通知作った方が良さそう…
あと、アラームメールの件名をわかりやすくしたい。。。
Lambdaを間に挟まないとできない?
時間切れになってしまったので、もう少し調べて実装してみたい。※Python何もわからん…
4.まとめ
・水分補給アラームを作ることで、CloudWatchでのメトリクス監視、アラート設定、イベント通知を学ぶことはできた。・CloudWatch Logsを活用した仕組みも考えたい。・CloudWatch からSNSへの連携、Chatbotへの連携ができた。⇒特にChatbot触れられて良かった。・SNSから送られるメールの件名をわかりやすくしたい。⇒Lambdaを間に挟まないとできない?Python理解したい。・CloudWatchそのものもそうだが、監視設計をもっと理解したい。まとめ
◆ユーザーガイドhttps://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html◆ AWS Hands-on for Beginners 監視編 サーバーのモニタリングの基本を学ぼうhttps://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-monitoring-2020-reg-event-LP.html?trk=aws_introduction_page◆BlackBelt資料https://d1.awsstatic.com/webinars/jp/pdf/services/20190326_AWS-BlackBelt_CloudWatch.pdf参考文献