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. 2 鈴木 正樹 ・Mobage のサーバーサイド運用・管理 ・AWS

    を用いたソリューション提案・実践 ・Perl/AWS 全般/IaC/JavaScript/TypeScript etc. DeNA ソリューション事業本部 オープンプラットフォーム 事業部 ゲームプラットフォーム部 サーバーグループ https://github.com/smt7174 @makky12(SUZUKI Masaki@クラウドエンジニア) https://makky12.hatenablog.com © DeNA Co., Ltd. 自己紹介
  2. © DeNA Co., Ltd. 3 アジェンダ 現在の構成と課題 CloudWatch について CloudWatch

    エージェントについて アラーム通知について&最終的な構成 5 4 6 補足情報・まとめ・宣伝 3 対応方法 1 2
  3. © DeNA Co., Ltd. 4 1 • 本スライドで紹介する AWS サービスなどの情報は、2023年3月19日現在のものです

    ◦ 今後、変更になる可能性があります • 本スライドの内容は、あくまで我々の環境での導入事例です ◦ これがベストプラクティスとは限りません ◦ 環境・条件などによっては、適用できないケースもあります • 文字数の関係上、AWSサービス先頭の「AWS」「Amazon」は省略しています ◦ AWS Lambda → Lambda ◦ Amazon S3 → S3 etc. ※ 発表に際して
  4. © DeNA Co., Ltd. 6 • 2018年〜2021年に、弊社環境をオンプレミスからクラウドに移行 • 詳細は AWS

    Summit Online 2021 基調講演 を参照 前提:オンプレミスからクラウドへ 1
  5. © DeNA Co., Ltd. 7 4 現在のMobageの構成 • AWS の

    VPC + EC2 で稼働 • 右図のような構成 ◦ VPC + EC2 のよくある構成 • 各 EC2 のログ(赤枠内)を内製ア プリで監視 7 2
  6. © DeNA Co., Ltd. 8 1 • 監視アプリの運用コスト ◦ 監視アプリ自体も運用管理・監視が必要

    ◦ 監視する EC2 の数が膨大 • 「状態監視」ができない ◦ 「障害が発生し続けているか」を監視できていない ▪ 現在は「各計測点単発での監視」(=しきい値監視)しかできていない ◦ Mobage の障害の特性上「発生し続けているか」の監視(=状態監視)が必須 ◦ 詳細は次項にて説明 問題点 3
  7. © DeNA Co., Ltd. 9 1 • 突発的に1回しきい値をまたいだだけの場合(=バースト)は NG にしたくない

    ◦ 「状態監視」ならば可能だが、「しきい値監視」では不可能 • 下記のような「一時的な」障害に対応できない ◦ 一時的なアクセス急上昇(ゲームのイベント公開直後など) ◦ 定期バッチ実行・メンテナンス明けの一斉アクセスによる一時的な負荷上昇 etc. 補足:しきい値監視と状態監視の違い しきい値監視(1回でもしきい値を またいだらアラーム発生) 状態監視(複数回連続してしきい値 をまたいだ場合のみアラーム発生) 4
  8. © DeNA Co., Ltd. 10 1 • 前項のような「一時的な現象」(=すぐにおさまる)でも、対応が必要 • 本来工数を使うべき作業に工数を使えない

    ◦ Mobage機能追加・改修など、品質や売上に直結する作業 • 時間外対応・休日対応などによる、メンバーへの影響 ◦ ON/OFF モードの切り替えが難しい ◦ モチベーション・メンタルヘルスへの影響 etc. 弊害 5
  9. © DeNA Co., Ltd. 12 1 • AWS の各種(マネージド)リソースを用いることで対応 ◦

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

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

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

    「アラームを実行するデータポイ ント」で指定可能 ◦ 「m回中n回」のような指定も可能 • アプリとしての運用管理が不要 ◦ 設定さえ行えばOK ◦ 設定は CloudFormation のような IaC(Infrastructure as Code)を活用 16 2
  13. © DeNA Co., Ltd. 18 1 CloudWatch エージェントとは • EC2のログを

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

    • 監視対象の全 EC2 に対し、Run Command 1回で反映可能 ◦ グループ登録が必要(リソース種別、タグによる一括指定可能) • 設定値は SSM のパラメータストアに保管可能 ◦ パラメータストアの設定をRun Command 1回で全 EC2 に一括適用可能 • 結果として、導入&運用管理工数が大幅に削減できる 2
  15. © DeNA Co., Ltd. 20 2 メリット:クロスアカウント対応 • 送信元 EC2

    と違うアカウントの CloudWatch Logs をログ送信先に指定可能 ◦ 「1つの監視用アカウントで一括監視」という運用が可能 • クロスアカウント対応も、下記の IAM Role 設定のみで可能 (Assume Role) ◦ 送信元および送信先での IAM Role 設定 ◦ 送信元 CloudWatch エージェントで、送信先 IAM Role の ARN 指定 • 参考:別のアカウントへのメトリクスとログの送信 3
  16. © 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
  17. © DeNA Co., Ltd. 23 4 最終的な構成 • 監視対象の EC2

    に CloudWatch エー ジェントをインストール • 対象のログを監視用アカウントの CloudWatch Logs に送信 • CloudWatch Alarm が監視し、障害 発生&収束時に Slack チャンネルに 自動投稿 23 2
  18. © DeNA Co., Ltd. 25 2 CloudWatch エージェント独自のメトリクス収集 • CloudWatch

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

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

    CloudWatch エージェントにより、監視を完全に AWS 化 • AWSリソースを活用し、可能な作業は AWS に移行 ◦ 本来行うべき作業に注力できる体制を作る • 今回はあくまで一例ですが、何かのきっかけになれば幸いです 3
  21. © DeNA Co., Ltd. 28 Twitter @DeNAxTech をフォローしよう! 技術を徹底的に磨き、積み上げ、試行錯誤を繰り返しながら、 幅広いチャレンジを続ける

    DeNA のエンジニア。 彼らの考え方を見て面白いと思ってもらえるように、彼らの発信について 短く要約してお伝えしてます。ぜひ Twitter フォローお願いします!!
  22. © DeNA Co., Ltd. 30 DeNA Engineering
 🔎 DeNAについてもっと知りたい方は 


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

  23. © DeNA Co., Ltd. 31 Twitter @DeNAxTech をフォローしよう! 技術を徹底的に磨き、積み上げ、試行錯誤を繰り返しながら、 幅広いチャレンジを続ける

    DeNA のエンジニア。 彼らの考え方を見て面白いと思ってもらえるように、彼らの発信について 短く要約してお伝えしてます。ぜひ Twitter フォローお願いします!!
  24. © DeNA Co., Ltd. 32 Mobage では、Perl エンジニアを募集中です! Mobageでは、Perl エンジニアを積極募集中です。

    MobageやPerlに興味がある方・携わりたい方、お待ちしています! ※ YAPC::Kyoto 2023 トップページにもバナーあります https://herp.careers/v1/denacareer/TWYBVkIr4FA_