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

Mobageの監視環境を AWSで構築する話

Makky12
June 24, 2023

Mobageの監視環境を AWSで構築する話

2023-06-24(土) に開催された「Reject Day 2023」( #RejectDay2023 )における私の発表「Mobageの監視環境を AWSで構築する話」の発表資料になります。

※下記connpassの資料からもリンクを貼ってます。
https://connpass.com/event/282843/

Makky12

June 24, 2023
Tweet

More Decks by Makky12

Other Decks in Technology

Transcript

  1. © DeNA Co., Ltd. 1
    Mobageの監視環境を
    AWSで構築する話
    鈴木 正樹(株式会社ディー・エヌ・エー)

    View full-size slide

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

    View full-size slide

  3. © DeNA Co., Ltd. 3
    アジェンダ
    多数EC2運用での課題
    CloudWatch(監視)
    CloudWatch エージェント(ログ転送)
    SNS&Chatbot(Slack 通知)・最終的な構成
    5
    4
    6 補足情報・まとめ・宣伝
    3
    対応方法
    1
    2

    View full-size slide

  4. © DeNA Co., Ltd. 4
    1
    ● 本スライドで紹介する AWS サービスなどの情報は、2023年6月24日現在のものです
    ○ 今後、変更になる可能性があります
    ● 本スライドの内容は、あくまで我々の環境での導入事例です
    ○ これがベストプラクティスとは限りません
    ● 文字数の関係上、各AWSサービス先頭の「AWS」「Amazon」は省略しています
    ○ (例) AWS Chatbot → Chatbot、Amazon CloudWatch → CloudWatch etc.
    ● 本資料は、2023年3月19日に開催された「YAPC::Kyoto 2023」での登壇資料をベース
    に、Reject Day 2023向けに加筆修正したものになります
    発表に際して

    View full-size slide

  5. © DeNA Co., Ltd. 5
    1. 多数EC2運用での課題

    View full-size slide

  6. © DeNA Co., Ltd. 6
    ● スマホでゲームを中心に各種コンテンツを楽しめるSNS
    ● PC 向けの Yahoo! モバゲーもある
    ● https://www.mbga.jp/ (PC版)、 https://sp.mbga.jp/ (スマホ版)
    Mobage とは
    1

    View full-size slide

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

    View full-size slide

  8. © DeNA Co., Ltd. 8
    4 現在のMobageの構成
    ● AWS の VPC + EC2 で構成・稼働
    ○ VPC + EC2 のよくある構成
    ● 各 EC2 (赤枠内)のログを監視用
    内製アプリで監視
    ※ 実際のEC2の台数はもっと(という
    かめちゃくちゃ)多いです
    8
    3

    View full-size slide

  9. © DeNA Co., Ltd. 9
    1
    ● 監視アプリの運用コスト
    ○ 監視アプリ自体の運用管理・監視も必要(本末転倒な状態に)
    ○ 監視する EC2 の数が膨大(設定が手間、把握が大変)
    ● 「状態監視」(=ステートフル監視)ができない
    ○ 「障害が発生し続けているか」の監視ができない
    ■ 特性上「発生し続けている」ことの監視が必要
    ○ 短期的なアクセス集中によるバーストに対応できない
    ■ (例)ゲームアプリのアップデート・メンテナンス終了直後など
    課題
    4

    View full-size slide

  10. © DeNA Co., Ltd. 10
    1
    ● 突発的に1回しきい値をまたいだだけの場合(=バースト)は NG にしたくない
    ○ 「状態監視」ならば可能だが、「しきい値監視」では不可能
    ● 下記のケースで一時的にしきい値をまたぐ状況に対応できない
    ○ ゲームアプリのアップデート・メンテナンス終了直後の一時的なアクセス集中
    ○ 定期バッチ実行による一時的な負荷上昇 etc.
    補足:「しきい値監視」と「状態監視」の違い
    しきい値監視(1回でもしきい値を
    またいだらアラーム発生)
    状態監視(複数回連続してしきい値
    をまたいだ場合のみアラーム発生)
    5

    View full-size slide

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

    View full-size slide

  12. © DeNA Co., Ltd. 12
    1
    ● ログ監視をAWS の各種マネージドリソースに完全移行
    ○ CloudWatch という優れた監視サービスがあるわけだし
    ● AWS リソースに任せられる業務は任せる(任せたい)
    ○ 本来工数を使うべきタスクにメンバーの工数を集中させる
    ○ AWS の考えの根本である「プロダクトの開発作業にフォーカス」する
    ● 退屈なことは python AWSにやらせよう
    ○ 「退屈」って言ったらダメだけど...
    ソリューション:AWS によるフルマネージド化
    1

    View full-size slide

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

    View full-size slide

  14. © DeNA Co., Ltd. 14
    3. CloudWatch(監視)

    View full-size slide

  15. © DeNA Co., Ltd. 15
    1 CloudWatch の利用
    ● AWS で「監視」といえば、まずは CloudWatch
    ● 今回は下記の機能を使用
    ○ Logs:ログの保管・管理
    ○ メトリクスフィルタ:ログの特定文字列の出現回数をメトリクスとして監視
    ○ Metirc Math:メトリクスの値に各種数式を適用
    ■ 今回は「FILL(m1, 0)」を設定し、データ欠落時は「異常未発生」とする
    ○ Alarm:アラーム発生(および収束)条件設定・発生など
    ● 監視対象の項目(メトリクス)を監視
    ○ 多くのメトリクスは、初めから用意されている (CPU使用率など)
    ○ メトリクスの自作も可能(「メトリクスフィルタ」など)
    1

    View full-size slide

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

    View full-size slide

  17. © DeNA Co., Ltd. 17
    4. CloudWatch エージェント
    (ログ転送)

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  21. © DeNA Co., Ltd. 21
    5. SNS&Chatbot(Slack 通知)・
    最終的な構成

    View full-size slide

  22. © DeNA Co., Ltd. 22
    1 SNS & Chatbot の利用
    ● Slack への通知には、SNS および Chatbot を利用する
    ○ SNS:アラーム発生時に、Chatbotにアラーム内容を通知
    ○ Chatbot:グループ内の Slack チャンネルへのメッセージ送信
    ■ Amazon Chime にも対応
    ● 下図のようなフローを作成することで、アラームを Slack に通知可能
    ● 参考:AWS ChatbotでCloudWatchアラームをslackへ通知しよう!!
    EC2
    (CloudWatch
    エージェント )
    CloudWatch Logs CloudWatch
    Alarm
    SNS Chatbot Slackチャンネル
    1

    View full-size slide

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

    View full-size slide

  24. © DeNA Co., Ltd. 24
    6. 補足情報・まとめ・宣伝

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  27. © DeNA Co., Ltd. 27
    2 AWS Lambda Powertools について
    ● Lambda の開発・監視など行う際に非常に便利なライブラリ群(AWS 公式)
    ● コアユーティリティとして、下記の機能がある
    ○ Logger:構造化された JSON ログを生成するためのロガー機構を提供
    ○ Metrics:Lambda関数内でカスタムメトリクスを作成可能
    ○ Tracing:Lambdaハンドラーの各種情報、関数単位での実行時間などのトレース
    ● Python, Java, .Net, TypeScript に対応
    ○ 言語によりコア以外のユーティリティに差がある(Pythonが一番充実)
    ● 参考:コードとデモで理解する!これは便利!AWS Lambdaの実装を加速するAWS
    Lambda Powertoolsを使いこなそう | AWS Dev Day 2022
    3

    View full-size slide

  28. © DeNA Co., Ltd. 28
    2 AWS Lambda Powertools について(宣伝)
    ● 下記イベントで、AWS Lambda PowerTools に関する発表 & デモを行います
    ● JAWS ミート 2023 (2023/7/8(土) 12:00 〜) ※愛知県豊橋市
    ○ https://jaws-ug-tokaido.connpass.com/event/276942/
    ● JAWS-UG 名古屋 オブザーバビリティ for AWS (2023/7/11(火) 19:00 〜)
    ○ https://jawsug-nagoya.doorkeeper.jp/events/158126
    ● 参加される方は、よろしくお願いします。
    ● どちらもオフライン開催のみなので、ほぼ東海地方の方限定になってしまいますが...
    4

    View full-size slide

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

    View full-size slide

  30. © DeNA Co., Ltd. 30
    DeNA ENGINEERING

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

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

    View full-size slide

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

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


    View full-size slide

  32. © DeNA Co., Ltd. 32
    Mobage では、エンジニアを募集中です!
    Mobageでは、サーバーサイドエンジニアを積極募集中です。
    Mobageやいろいろなサーバーサイド技術に興味がある方・携わりたい方、お待
    ちしています!
    ※Perl って書いてますが、もちろんPerl 以外のエンジニアもOKです!
    (私も入社するまで Perl は全くやったことなかったです)
    https://herp.careers/v1/denacareer/TWYBVkIr4FA_

    View full-size slide

  33. © DeNA Co., Ltd. 33

    View full-size slide