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

モンスターストライクにおける監視システムのあれこれ

shirochan
January 29, 2020

 モンスターストライクにおける監視システムのあれこれ

モンスターストライクにおけるメトリクス監視、死活監視についての話です。
以下のイベントの登壇資料になります。

◆うちのDevOps事情〜大規模サービスのモニタリングあれこれ〜

DevOpsについての進捗共有をする「うちのDevOps事情」シリーズ。
今回のテーマは【大規模サービスのモニタリング】です。
どのような項目を監視/モニタリングするのか?
利用ツールを選択した理由とは?そのツール利用した結果どうだった?
運用しながら改善していく時の優先順位の付け方は?
など、DevOpsを推進していくときに参考にしていただきたい事例を4名からお伝えします!

https://techplay.jp/event/765163

shirochan

January 29, 2020
Tweet

More Decks by shirochan

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 - ⽒名 - 白川裕介 - 経歴 - 2012年に新卒でミクシィに入社。 -

    SNS「mixi」でアドネットワークを担当したのちXFLAGのアドテクスタジオへ異動 - その後、モンストの開発に携わりマネージャーを経験 - 現在では開発室の室長として、モンストに関わるエンジニア組織を統括
  2. App • ロードバランサー • A10を利用し配下に約200台のAppサーバーを配置 • Appサーバー • マルチクラウドで計算リソースの確保 •

    AWS / GCP / IBM を利用 • オンプレサーバーも利用 • ハイブリット構成にしている理由 • 単一点障害の回避 • 在庫の確保の柔軟性
  3. DB • 全てオンプレサーバーで構成 • 約300台稼働中 • 複数拠点・複数系統でサーバー故障に備える • DBサーバーへのアプローチ •

    水平分割 / 垂直分割 • Indexやクエリの最適化 • 高性能なマシンを投入 (高いIO性能を出せるもの) • IOMemory / NVMeを利用
  4. Redis / Batch / memcached • Redis / Batch •

    Resqueを利用した非同期処理 • ミッションの達成判定や報酬付与などを非同期処理で実施 • memcached • すべてオンプレサーバーで構成 • DBサーバーとの距離を重視 • DB性能限界へのアプローチとしてCacheを用いる • モンストではCacheの比重が大きい • app <=> memcached の往復が100回を超えるAPIもある • Cacheを利用することによりレスポンスの高速化を実現 • Replica Poolを用意しサーバー障害へ対策
  5. アーキテクチャ構成まとめ その1 • 稼働中のサーバーはトータルで約1,000台 • DBサーバー: 約300台、Appサーバー: 約200台 • Turnサーバーを利⽤しマルチプレイを実現

    • パケットのリレーを行う用途 • Cacheを多⽤することでレスポンスの⾼速化 • モンストではmemecachedを利用 • Resqueを利⽤した⾮同期処理 • バックエンドはRedis
  6. 監視システム(メトリクス監視) • CloudForecast • リソースのモニタリング • Kibana + elasticsearch •

    ログ可視化 • Grafana + InfluxDB • APIリクエストなどをモニタリング
  7. Nagios • サービスインしている全サーバーの死活監視を実施 • 監視項目はサーバーの利用用途により多岐にわたる • App/DB/memcached等 • 監視項目(check plugin)も独自に拡張

    • SNMPのextend機能を利用 • Nagios自体の監視をするために各拠点ごとにNagiosを構築 • 相互に監視をし合う • 独自で運用ツールを構築 • 設定に用いるcfgファイルはyamlから自動生成 • 各拠点の設定を一括で更新
  8. 監視システム • オンプレ・クラウドで共通で利⽤可能 • モンストはハイブリット構成で運用 • 拠点間に監視やモニタリングは共通である必要 • SNS mixi時代からの資産を数多く利⽤

    • 採用しているフレームワークやアーキテクチャは違えど基本的な構成は同じ • SNS時代に活用していたものを多く利用可能
  9. 監視システムまとめ • モンストの監視システム • メトリクス監視 • CloudForecast • Kibana +

    elasticsearch • Grafana + InfluxDB • 死活監視 • Nagios • PagerDuty • SNS mixiで⽤いていた資産を最⼤限に活⽤ • 独⾃Pluginなどで監視項⽬を拡張
  10. 死活監視 • On-Call • Nagios / CloudWatch / Zabbix などの監視からPagerDutyへ通知

    • 同時にslackのalert部屋にも投稿 • アラートがなったら15分以内に対応開始 • 基本的な1次対応はドキュメント化されている • 1次対応に少しでも迷った場合はエスカレーションを奨励
  11. 障害対応時のルール • 深夜対応の⼼得 • 必ず安全な道を選ぶ • 1次対応を迅速に実施 • サービスが正常に回っている状態まで復旧 •

    2次対応(サーバの復旧や新サーバの作成)は翌営業日の作業 • 作業分担 • デプロイする内容は必ずもう一人の確認するなど • 情報を共有 • 必ずslack内で作業内容を共有 • ログなど共有すべき内容は必ず共有 • サービスにエラーや遅延など影響がある場合は企画とcsに共有