Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon CloudWatchを勉強して水分補給アラームを作ってみた

Amazon CloudWatchを勉強して水分補給アラームを作ってみた

2021/7/29 JAWS-UG朝会 #23 資料

amarelo_n24

July 29, 2021
Tweet

More Decks by amarelo_n24

Other Decks in Technology

Transcript

  1. Amazon CloudWatchを勉強して
    水分補給アラームを作ってみた
    2021/7/29
    JAWS-UG 朝会

    View Slide

  2. 自己紹介
    氏名 :藤田 直幸
    twitter:@amarelo_n24 ※ コーヒー焙煎人兼エンジニア
    職場 :都内にある企業の情報セキュリティ統制担当
    取得済AWS認定 :CLF、SAA、DVA(7/5合格!!)
    今後の受験予定 :SOA-C02(9月予定)、SCS(年内?)
    好きなAWSサービス:AWS CLI、AWS CloudShell、Cloud9
    好きなコーヒー :ブラジル ブルボンアマレロ

    View Slide

  3. 1.はじめに
    2.Amazon CloudWatch とは
    3.給水アラームを作ってみた
    4.まとめ
    話すこと

    View Slide

  4. 1.はじめに

    View Slide

  5. SysOpsアドミニストレーターアソシエイト(SOA-C02)の
    勉強をはじめました。

    View Slide

  6. 出題分野で一番比重が多いのは「監視、ロギング、および解決」
    ※AWS 認定 SysOps アドミニストレーター - アソシエイト (SOA-C02) 試験ガイドより

    View Slide

  7. 監視、ロギングはまだまだ理解が弱い…

    View Slide

  8. おそらく肝となるサービスはCloudWatch(だろう)!
    CloudWatch勉強しよう!

    View Slide

  9. 夏になると、熱くなって仕事中に
    水分不足を感じることが多々…

    View Slide

  10. CloudWatchの実学を兼ねて
    CloudWatchで給水アラームを作ってみよう!!

    View Slide

  11. 2.Amazon CloudWatch 各種サービス

    View Slide

  12. AWSリソースとAWSで実行されているアプリケーション、
    オンプレミスで実行されているサービスをリアルタイムで
    モニタリングするサービスです。
    メトリクスやログの収集・追跡をし、あらかじめ定義して
    おいたしきい値を超過した時に、通知を送信したり、
    リソースを変更するためのアラームを作成します。
    (1)Amazon CloudWatch とは

    View Slide

  13. CloudWatchは、主に「メトリクス」「名前空間」「ディメンション」
    で構成されています。
    ①名前空間
    メトリクスのコンテナであり、AWS/<サービス名>で表示される。
    (例:AWS/EC2)
    異なるアプリケーションのメトリクスが誤って同じ統計情報に集計されない
    ようにするため、異なる名前空間のメトリクスは相互に切り離されている。
    (1)Amazon CloudWatch とは

    View Slide

  14. ②メトリクス
    ・CloudWatchに発行された時系列のデータポイントのセット。
    ・データポイントにはタイムスタンプと測定単位がある。
    ・同リージョン内で稼働しているサービスのメトリクスのみ集計。
    ・標準メトリクスとカスタムメトリクスがある。前者は無料、後者は有料。
    ・デフォルトで取得している間隔:1分
    ・メトリクスを意図的に削除はできないが、一定期間を過ぎると
    自動で削除される。
    1分ごとのデータポイントを 15 日間保存
    5 分ごとのデータポイントを 63 日間保存
    1 時間ごとのデータポイントを 455 日間保存
    (1)Amazon CloudWatch とは

    View Slide

  15. ③ディメンション
    メトリクスを一意に識別する名前/値のペア(例:インスタンス名/インスタ
    ンスID)
    (1)Amazon CloudWatch とは

    View Slide

  16. マネジメントコンソールのCloudWatch画面より、すべてのメトリクスから
    名前空間を選択します。
    (2)メトリクスの確認方法

    View Slide

  17. グラフ表示させたいメトリクス名とディメンション(EC2の場合、インスタン
    ス名とインスタンスIDの組み合わせ)を選択して確認します。
    (2)メトリクスの確認方法
    ディメンション
    メトリクス

    View Slide

  18. メトリクスの監視状況をダッシュボードに表示させることもできます。
    (2)メトリクスの確認方法

    View Slide

  19. メトリクスを監視して、条件に合致したら実行するアクションを定義します。
    定義されたしきい値を超えたら、SNSトピックに通知を送ったり、 EC2 アク
    ションまたは Auto Scaling アクションを実行したり、Systems Manager で
    OpsItem またはインシデントを作成します。
    (3)CloudWatch アラーム
    Amazon CloudWatch
    Alarm Client
    Amazon Elastic Compute
    Cloud (Amazon EC2)
    EC2インスタンスの
    メトリクスを監視
    メール通知等
    しきい値超え
    たらアラーム
    Amazon SNS
    Publish

    View Slide

  20. 数値の遷移をグラフで確認ができ、ダッシュボードに追加することもできます。
    (3)CloudWatch アラーム

    View Slide

  21. AWSサービスまたはオンプレミスサービスのログ集約、ログ監視、
    ログ保存をして、運用負荷軽減と分析をしやすくします。
    定義した条件に合致したら、アラームを送信することもできます。
    ログデータの保存期間は1日~永久保存で設定できます。
    また、S3にログ保存することも可能です。
    (4)CloudWatch Logs
    Amazon EC2
    Alarm
    メール通知等
    Amazon SNS Client
    Logs
    Amazon S3
    publish
    ログ保存
    ログ集約
    条件合致したら
    アラーム

    View Slide

  22. Log Insightsで、CloudWatch Logsのログデータを専用のクエリ言語にて
    検索して分析することもできます。
    マネジメントコンソールよりCloudWatch の画面を開き、「Log Insights」
    から使うことができます。
    (4)CloudWatch Logs

    View Slide

  23. ルールに指定したイベントパターンを検知した場合、または指定した
    スケジュールに合致したら、ターゲットに処理を指示します。
    ターゲットにはLambda、SNS、SQS、EC2などを指定できます。
    ルールとターゲットは同じリージョンに存在する必要があります。
    ※現在は、同じ基盤となるサービスと API を使った、
    Amazon EventBridgeでも機能が提供されています。
    (5)CloudWatch Events
    Event
    (time-based)
    メール通知等
    Amazon SNS Client
    Event
    (event-based)
    スケジュールで
    実行指示
    AWS Cloud
    イベント検知
    実行指示

    View Slide

  24. スケジュールは、Cron式またはRate式(分、時間、日)で設定します。
    Cron式の文字列サンプルは以下の通りです(ユーザーガイドより)。
    なお、Cron式で指定する時間はUTCで判定されるのため、日本時間の場合は、
    9時間の時差を考慮して設定する必要があります。
    (5)CloudWatch Events

    View Slide

  25. 3.給水アラームを作ってみた

    View Slide

  26. CloudWatch Events から2時間おきにSNSからメール送信
    (1)構成その1
    Event
    (time-based)
    Amazon SNS Email notification Mobile client
    AWS Cloud
    2時間おきに
    実行指示

    View Slide

  27. ①SNSトピックを作成し、サブスクリプションを作成します。
    (2)構成その1設定(概要)

    View Slide

  28. ②CloudWatch Eventsにて、Cron式のスケジュールでSNSに実行指示
    するルールを作成します。
    (2)構成その1設定(概要)

    View Slide

  29. ③設定した時間にSNSからのメールを受信したことを確認して完成です。
    件名:AWS Notification Message
    (2)構成その1設定(概要)
    ②で指定したJSONが表示さ
    れています。

    View Slide

  30. イベント通知は分かった。監視とアラームを
    組み込むことはできないか?

    View Slide

  31. CloudWatch Event からSNSへの実行回数の合計が一定回数を
    超えたら、AWS ChatbotからSlackにメッセージを出す。
    (3)構成その2
    Event
    (time-based)
    Amazon SNS Email notification Mobile client
    AWS Cloud
    2時間おきに
    実行指示
    Alarm
    Amazon CloudWatch
    Amazon SNS AWS Chatbot

    View Slide

  32. ①Chatbotからの通知確認をするために、まずはCloudWatchにてSNSの
    メトリクス「NumberOfMessagesPublished」の5分の合計が1件に
    なったら、SNSに実行指示するよう条件設定します。
    (3)構成その2設定(概要)

    View Slide

  33. ②Chatbotにてログ記録とSlackチャネルを設定
    (3)構成その2設定(概要)
    バージニア北部にロググループ
    が作成される。削除漏れがない
    よう、確認後にすぐに削除した。

    View Slide

  34. ③ChatbotからCloudWatchメトリクスにアクセスできるようIAMロール作成
    (3)構成その2設定(概要)

    View Slide

  35. ④事前に作成したChatbot用のSNSトピックを設定します。
    (3)構成その2設定(概要)

    View Slide

  36. ⑤試験的にChatbotに送られるか確認
    (3)構成その2設定(概要)

    View Slide

  37. 送信確認はできたけど、上手い具合のタイミングに
    送信できるよう調整に悩んでいる。。。
    ※素直に別のイベント通知作った方が良さそう…

    View Slide

  38. あと、アラームメールの件名をわかりやすくしたい。。。

    View Slide

  39. Lambdaを間に挟まないとできない?

    View Slide

  40. 時間切れになってしまったので、
    もう少し調べて実装してみたい。
    ※Python何もわからん…

    View Slide

  41. 4.まとめ

    View Slide

  42. ・水分補給アラームを作ることで、CloudWatchでのメトリクス監視、
    アラート設定、イベント通知を学ぶことはできた。
    ・CloudWatch Logsを活用した仕組みも考えたい。
    ・CloudWatch からSNSへの連携、Chatbotへの連携ができた。
    ⇒特にChatbot触れられて良かった。
    ・SNSから送られるメールの件名をわかりやすくしたい。
    ⇒Lambdaを間に挟まないとできない?Python理解したい。
    ・CloudWatchそのものもそうだが、監視設計をもっと理解したい。
    まとめ

    View Slide

  43. ◆ユーザーガイド
    https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/WhatIsCloud
    Watch.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
    参考文献

    View Slide

  44. View Slide