ネットワーク監視ツール比較:Zabbix vs Nagios vs LibreNMS でインフラを可視化する
オープンソースラボ編集部 ・ 2026年6月14日
ネットワーク監視ツール比較:Zabbix vs Nagios vs LibreNMS でインフラを可視化する
企業ネットワークのインフラ管理では、サーバー・スイッチ・ルーター・UPSの死活監視・メトリクス収集・アラート送信を自動化するネットワーク監視ツールが欠かせません。Zabbix(エンタープライズ向け・豊富な機能)・Nagios(歴史的標準・プラグインエコシステム)・LibreNMS(自動検出・近代的UI)の3つがOSSネットワーク監視のデファクトスタンダードです。
OSSネットワーク監視を選ぶ理由
- コスト: PRTG(~$1,500/センサー100〜)・SolarWinds(年数十万円〜)に対してZabbix/Nagios/LibreNMSは$0
- 自前ルール: 独自のアラート閾値・通知チャンネル(Slack・PagerDuty・メール)を自由に設定
- データ主権: 監視データ(CPU使用率・トラフィック・ログ)が外部SaaSを通過しない
- エージェントレス: SNMP・ICMP・WMI・JMXでエージェント不要の監視が可能
主要ツールの概要
Zabbix
2001年公開、PHP/C製のOSSです。GitHubスター4k+。エンタープライズ向けに最も機能が充実したオールインワン監視プラットフォームです。Zabbixエージェント・SNMP・JMX・HTTP・IPMI・SSH・VMware vSphere APIなど多様なプロトコルでメトリクスを収集し、分散監視(Zabbix Proxy)でグローバル拠点の監視も統合管理できます。
# docker-compose.yml - Zabbix フルスタック
version: "3.8"
services:
zabbix-server:
image: zabbix/zabbix-server-pgsql:alpine-7.0-latest
restart: unless-stopped
ports:
- "10051:10051"
environment:
DB_SERVER_HOST: zabbix-db
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: ${ZABBIX_DB_PASSWORD}
POSTGRES_DB: zabbix
ZBX_ENABLE_SNMP_TRAPS: "true"
depends_on:
- zabbix-db
volumes:
- ./zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- ./zabbix/externalscripts:/usr/lib/zabbix/externalscripts
zabbix-web:
image: zabbix/zabbix-web-nginx-pgsql:alpine-7.0-latest
restart: unless-stopped
ports:
- "8080:8080"
- "8443:8443"
environment:
ZBX_SERVER_HOST: zabbix-server
DB_SERVER_HOST: zabbix-db
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: ${ZABBIX_DB_PASSWORD}
POSTGRES_DB: zabbix
PHP_TZ: Asia/Tokyo
depends_on:
- zabbix-server
zabbix-agent:
image: zabbix/zabbix-agent2:alpine-7.0-latest
restart: unless-stopped
ports:
- "10050:10050"
environment:
ZBX_SERVER_HOST: zabbix-server
ZBX_HOSTNAME: monitoring-host
zabbix-db:
image: postgres:15-alpine
restart: unless-stopped
environment:
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: ${ZABBIX_DB_PASSWORD}
POSTGRES_DB: zabbix
volumes:
- zabbix_db_data:/var/lib/postgresql/data
zabbix-snmptraps:
image: zabbix/zabbix-snmptraps:alpine-7.0-latest
restart: unless-stopped
ports:
- "162:1162/udp"
volumes:
zabbix_db_data:
# Python: Zabbix API でホストとアラートを管理
import requests
import json
ZABBIX_URL = 'http://localhost:8080/api_jsonrpc.php'
ZABBIX_USER = 'Admin'
ZABBIX_PASS = 'your-password'
def zabbix_request(method: str, params: dict, auth_token: str = None) -> dict:
payload = {
'jsonrpc': '2.0',
'method': method,
'params': params,
'id': 1,
}
if auth_token:
payload['auth'] = auth_token
resp = requests.post(ZABBIX_URL, json=payload)
result = resp.json()
if 'error' in result:
raise Exception(f"Zabbix API error: {result['error']}")
return result['result']
# 認証
token = zabbix_request('user.login', {
'username': ZABBIX_USER,
'password': ZABBIX_PASS,
})
# ホスト一覧取得
hosts = zabbix_request('host.get', {
'output': ['hostid', 'host', 'status'],
'selectInterfaces': ['ip', 'port'],
'filter': {'status': '0'}, # 有効なホストのみ
}, auth_token=token)
print(f'監視ホスト数: {len(hosts)}台')
# アクティブな問題(アラート)を取得
problems = zabbix_request('problem.get', {
'output': 'extend',
'sortfield': ['eventid'],
'sortorder': 'DESC',
'limit': 20,
'severities': [3, 4, 5], # Warning以上(High/Disaster/Critical)
}, auth_token=token)
print(f'アクティブアラート: {len(problems)}件')
for p in problems:
print(f' [{p["severity"]}] {p["name"]} ({p["clock"]})')
# 新しいホストを追加
new_host = zabbix_request('host.create', {
'host': 'web-server-01',
'interfaces': [{
'type': 1, # Zabbixエージェント
'main': 1,
'useip': 1,
'ip': '192.168.1.100',
'dns': '',
'port': '10050',
}],
'groups': [{'groupid': '2'}], # Linux servers グループ
'templates': [{'templateid': '10001'}], # Template OS Linux by Zabbix agent
}, auth_token=token)
print(f'ホスト追加: {new_host["hostids"]}')
Nagios
1999年公開、C/Perl製のOSSです。GitHubスター1.5k+。20年以上の歴史を持つネットワーク監視の元祖で、5000+プラグイン(Nagios Exchange)でほぼあらゆるシステムを監視できます。設定ファイルベース(.cfg)でシンプルですが学習コストがあり、近年はNagios Core(無料)とNagios XI(商用)に分化しています。
# Nagiosのcheck_httpプラグイン例(Webサービス死活監視)
/usr/lib/nagios/plugins/check_http -H api.yourservice.com -p 443 -S --sni -u /health -e "HTTP/1.1 200" -w 2 \ # warning: 2秒
-c 5 # critical: 5秒
# Nagios check_snmpで帯域使用率を監視
/usr/lib/nagios/plugins/check_snmp -H 192.168.1.1 -o .1.3.6.1.2.1.2.2.1.10.1 -C public -w 80000000 -c 90000000
# nagios/hosts.cfg - ホスト定義
define host {
use linux-server
host_name web-server-01
alias Web Server 01
address 192.168.1.100
max_check_attempts 3
check_interval 5
retry_interval 1
check_command check-host-alive
notification_interval 60
notification_period 24x7
contact_groups admins
}
# nagios/services.cfg - サービス定義
define service {
use generic-service
host_name web-server-01
service_description HTTP API Health
check_command check_http!-H api.yourservice.com -u /health -e "HTTP/1.1 200" -w 2 -c 5
check_interval 2
notification_interval 30
}
define service {
use generic-service
host_name web-server-01
service_description CPU Load
check_command check_nrpe!check_cpu_load
check_interval 5
}
LibreNMS
2013年公開、PHP/Python製のOSSです。GitHubスター4k+。自動デバイス検出(autodiscovery)と近代的なUIが特徴のネットワーク監視ツールです。Observiumからフォークされ、コミュニティが活発で250+メーカーのデバイスをSNMP対応テンプレートで即時監視できます。
# LibreNMS Docker Compose(最小構成)
curl -L https://raw.githubusercontent.com/librenms/docker/master/docker-compose.yml -o docker-compose.yml
# .envを設定してから起動
echo "APP_KEY=base64:$(openssl rand -base64 32)" > .env
echo "DB_PASSWORD=librenms_pass" >> .env
echo "TZ=Asia/Tokyo" >> .env
docker compose up -d
# デバイスを手動追加(CLIから)
docker exec -it librenms-dispatcher-1 php /opt/librenms/addhost.php 192.168.1.1 public v2c
機能比較表
| 比較項目 | Zabbix | Nagios | LibreNMS |
|---|---|---|---|
| 自動デバイス検出 | ✅ | ❌ | ✅ |
| UI品質 | ★★★ | ★☆☆ | ★★★ |
| SNMP対応デバイス数 | 多数 | プラグイン依存 | 250+メーカー |
| プラグインエコシステム | 豊富 | 5000+ | 多数 |
| 設定のしやすさ | ★★☆ | ★☆☆ | ★★★ |
| 分散監視 | ✅(Proxy) | △ | ✅(Poller) |
ネットワーク監視はDevOpsカテゴリ/categories/devopsのGrafana・Prometheusと連携して、ZabbixのメトリクスをGrafanaダッシュボードで可視化できます。セキュリティカテゴリ/categories/securityのSIEM(Wazuh・OpenSearch)とアラートを統合してセキュリティインシデント検知を強化できます。
FAQ
Q. ZabbixとLibreNMSどちらを選べばいいですか?
A. ネットワーク機器(ルーター・スイッチ・UPS)が中心ならLibreNMS、サーバー・アプリケーション・クラウドリソースを統合監視するならZabbixが向いています。LibreNMSの強み: ①SNMPデバイスの自動検出・自動設定で初期構築が速い②ネットワークトポロジーの自動マッピング(物理・論理接続図の可視化)③帯域グラフ(RRDtool)がシンプルで運用しやすい。Zabbixの強み: ①Zabbixエージェント・JMX・VMware API・HTTPエンドポイントを統合監視②高度なトリガー(依存関係・ヒステリシス・時間帯)でアラートの誤検知を減らせる③テンプレートを使ってアプリケーション固有のメトリクス(PostgreSQL・Nginx・Docker)を即座に収集。
Q. Nagiosのプラグインは2024年以降も使えますか?
A. Nagios Coreのプラグインは現在も使えますが、UIとスケーラビリティの制約があります。Nagiosは設定ファイルベースで、ホスト・サービスの増加に伴いcfgファイルの管理が煩雑になります。2025年現在の選択肢: ①既存Nagios環境をIcinga 2(Nagios互換の後継OSS・近代的なAPI・クラスタリング対応)に移行②既存プラグインはcheck_nrpeでIcinga 2/Zabbix/LibreNMSから呼び出し可能③新規構築ならZabbix/LibreNMSを推奨。Nagiosの価値はプラグインエコシステム(check_http・check_ssl・check_disk等)にあり、これらはZabbix/Nagios/Icingaで流用できます。
Q. ZabbixのSlack・PagerDutyアラート通知の設定方法は?
A. ZabbixのMedia typeにWebhookを設定します。①管理→メディアタイプ→Webhookを追加②以下のJavaScript(Zabbix内蔵JSエンジン)でHTTP POSTを実装③アラートアクションでトリガー条件と通知先ユーザーを設定。Slack通知例: var params = JSON.parse(value); var body = JSON.stringify({text: '[' + params.severity + '] ' + params.name + ' ' + params.host + ': ' + params.description}); return JSON.stringify(HttpRequest.post('https://hooks.slack.com/services/xxx', body, 'Content-Type: application/json')); PagerDuty通知: ZabbixテンプレートギャラリーにPagerDuty用の公式Webhookテンプレートが存在するため設定を入力するだけで完了します。
Q. LibreNMSのアラートルールはどう設定しますか?
A. LibreNMSのAlerts→Alert Rulesから条件ビルダーUIで設定します。①条件: %devices.status = 0(デバイスダウン)%ports.ifInErrors_rate > 100(エラーレート増加)%mempools.mempool_perc >= 90(メモリ90%超過)②アラートトランスポート(通知先): Slack・メール・PagerDuty・Telegram・Teams・Webhook等50+チャンネルをプラグインで設定③遅延・再通知設定: 初回検知から5分後にアラート(フラップ防止)、1時間ごとに再通知(未解消の場合)。lnms alerts:listコマンドでCLIからアラート状態を確認できます。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| ネットワーク機器・自動検出・シンプル運用 | LibreNMS |
| サーバー・アプリ・クラウドの統合監視 | Zabbix |
| 既存Nagiosプラグインの継続利用 | Nagios/Icinga 2 |