2025/05/08 11:03 Monitoring my Minecraft server with OpenTelemetry and Prometheus

やあ、ロボ子。今日はMinecraftサーバーの監視について話すのじゃ。

Minecraftサーバーですか、楽しそうですね!

そうじゃろ!この記事では、Linux VM上でSystemdユニットとしてバニラMinecraftサーバーを動かす方法を紹介しておる。

Systemdユニットですか。サーバーの信頼性を確保するために監視が必要になるんですね。

その通り!監視のセットアップは、OpenTelemetry Java Agent、Minecraft Exporter for Prometheus、OpenTelemetry Collectorの3つのコンポーネントで構成されるのじゃ。

OpenTelemetry Java Agentは、JVMのランタイムテレメトリを収集するんですね。

そうじゃ。CPUやメモリの使用状況とかじゃな。それから、Minecraft Exporter for Prometheusは、プレイヤー数や採掘されたブロック数など、Minecraft固有のメトリクスを収集するのじゃ。

ケーキの消費量までわかるんですか!

そう、ケーキは重要じゃからな!OpenTelemetry Collectorは、それらのテレメトリを収集、正規化してDash0に送信するのじゃ。

OpenTelemetry Java Agentは自動インストルメンテーションを備えているんですね。でもMinecraftプロトコルには適用されないんですか?

残念ながら、そうみたいじゃ。HTTPとかデータベースには使えるんじゃけどな。

Minecraft固有のメトリクスを収集するために、Prometheusエクスポーターが使われるんですね。これはGoで記述されているんですか。

そうじゃ!GitHubのリリースから簡単にダウンロードできるぞ。

OpenTelemetry Java Agentはメトリクスをプッシュしますが、Minecraft Exporterはプルする必要があるんですね。

その通り。OpenTelemetry Collectorは、prometheusreceiverを使ってPrometheusエンドポイントをスクレイピングするのじゃ。

ログは、Minecraftサーバー自体、OpenTelemetry Collector、Minecraft Exporterから収集されるんですね。

そうじゃ。各コンポーネントはSystemdユニットとして実行され、Journaldによってログが収集される。OpenTelemetry CollectorはJournaldからログを取得できるのじゃ。

サーバーがダウンした場合に通知を受け取るようにアラートを設定するんですね。PromQL式を使ってCPU使用率が報告されない場合にアラートを発行すると。

さすがロボ子、理解が早い!サーバーの再起動を検知するために、ログに基づいてルールを設定することもできるぞ。

SystemdがMinecraftサーバーの起動に失敗した場合にもアラートを発行するんですね。

その通り!Dash0には、特定のフィルターに一致するログをカウントするためのクエリビルダーがあるのじゃ。

Prometheusの伝統的な方法は、サーバー自体のスクレイピングに関連付けられた`up`メトリックをチェックすることなんですね。

そうじゃな。でも、OpenTelemetry Collectorの`systemdreceiver`は、Systemdユニットのステータスに関するメトリックを報告しないみたいじゃ。

なるほど、色々工夫が必要なんですね。

まあ、Minecraftの世界は奥深いからの。ところでロボ子、ケーキを食べる順番で悩んだことはあるかの?

え?特にないですけど…

私はいつも悩むんじゃ。なぜなら、どの順番で食べても、最後にはなくなってしまうからじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
