LibreNMSでネットワークインフラをマスターする:帯域幅モニタリングからTelegram自動通知まで

Monitoring tutorial - IT technology blog
Monitoring tutorial - IT technology blog

なぜ他のツールではなくLibreNMSを選ぶのか?

上司が背後に立って「なぜネットワークがこんなに遅いんだ?」と聞いてくるのに、具体的な数字が手元にないという状況に陥ったことはありませんか?SysAdminになりたての頃、私はよく各CiscoスイッチにSSHで接続し、どのポートが過負荷になっているかを確認するためだけに、指が疲れるほどshow interfacesコマンドを打ち込んでいました。この方法は遅いだけでなく、重要な情報を見落としがちです。

ZabbixPrometheusも非常に強力ですが、ネットワーク機器(Network Devices)に関しては、LibreNMSはまさに「救世主」です。最大の魅力は、非常に強力な自動検出(Auto-discovery)機能です。IPアドレスを指定するだけで、LibreNMSが自動的にスキャンし、モデルを特定し、ネットワークポートの全構成図を作成してくれます。他のツールと比較して、設定時間を約80%削減できるでしょう。

インストール環境の準備

迅速なデプロイとPHPライブラリの競合を避けるために、Dockerの使用をお勧めします。これにより、システムをクリーンに保ち、将来のアップグレードも容易になります。

30〜50台程度のデバイスをスムーズに動作させるための最小構成:

  • Ubuntu 22.04 LTS 仮想マシン
  • RAM: 4GB(LibreNMSは多数のデバイスをポーリングする際にメモリを消費します)
  • CPU: 2コア
  • ストレージ: 20GB SSD
  • DockerおよびDocker Composeインストール済み

Docker ComposeによるLibreNMSのデプロイ

まず、設定ファイルを管理するための専用ディレクトリを作成します:

mkdir librenms-docker && cd librenms-docker

次に、docker-compose.ymlファイルを作成します。nano docker-compose.ymlコマンドを使用し、以下の内容を貼り付けてください:

version: '3.5'

services:
  db:
    image: mariadb:10.5
    container_name: librenms_db
    volumes:
      - "./db:/var/lib/mysql"
    environment:
      - MYSQL_ROOT_PASSWORD=your_root_password
      - MYSQL_DATABASE=librenms
      - MYSQL_USER=librenms
      - MYSQL_PASSWORD=password_librenms
    restart: always

  redis:
    image: redis:6.0-alpine
    container_name: librenms_redis
    restart: always

  librenms:
    image: librenms/librenms:latest
    container_name: librenms
    ports:
      - "8000:80"
    volumes:
      - "./librenms:/data"
    environment:
      - TZ=Asia/Tokyo
      - PUID=1000
      - PGID=1000
      - DB_HOST=db
      - DB_NAME=librenms
      - DB_USER=librenms
      - DB_PASSWORD=password_librenms
      - REDIS_HOST=redis
    depends_on:
      - db
      - redis
    restart: always

コマンド一つでシステムを起動します:

docker-compose up -d

約2分後、http://あなたのIPアドレス:8000にアクセスしてください。Webインストーラー画面が表示されます。管理者アカウントを作成し、ガイドに従って「Next」をクリックするだけで完了です。

対象デバイスでのSNMP設定

LibreNMSはエージェントを使用しません。SNMPプロトコルを介してデータを取得します。そのため、監視したいデバイス側でSNMPを「有効化」する必要があります。

Linuxサーバー(Ubuntu/Debian)の場合

snmpdサービスパッケージをインストールします:

sudo apt update && sudo apt install snmpd -y

/etc/snmp/snmpd.confファイルを開きます。コミュニティ設定の行を探し、セキュリティ向上のために以下のように修正します:

# 'my-secret-string' を独自のSNMPパスワードに変更してください
rocommunity my-secret-string default

変更を適用するために再起動します:sudo systemctl restart snmpd

Ciscoスイッチ/ルーターの場合

CiscoのCLI上で、いくつかの簡単な操作を行うだけです:

conf t
snmp-server community my-secret-string RO
exit
write memory

モニタリングとアラート設定

LibreNMSのダッシュボードに戻り、Devices -> Add Deviceに進みます。デバイスのIPを入力し、SNMP v2cを選択して、作成したmy-secret-stringを入力します。「Add Device」をクリックし、5分ほど待ちます。

システムが各ポートのトラフィックグラフを自動的に生成します。どのポートが最も帯域を消費しているか(Top Interfaces)、あるいはどのスイッチのCPUが異常に高温になっているかを即座に確認できます。

Telegramでアラートを受け取る

24時間365日、画面に張り付いて監視するのは非常に疲れます。トラブルが発生した際、LibreNMSからTelegram経由で自動通知されるようにしましょう。Alerts -> Transportsに移動し、Telegramを選択してBotのAPIトークンを入力します。

「Port state up -> down」ルールの有効化を忘れないでください。これで、LANケーブルが抜かれたり、スイッチの電源が落ちたりするたびに、あなたのスマートフォンに即座に通知が届くようになります。

システムを安定稼働させるための実務経験

一定期間運用してみて、トラブルを避けるための重要な注意点がいくつかあります:

  • ポーリングの制御: デフォルトでは5分ごとにデータを取得します。リアルタイムで確認するために1分に短縮する場合は、サーバーのCPUが十分に強力であることを確認してください。100台のデバイスがある場合、1分間隔のポーリングはCPU負荷を非常に高くする可能性があります。
  • データベースのクリーンアップ: LibreNMSは詳細なログを保存するため、ディスク容量がすぐに一杯になります。Global Settings -> Cleanupに移動し、ログの保存期間を30日間に制限して容量を最適化しましょう。
  • ‘public’は絶対避ける: デフォルトのコミュニティ名であるpublicは絶対に使用しないでください。これは、ハッカーが数秒でネットワーク構成全体をスキャンできてしまう脆弱性になります。

LibreNMSは、オフィスやデータセンターで働くITエンジニアにとって非常に信頼できるツールです。インフラを流れる全ビットデータを把握できているという感覚は、本当に素晴らしいものです。アラート設定を含め、皆さんの構築が成功することを願っています!

Share: