【Minecraft】Datadog を使った監視を考えてみる

■ 目次


 

1. はじめに

普段、Minecraft のプラグインサーバーを運用していく上でよくあるのが 「急激に重い!」「え?!めっちゃラグい!!」「あれ?!サーバー落ちてない?!」 などが…あります。(たいへんもうしわけない)
💡
Minecraft鯖の運営者としては、ユーザーが快適に遊べるている = 【つまりサービスが快適に提供出来ている】
ただ、ユーザーからは重かった報告は上がるが・・・現状ではいつ重かったのか不明である。
ならば、監視ツールを入れて報告があった時間を確認して更にはトライ・アンド・エラーで直していこうと思う。
以前に CloudWatch Agent を入れて、監視を実施していたが、わざわざ複数のステップを踏むのが面倒になって削除しました。
ここのページでは、Datadog を用いて何を監視するかを定義する。(実現出来たのはグラフとかを載せていきます。)
また、実現出来る出来ないは一旦隅に置いといて、コレがあったら良いなーと考えてみる。
 

1.1. サーバーの環境

CPU
項目
アーキテクチャx86_64
Model nameIntel(R) Core(TM) i7-8700 CPU @ 3.20GHz
CPU(s)12
メモリ(新品 同じ型で2枚差し : 合計32GB)
項目
Size16384 MB
TypeDDR4
Speed2666 MT/s

 

2. 【ユーザー目線】サービスが正常であること

まずは、ユーザー目線で考えてみる
 

2.1. チェック志向 『アラート発砲』

💡
📝 特性 : 異常検知 - 典型的な動作 : 定期的に監視対象の動作確認を行う (HTTP 対応など) - 典型的な出力 : 異常を通知するメール (Slack/Discord など) - 狭義の監視 : 定期的/継続的に、観測し “異常” を検知し復旧させること
 

【ユーザー目線 : サービスが正常であること】 を監視

  • Minecraft サーバーに正常にログインができる
    • 外部からの Ping 25565 番ポートが帰ってくる
  • Web サイト (Dynmap) が正常に閲覧できる
    • /map/ を GET したら 200 が帰ってくる
 

2.2. メトリクス志向 『ダッシュボード』

💡
📝 特性 : 状況把握 - 典型的な動作 : 定期的に監視対象の状況を示すデータを取得/収集する (CPU利用率) - 典型的な出力 : 監視対象の状況を示すグラフ - 広義の監視 : 定期的/継続的に、観測しシステムの “価値” を維持/向上させる営みの全て
  • Web サイトの閲覧数を表示
  • Minecraft サーバーに対するユーザーのログイン数

 

3. 【サーバー目線】サーバーが正常であること

まずは、アンチパターンから考える
  • CPU
    • 使用率
    • LoadAverage 1-5-15
  • メモリ
    • 搭載されているメモリの空き状況 『全体 – 使用率 = 空き状況』
    • Minecraft サーバーに割り当てられているメモリの空き状況 『全体 – 使用率 = 空き状況』
  • ストレージ
    • SSDの全体の空き状況
    • /opt/minecraft 配下のストレージの空き状況 『/opt/minecraft 全体 – 使用率 = 空き状況』
    • 書き込み/読み込み速度
  • inode
  • プロセス
    • Minecraft サーバーのプロセスを監視
  • ネットワーク
    • トラフィック量
  • ログ監視
    • Error を検知
 

3.1. チェック志向 『アラート発砲』

  • Error ログ検知時にアラート
    • 現状はフォーマットが確定していないのとコスト的に破産するので辞める
  • Minecraft サーバーがダウン時にアラート
  • ホストマシン自体がダウン時にアラート
  • Web ページに対する 5XX シリーズを検知した時にアラート
  • ストレージが枯渇時にアラート
  • ストレージの書き込み速度が 5 分以上遅くなった時にアラート
  • CPU 使用率が 5 分以上キープしてた時にアラート
  • inode の空き数が枯渇してきたらアラート
  • Web サイトの SSL 期限日の 10 日前になったらアラート
 

3.2. メトリクス志向 『ダッシュボード』

  • CPU 使用率
  • LoadAverage 1-5-15
  • メモリ 空き状況
  • ストレージ 使用率
  • Minecraft サーバー プロセス数
  • ネットワークトラフィック量

 

4. 最後に

フルマネージドサービスって便利ですね!