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

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

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. 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. 自己紹介
  2. © DeNA Co., Ltd. 3 アジェンダ 多数EC2運用での課題 CloudWatch(監視) CloudWatch エージェント(ログ転送)

    SNS&Chatbot(Slack 通知)・最終的な構成 5 4 6 補足情報・まとめ・宣伝 3 対応方法 1 2
  3. © 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向けに加筆修正したものになります 発表に際して
  4. © DeNA Co., Ltd. 6 • スマホでゲームを中心に各種コンテンツを楽しめるSNS • PC 向けの

    Yahoo! モバゲーもある • https://www.mbga.jp/ (PC版)、 https://sp.mbga.jp/ (スマホ版) Mobage とは 1
  5. © DeNA Co., Ltd. 7 • 2018年〜2021年に、弊社環境をオンプレミスからクラウドに移行 • 詳細は AWS

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

    VPC + EC2 で構成・稼働 ◦ VPC + EC2 のよくある構成 • 各 EC2 (赤枠内)のログを監視用 内製アプリで監視 ※ 実際のEC2の台数はもっと(という かめちゃくちゃ)多いです 8 3
  7. © DeNA Co., Ltd. 9 1 • 監視アプリの運用コスト ◦ 監視アプリ自体の運用管理・監視も必要(本末転倒な状態に)

    ◦ 監視する EC2 の数が膨大(設定が手間、把握が大変) • 「状態監視」(=ステートフル監視)ができない ◦ 「障害が発生し続けているか」の監視ができない ▪ 特性上「発生し続けている」ことの監視が必要 ◦ 短期的なアクセス集中によるバーストに対応できない ▪ (例)ゲームアプリのアップデート・メンテナンス終了直後など 課題 4
  8. © DeNA Co., Ltd. 10 1 • 突発的に1回しきい値をまたいだだけの場合(=バースト)は NG にしたくない

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

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

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

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

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

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

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

    と違うアカウントの CloudWatch Logs にもログを送信可能 ◦ 「1つの監視用アカウントで一括監視」という運用が可能 • 下記の IAM Role 設定のみで実施可能 (Assume Role) ◦ 送信元および送信先での IAM Role 設定 ◦ 送信元 CloudWatch エージェントで、送信先 IAM Role の ARN 指定 • 参考:別のアカウントへのメトリクスとログの送信 3
  16. © 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
  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 そのものの状態」に関する詳細なメトリクス ◦ 「EC2 自体の監視」を行うのに便利 • ログデータの送信とは別に、API 実行の料金が発生する ◦ 1,000リクエストごとに0.01USD(=1.44JPY)※ 2023/6/24現在 • 参考: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 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
  21. © 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
  22. © DeNA Co., Ltd. 29 2 まとめ • CloudWatch &

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


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

  24. © DeNA Co., Ltd. 32 Mobage では、エンジニアを募集中です! Mobageでは、サーバーサイドエンジニアを積極募集中です。 Mobageやいろいろなサーバーサイド技術に興味がある方・携わりたい方、お待 ちしています!

    ※Perl って書いてますが、もちろんPerl 以外のエンジニアもOKです! (私も入社するまで Perl は全くやったことなかったです) https://herp.careers/v1/denacareer/TWYBVkIr4FA_