使用Docker快速部署LibreNMS

LibreNMS

简介

LibreNMS 是一款功能强大的开源网络监控系统,基于 SNMP 协议,支持自动发现网络设备并收集性能数据。
官方网站:https://www.librenms.org/
官方文档:https://docs.librenms.org/
官方下载:https://www.librenms.org/#downloads
Github地址:https://github.com/librenms/librenms/
默认服务端口:8000

Docker部署

官方文档地址:https://docs.librenms.org/Installation/Docker/

安装Docker

下载对应的软件包

docker官方历史版本下载:https://download.docker.com/linux/static/stable/
Docker-compose Github地址:https://github.com/docker/compose/releases/tag/v2.39.2

wget https://download.docker.com/linux/static/stable/x86_64/docker-28.0.4.tgz
wget https://github.com/docker/compose/releases/download/v2.39.2/docker-compose-linux-x86_64

安装docker&&Docker-compose

tar -zxvf docker-28.0.4.tgz
chmod +x docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 docker-compose-linux
mv docker/* /usr/bin/

配置服务项

vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock --selinux-enabled=false --default-ulimit nofile=65536:65536
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

启动docker

systemctl daemon-reload
systemctl enable docker
systemctl start docker
docker -v

LibreNMS部署

下载官方composer files

mkdir /opt/librenms && cd /opt/librenms
wget https://github.com/librenms/docker/archive/refs/heads/master.zip
unzip master.zip
cd docker-master/examples/compose

docker镜像下载

查看编排用到的镜像

root@ubuntu:/opt/docker-master/examples/compose# cat compose.yml | grep image
    image: mariadb:10
    image: redis:7.2-alpine
    image: crazymax/msmtpd:latest
    image: librenms/librenms:latest
    image: librenms/librenms:latest
    image: librenms/librenms:latest
    image: librenms/librenms:latest

docker在没有配置镜像加速的情况下,直接拉容器会报镜像下载的错误

root@ubuntu:/opt/docker-master/examples/compose# docker-compose up -d
[+] Running 7/7
 ✘ msmtpd Error     Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection...              15.1s 
 ✘ syslogng Error   Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connecti...                15.1s 
 ✘ snmptrapd Error  Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connect...                 15.1s 
 ✘ db Error         Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Cl...          15.1s 
 ✘ librenms Error   Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connecti...                15.1s 
 ✘ dispatcher Error Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connec...                  15.1s 
 ✘ redis Error      Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection ...             15.1s

推荐一个国内的镜像加速网站,可以直接针对单个镜像镜像下载
https://docker.aityp.com/
例如下载librenms镜像

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/librenms/librenms:latest

部署运行

调整时区和数据库账号密码,设置为中国上海时区即东八区Asia/Shanghai,其他参数按需求调整

vim .env
TZ=Asia/Shanghai
PUID=1000
PGID=1000

MYSQL_DATABASE=librenms
MYSQL_USER=librenms
MYSQL_PASSWORD=asupersecretpassword

启动容器

sudo docker compose -f compose.yml up -d

待容器启动后,浏览器直接访问:http://IP:8000/

配置验证

首次访问需要创建账号密码,根据自己需求创建即可,进入系统后先进行配置验证,以便于后续使用,使用docker部署会出现两个错误❌,都比较简单解决,可以参考下解决方法:

  • 问题1:FAIL: Scheduler is not running
    Fix:sudo cp /opt/librenms/dist/librenms-scheduler.cron /etc/cron.d/

    在网上查了很久都没有找到解决方法,然后看了一下是关于定时任务的,那么定时任务肯定就和时间有关系,于是把系统的时区和时间与容器的设置为一致,再次重建容器
root@ubuntu:~/docker-master/examples/compose# timedatectl show
Timezone=Etc/UTC
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Tue 2025-08-26 12:43:07 UTC
RTCTimeUSec=Tue 2025-08-26 12:43:07 UTC
root@ubuntu:~/docker-master/examples/compose# timedatectl set-timezone Asia/Shanghai
root@ubuntu:~/docker-master/examples/compose# timedatectl show
Timezone=Asia/Shanghai
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Tue 2025-08-26 20:43:44 CST
RTCTimeUSec=Tue 2025-08-26 20:43:44 CST

重建容器

root@ubuntu:~/docker-master/examples/compose# docker-compose down && docker-compose up -d

重建后错误解决✔

  • 问题2:WARN: base_url could be more specific Fix: lnms config:set base_url

    根据当前访问的URL配置下,Global Setting->System->Server->Base URL填写http://IP:8000,即可解决
posted @ 2025-08-26 21:01  陌熊  阅读(169)  评论(0)    收藏  举报