こんにちは!現場で毎日システムと格闘している君なら、「監視ツール、結局どれ使えばいいんだ…?」と頭を抱えた経験が一度はあるはずだ。
世の中には「Zabbixは古い、これからはPrometheusだ!」みたいな極端な意見があふれているけれど、現場のアーキテクトから言わせてもらうと、それは「トラックとスポーツカー、どっちが優れているか?」と議論するようなもの。走る路面も、積む荷物も違うんだから、比較する方がナンセンスさ。
今回は、伝統的インフラ監視の王様である「Zabbix」と、クラウドネイティブ時代の覇者である「Prometheus」の決定的な違いを解き明かしながら、それぞれの「Hello World(最初の一歩)」までを優しくガイドしていくよ。これを読めば、君のプロジェクトにどちらを導入すべきか、迷いなく即決できるようになるはずだ。
—
1. 思想の根本が違う:Zabbix vs Prometheus
まずは、この2つのツールが生まれた背景と「世界の見方」を知ろう。ここを理解しないと、選定で必ずミスをする。
| 比較項目 | Zabbix (レガシー&オールインワンの巨塔) | Prometheus (クラウドネイティブの俊英) |
| :— | :— | :— |
| 得意なインフラ | オンプレミス、VM、物理サーバー、ネットワーク機器 | Kubernetes、コンテナ、マイクロサービス、クラウド |
| データ収集方式 | プッシュ/プル混在(ZabbixエージェントやSNMP) | プル型(ターゲットにHTTPで自ら「採点しに行く」) |
| データの持ち方 | リレーショナルDB (MySQL/PostgreSQL) にガッツリ保存 | 時系列データベース (TSDB) で超高速に圧縮保存 |
| 設定の管理 | WebGUIでポチポチ設定(DBに状態を持つ) | コードとして管理 (IaC) / テキストファイル |
| エコシステム | 完結型(監視・グラフ化・アラートがこれ一つでOK) | 連携型(グラフはGrafana、アラートはAlertmanager) |
Zabbixの思想:「なんでも一元管理する要塞」
Zabbixは、ネットワークのルーターから、古いLinuxサーバー、Windowsのイベントログまで、企業のITインフラ全体を一つのWeb画面で丸ごと監視するのに最適化されている。「エージェントを入れれば、とりあえず何でも監視できる」という安心感が最大の武器だ。
Prometheusの思想:「動的な世界を切り取るスキャナー」
一方、Prometheusは、Kubernetesのように「コンテナが数秒で消えては生まれる」ような流動的な世界のために生まれた。IPアドレスが変わろうとも、サービスディスカバリー(自動検出)でターゲットを追いかけ、HTTPのエンドポイントからメトリクスを「スクレイピング(削り取るように取得)」する。
—
2. アラートの考え方と「アラート疲れ」への対策
監視ツールで最も重要なのは「障害を検知すること」だが、それ以上に大切なのは「エンジニアを無駄なアラートで殺さないこと」だ。
- Zabbixのアラート:
トリガー条件をWebGUIで柔軟に設定できる。障害復旧(Recovery)の検知や、複雑な依存関係(「ルーターが落ちたら、その下のサーバーのアラートは隠す」など)の制御が非常に得意。
- Prometheusのアラート:
アラートの定義もすべてPromQL(Prometheus独自のクエリ言語)とYAMLファイルで行う。さらに、アラートのルーティングや抑制(抑制=Silencing/Grouping)を専門に行うAlertmanagerという相棒がセットになっており、大量のアラートを巧みに束ねてSlackやPagerDutyに飛ばしてくれる。
—
3. 実践!それぞれの「Hello World」を踏み出そう
百聞は一見にしかず。それぞれの最もシンプルなセットアップと、メジャーな動作確認の方法を見ていこう。これをマスターすれば、今日からでも検証環境を立ち上げられるよ。
—
パターンA:Zabbixの「Hello World」(Dockerで5分構築)
まずは、すべてが詰まったZabbixをDockerでサクッと立ち上げてみよう。今回は一番簡単な「Zabbix Agent 2」を同じホストの死活監視に使う構成だ。
1. Docker Composeで一発起動
適当なディレクトリに `docker-compose.yml` を作成してほしい。
version: ‘3.8’
services:
zabbix-server:
image: zabbix/zabbix-server-mysql:alpine-6.4-latest
ports:
- “10051:10051”
environment:
- DB_SERVER_HOST=mysql
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix_password
depends_on:
- mysql
zabbix-web:
image: zabbix-web-mysql:alpine-6.4-latest
ports:
- “8080:8080”
environment:
- ZBX_SERVER_HOST=zabbix-server
- DB_SERVER_HOST=mysql
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix_password
depends_on:
- zabbix-server
mysql:
image: mysql:8.0-debian
command: –default-authentication-plugin=mysql_native_password
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix_password
- MYSQL_ROOT_PASSWORD=root_password
Terminalで `docker compose up -d` を叩けば、数分で `http://localhost:8080` にZabbixのWeb画面(初期ID: `Admin`, PW: `zabbix`)が立ち上がる。これがZabbixの「オールインワン要塞」だ。
—
パターンB:Prometheusの「Hello World」(圧倒的なシンプルさ)
次はPrometheusだ。こちらはデータベースも何もいらない。単一のバイナリと1つの設定ファイルだけで動き出す。
1. 設定ファイルを書く (`prometheus.yml`)
Prometheusは「自分自身」を監視することから始めるのがお約束(Self-monitoring)。
global:
scrape_interval: 15s # 15秒ごとにメトリクスをプル(取得)する
scrape_configs:
- job_name: ‘prometheus’
# 自分自身の死活とメトリクスを監視する設定
static_configs:
- targets: [‘localhost:9090’]
2. Dockerで起動する
たったこれだけのエントリポイントで、Docker経由ですぐに起動できる。
docker run -d \
-p 9090:9090 \
-v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus:latest
ブラウザで `http://localhost:9090` にアクセスしてみよう。
Prometheusの簡易Web UIが表示される。上部の検索窓(Expression)に `up` と打ち込んで「Execute」を押してみてほしい。
up
画面に `1` という数字が表示されただろうか?
これは、「Prometheusが自分自身(localhost:9090)にアクセスし、正常に生存している(=1)」ということを示している。これが、Prometheusにおける最高のHelloWorldだ。
—
4. 現場のプロが教える「選定の極意」
さて、それぞれの基本を抑えたところで、現場でどちらを選ぶべきかの「判断基準」を授けよう。
1. Zabbixを選ぶべきケース
- 管理対象に「ネットワークスイッチ」「レガシーなWindowsサーバー」「社内ニッチな物理アプライアンス」が含まれている。
- 監視設定をWeb画面から直感的に行いたい(コードを書きたくないメンバーが多い)。
- 1台のサーバーで完結させたい。
2. Prometheusを選ぶべきケース
- システムがKubernetesやDockerなどのコンテナベースで構築されている。
- メトリクスをコード(IaC)としてGitでバージョン管理したい。
- Grafanaと組み合わせて、美しくリッチなダッシュボードを作りたい。
- オートスケーリングする環境で、動的にターゲットが増減する。
—
おわりに
監視ツールの選定は、プロジェクトの運命を左右する重要な意思決定だ。
「新しいから」「流行っているから」という理由だけでPrometheusを選んで、レガシーなWindowsサーバーの監視で泥沼にハマるチームを、僕は何度も見てきた。逆に、オンプレの巨大な要塞をPrometheusだけで監視しようとして、設定ファイルの山に溺れるチームも見てきた。
大切なのは、「君たちのシステムがどこに向かっていて、どんなインフラの上で息をしているか」を正しく見極めること。
それぞれの特徴と「Hello World」の手軽さを知った今なら、もう迷うことはないはずだ。
適材適所でツールを使いこなし、アラートに怯えない、優雅で平穏な運用ライフを手に入れよう!