AI

ネットワーク監視ツール比較: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

機能比較表

比較項目ZabbixNagiosLibreNMS
自動デバイス検出
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

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。