安裝 LibreNMS (Docker)
- 預計採用 image - librenms/librenms:latest
- 環境變數:
- TZ : Asia/Taipei
- LISTEN_IPV6 : false
- DB_HOST : 172.16.0.201
- DB_PORT : 8306
- DB_USER : librenms
- DB_PASSWORD : my_password999
- Port : 8000 (http)
- Volumes : /var/librenms/librenms ( config / plugins / rrd files/ logs… )
安裝與下載
- 建立 librenms 目錄
sudo mkdir /var/librenms/ sudo chown 1000:1000 /var/librenms/ cd /var/librenms/
- 下載 docker compsoe 設定檔
wget https://github.com/librenms/docker/raw/master/examples/compose/.env wget https://github.com/librenms/docker/raw/master/examples/compose/compose.yml wget https://github.com/librenms/docker/raw/master/examples/compose/librenms.env wget https://github.com/librenms/docker/raw/master/examples/compose/msmtpd.env
- 將 .env 內的設定改成符合自己的設定 Exp.
TZ=Asia/Taipei PUID=1000 PGID=1000 MYSQL_DATABASE=librenms MYSQL_USER=librenms MYSQL_PASSWORD=my_password999
- 將 msmtpd.env 內的設定改成符合自己的設定 Exp.
SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_TLS=on SMTP_STARTTLS=on SMTP_TLS_CHECKCERT=on SMTP_AUTH=on SMTP_USER=foo SMTP_PASSWORD=bar [email protected]
啟動 docker compose
docker compose up -d docker compose logs -f
更新版本
cd /var/librenms docker compose down docker compose pull docker compose up -d
命令列操作
- 新增監控節點 Exp. 10.0.0.197 / snmp community : mypass001
docker compose exec librenms lnms device:add 10.0.0.197 -c mypass001
- 手動執行掃描自動加入監控節點
- 掃描參數設定
- [Global Settings]→[Discovery]→[Networks]→[Autodiscovery Networks] 加入掃描網路範圍 Exp. 10.0.0.0/24
- [Global Settings]→[Poller]→[SNMP]→[Communities (priority)] 加入 SNMP Agent 端的 Communities Exp. nms_ckey001 (預設 public)
- 進行自動掃描
docker compose exec librenms ./snmp-scan.py
- 設定每小時自動掃描自動加入監控節點
- 建立 cron.txt
0 * * * * cd /var/librenms && docker compose exec librenms ./snmp-scan.py > /tmp/snmp-scan.log 2>&1
- 啟動 crontab
crontab cron.txt crontab -l
設定告警條件(Alert Rules)
- Alerts → Alert Rules → Click here to create the default alert rules!
設定告警通知(Alert Transports)
常見問題
- 已經安裝的 LibreNMS 主機設定好 snmpd , 卻無法在 LibreNMS 成功加入, 出現 SNMP v2c: No reply with community public 無法存取狀況
- 常見的問題是 LibreNMS 的 snmpd.conf 內所設定授權的 IP 範圍不正確, Exp. LibreNMS 主機 IP : 192.168.11.248 , 所以正常就會設定授權 IP 類似 192.168.11.248/32 Exp. snmod.conf 內設定為
: com2sec mylibrenms 192.168.11.248/32 public :
但是這環境已經有 docker 網路, 所以 LibreNMS 連過去主機會使用到 Docker 的網段 Exp. 172.20.0.0/16
localadmin@pve-librenms:~$ docker network inspect librenms_default | grep "Subnet" "Subnet": "172.20.0.0/16",
因此需要將主機 snmpd.conf 的授權 IP 改成這 Docekr 網段 Exp.
: com2sec mylibrenms 172.20.0.0/16 public :
修改 snmpd.conf 後重啟 snmpd 服務就可
- 第一次啟動時 docker compose logs librenms 一直出現 librenms | nginx: [emerg] socket() [::]:8000 failed (97: Address family not supported by protocol)
- 主要是該 VM 沒有啟用支援 ipv6, 因此必須將 nginx 內的設定檔關閉 Listen ipv6
- 修改 compose.yml 設定 LISTEN_IPV6=false
: librenms: image: librenms/librenms:latest : environment: : - "LISTEN_IPV6=false" :
- 重新啟動
docker compose up -d