Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

© 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. 自己紹介

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

© 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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

© DeNA Co., Ltd. 29 DeNA ENGINEERING
 DeNAのエンジニアの技術・文化・チーム等を伝えるポータルサイトです。 
 様々な技術発信や、カルチャーの紹介をしています。 


Slide 30

Slide 30 text

© DeNA Co., Ltd. 30 DeNA Engineering
 🔎 DeNAについてもっと知りたい方は 
 勉強会やブログなどの最新情報を得るには 
 @DeNAxTech 


Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

© DeNA Co., Ltd. 33