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

CloudWatchエージェントとCloudWatchで行うアプリ監視

Makky12
March 19, 2023

 CloudWatchエージェントとCloudWatchで行うアプリ監視

2023/3/19(日) に行われたYAPC::KYOYO 2023における、私の発表「CloudWatchエージェントとCloudWatchで行うアプリ監視」の発表資料になります。 #yapcjapan #yapc_do

https://yapcjapan.org/2023kyoto/

※(2023/4/29追記) 上記資料の訂正
25ページ目に「CloudWatchエージェント独自のメトリクス」として「CPU使用率」という記載がありますが、CPU使用率はCloudWatchエージェントを使用しなくても、CloudWatch上でメトリクス「CPUUtilization」の値で確認できます。

Makky12

March 19, 2023
Tweet

More Decks by Makky12

Other Decks in Technology

Transcript

  1. © DeNA Co., Ltd. 1
    CloudWatch エージェントと
    CloudWatch で行うアプリ監視
    鈴木 正樹(株式会社ディー・エヌ・エー)

    View Slide

  2. © DeNA Co., Ltd. 2
    鈴木 正樹
    ・Mobage のサーバーサイド運用・管理
    ・AWS を用いたソリューション提案・実践
    ・Perl/AWS 全般/IaC/JavaScript/TypeScript etc.
    DeNA ソリューション事業本部 オープンプラットフォーム
    事業部 ゲームプラットフォーム部 サーバーグループ
    https://github.com/smt7174
    @makky12(SUZUKI [email protected]クラウドエンジニア)
    https://makky12.hatenablog.com
    © DeNA Co., Ltd.
    自己紹介

    View Slide

  3. © DeNA Co., Ltd. 3
    アジェンダ
    現在の構成と課題
    CloudWatch について
    CloudWatch エージェントについて
    アラーム通知について&最終的な構成
    5
    4
    6 補足情報・まとめ・宣伝
    3
    対応方法
    1
    2

    View Slide

  4. © DeNA Co., Ltd. 4
    1
    ● 本スライドで紹介する AWS サービスなどの情報は、2023年3月19日現在のものです
    ○ 今後、変更になる可能性があります
    ● 本スライドの内容は、あくまで我々の環境での導入事例です
    ○ これがベストプラクティスとは限りません
    ○ 環境・条件などによっては、適用できないケースもあります
    ● 文字数の関係上、AWSサービス先頭の「AWS」「Amazon」は省略しています
    ○ AWS Lambda → Lambda
    ○ Amazon S3 → S3 etc.
    ※ 発表に際して

    View Slide

  5. © DeNA Co., Ltd. 5
    1. 現状の構成と課題

    View Slide

  6. © DeNA Co., Ltd. 6
    ● 2018年〜2021年に、弊社環境をオンプレミスからクラウドに移行
    ● 詳細は AWS Summit Online 2021 基調講演 を参照
    前提:オンプレミスからクラウドへ
    1

    View Slide

  7. © DeNA Co., Ltd. 7
    4 現在のMobageの構成
    ● AWS の VPC + EC2 で稼働
    ● 右図のような構成
    ○ VPC + EC2 のよくある構成
    ● 各 EC2 のログ(赤枠内)を内製ア
    プリで監視
    7
    2

    View Slide

  8. © DeNA Co., Ltd. 8
    1
    ● 監視アプリの運用コスト
    ○ 監視アプリ自体も運用管理・監視が必要
    ○ 監視する EC2 の数が膨大
    ● 「状態監視」ができない
    ○ 「障害が発生し続けているか」を監視できていない
    ■ 現在は「各計測点単発での監視」(=しきい値監視)しかできていない
    ○ Mobage の障害の特性上「発生し続けているか」の監視(=状態監視)が必須
    ○ 詳細は次項にて説明
    問題点
    3

    View Slide

  9. © DeNA Co., Ltd. 9
    1
    ● 突発的に1回しきい値をまたいだだけの場合(=バースト)は NG にしたくない
    ○ 「状態監視」ならば可能だが、「しきい値監視」では不可能
    ● 下記のような「一時的な」障害に対応できない
    ○ 一時的なアクセス急上昇(ゲームのイベント公開直後など)
    ○ 定期バッチ実行・メンテナンス明けの一斉アクセスによる一時的な負荷上昇 etc.
    補足:しきい値監視と状態監視の違い
    しきい値監視(1回でもしきい値を
    またいだらアラーム発生)
    状態監視(複数回連続してしきい値
    をまたいだ場合のみアラーム発生)
    4

    View Slide

  10. © DeNA Co., Ltd. 10
    1
    ● 前項のような「一時的な現象」(=すぐにおさまる)でも、対応が必要
    ● 本来工数を使うべき作業に工数を使えない
    ○ Mobage機能追加・改修など、品質や売上に直結する作業
    ● 時間外対応・休日対応などによる、メンバーへの影響
    ○ ON/OFF モードの切り替えが難しい
    ○ モチベーション・メンタルヘルスへの影響 etc.
    弊害
    5

    View Slide

  11. © DeNA Co., Ltd. 11
    2. 対応方法

    View Slide

  12. © DeNA Co., Ltd. 12
    1
    ● AWS の各種(マネージド)リソースを用いることで対応
    ○ 「クラウド使ってるなら、そのリソースをどんどん活用しよう」という考え
    ● AWS リソースに任せられる業務は任せる(任せたい)
    ○ 本来工数を使うべき作業に工数を集中させる
    ○ AWS の考えにある「プロダクトの開発作業」にフォーカスする
    ● 退屈なことは python AWSにやらせよう
    ○ 退屈だけど、重要な作業ですけどね...
    対応:AWS リソースを活用
    1

    View Slide

  13. © DeNA Co., Ltd. 13
    1
    ● CloudWatch による監視の導入
    ○ ログ管理(CloudWatch Logs)
    ○ 独自の監視項目設定(メトリクスフィルタ)
    ○ 監視&アラーム発火(CloudWatch Alarm)
    ● CloudWatch エージェントによるEC2ログ転送
    ○ EC2 内のログを CloudWatch Logs に転送
    ● SNS&Chatbot による Slack 通知
    ○ Slack チャンネルへの自動メッセージ送信
    導入したリソース
    2

    View Slide

  14. © DeNA Co., Ltd. 14
    3. CloudWatchについて

    View Slide

  15. © DeNA Co., Ltd. 15
    1 CloudWatch とは
    ● AWS でアプリ、およびAWSリソースの監視を行う機能
    ● 今回は下記の機能を使用(他にもあります)
    ○ Logs:ログの保管・管理
    ○ Alarm:監視・アラーム状態設定・アラーム発生など
    ● 監視対象の項目(メトリクス)を監視(例:EC2 のネットワークトラフィックなど)
    ○ 多くのメトリクスは、あらかじめ用意されている
    ○ メトリクスの自作も可能(「メトリクスフィルタ」など)
    ● 参考:Amazon CloudWatch
    1

    View Slide

  16. © DeNA Co., Ltd. 16
    4 CloudWatchのメリット
    ● 状態監視ができる
    ○ 「アラームを実行するデータポイ
    ント」で指定可能
    ○ 「m回中n回」のような指定も可能
    ● アプリとしての運用管理が不要
    ○ 設定さえ行えばOK
    ○ 設定は CloudFormation のような
    IaC(Infrastructure as Code)を活用
    16
    2

    View Slide

  17. © DeNA Co., Ltd. 17
    4. CloudWatch エージェントについて

    View Slide

  18. © DeNA Co., Ltd. 18
    1 CloudWatch エージェントとは
    ● EC2のログを CloudWatch Logs に送信するツール(AWS 公式ツール)
    ● 下記が可能
    ○ ログファイルの指定・ログ内容でのフィルタリング
    ○ 送信先 CloudWatch Logs のロググループ・ログストリームの指定
    ● Systems Manager(以下「SSM」)による操作が可能(インストール・設定等)
    ● クロスアカウント対応(EC2 と CloudWatch Logs のアカウントが別でも送信可能)
    ● 参考:CloudWatch エージェントを使用して Amazon EC2 インスタンスとオンプレミス
    サーバーからメトリクスとログを収集する
    1

    View Slide

  19. © DeNA Co., Ltd. 19
    2 メリット:SSMによる操作が可能
    ● SSMの「Run Command」によるインストール・設定変更など各種操作が可能
    ● 監視対象の全 EC2 に対し、Run Command 1回で反映可能
    ○ グループ登録が必要(リソース種別、タグによる一括指定可能)
    ● 設定値は SSM のパラメータストアに保管可能
    ○ パラメータストアの設定をRun Command 1回で全 EC2 に一括適用可能
    ● 結果として、導入&運用管理工数が大幅に削減できる
    2

    View Slide

  20. © DeNA Co., Ltd. 20
    2 メリット:クロスアカウント対応
    ● 送信元 EC2 と違うアカウントの CloudWatch Logs をログ送信先に指定可能
    ○ 「1つの監視用アカウントで一括監視」という運用が可能
    ● クロスアカウント対応も、下記の IAM Role 設定のみで可能 (Assume Role)
    ○ 送信元および送信先での IAM Role 設定
    ○ 送信元 CloudWatch エージェントで、送信先 IAM Role の ARN 指定
    ● 参考:別のアカウントへのメトリクスとログの送信
    3

    View Slide

  21. © DeNA Co., Ltd. 21
    5. アラーム通知について&
    最終的な構成

    View Slide

  22. © DeNA Co., Ltd. 22
    1 アラーム通知の方法
    ● 下記サービスを利用する
    ○ SNS:各種通知(SMS、プッシュ通知など)に利用するメッセージサービス
    ○ Chatbot:チャットツールへのメッセージ送信を行う
    ■ 現在は Slack と Amazon Chime のみ対応
    ● 下図のようなフローを作成することで、アラームを Slack に通知できる
    ● 参考:AWS ChatbotでCloudWatchアラームをslackへ通知しよう!!
    EC2
    (CloudWatch
    エージェント )
    CloudWatch Logs CloudWatch
    Alarm
    SNS Chatbot Slackチャンネル
    1

    View Slide

  23. © DeNA Co., Ltd. 23
    4 最終的な構成
    ● 監視対象の EC2 に CloudWatch エー
    ジェントをインストール
    ● 対象のログを監視用アカウントの
    CloudWatch Logs に送信
    ● CloudWatch Alarm が監視し、障害
    発生&収束時に Slack チャンネルに
    自動投稿
    23
    2

    View Slide

  24. © DeNA Co., Ltd. 24
    6. 補足情報&まとめ

    View Slide

  25. © DeNA Co., Ltd. 25
    2 CloudWatch エージェント独自のメトリクス収集
    ● CloudWatch エージェントを使用することで、独自のメトリクスを収集・送信可能
    ○ CloudWatch 標準には存在しないメトリクス
    ● 独自のメトリクスは、主に「EC2 そのものの状態」に関するもの
    ○ (例)CPU 使用率、メモリ使用率、ディスク使用率 etc.
    ○ 「EC2 自体の監視」を行うのに便利
    ● ログデータの送信とは別に、API 実行の料金が発生する
    ○ 1,000リクエストごとに0.01USD(=1.32JPY)
    ● 参考:CloudWatch エージェントにより収集されるメトリクス
    1

    View Slide

  26. © DeNA Co., Ltd. 26
    2 CloudWatchのクロスアカウント対応
    ● 昨年12月に、CloudWatch で別アカウントの監視が可能になった
    ● 「監視用アカウントで一括監視」という運用が可能に
    ○ CloudWatch エージェントは元々クロスアカウント対応済み
    ● ログ監視、およびメトリクス監視はクロスアカウントによる追加料金なし
    ● X-Ray などでのトレースは1アカウントまで追加料金なし
    ● 参考:New – Amazon CloudWatch のクロスアカウントオブザーバビリティ
    2

    View Slide

  27. © DeNA Co., Ltd. 27
    2 まとめ
    ● CloudWatch & CloudWatch エージェントにより、監視を完全に AWS 化
    ● AWSリソースを活用し、可能な作業は AWS に移行
    ○ 本来行うべき作業に注力できる体制を作る
    ● 今回はあくまで一例ですが、何かのきっかけになれば幸いです
    3

    View Slide

  28. © DeNA Co., Ltd. 28
    Twitter @DeNAxTech をフォローしよう!
    技術を徹底的に磨き、積み上げ、試行錯誤を繰り返しながら、
    幅広いチャレンジを続ける DeNA のエンジニア。
    彼らの考え方を見て面白いと思ってもらえるように、彼らの発信について
    短く要約してお伝えしてます。ぜひ Twitter フォローお願いします!!

    View Slide

  29. © DeNA Co., Ltd. 29
    DeNA ENGINEERING

    DeNAのエンジニアの技術・文化・チーム等を伝えるポータルサイトです。

    様々な技術発信や、カルチャーの紹介をしています。

    View Slide

  30. © DeNA Co., Ltd. 30
    DeNA Engineering
 🔎
    DeNAについてもっと知りたい方は

    勉強会やブログなどの最新情報を得るには
    
 @DeNAxTech 


    View Slide

  31. © DeNA Co., Ltd. 31
    Twitter @DeNAxTech をフォローしよう!
    技術を徹底的に磨き、積み上げ、試行錯誤を繰り返しながら、
    幅広いチャレンジを続ける DeNA のエンジニア。
    彼らの考え方を見て面白いと思ってもらえるように、彼らの発信について
    短く要約してお伝えしてます。ぜひ Twitter フォローお願いします!!

    View Slide

  32. © DeNA Co., Ltd. 32
    Mobage では、Perl エンジニアを募集中です!
    Mobageでは、Perl エンジニアを積極募集中です。
    MobageやPerlに興味がある方・携わりたい方、お待ちしています!
    ※ YAPC::Kyoto 2023 トップページにもバナーあります
    https://herp.careers/v1/denacareer/TWYBVkIr4FA_

    View Slide

  33. © DeNA Co., Ltd. 33

    View Slide