使用Docker Compose搭建LibreNMS网络监控系统

使用Docker Compose搭建LibreNMS网络监控系统

引言

在当今复杂的网络环境中,无论是企业数据中心、云计算平台还是家庭实验室,都需要一套可靠的网络监控系统。下面介绍一款功能强大的开源网络监控工具------LibreNMS,并使用Docker Compose快速搭建一个完整的监控环境。

一、什么是LibreNMS?

LibreNMS是一个功能齐全的、基于PHP/MySQL的开源网络监控系统,它是Observium的一个分支,但采用完全开源的开发模式。LibreNMS能够自动发现网络中的设备(支持多种协议如SNMP),并提供详细的性能监控、警报通知和可视化报告功能。

简单来说,您可以把它想象成网络设备的"健康体检中心",它能持续监控您网络中所有设备(路由器、交换机、服务器等)的运行状态,并在出现问题时及时发出警报。

二、为什么需要网络监控系统?

1. 主动预警,防患未然

网络故障往往不是突然发生的,而是有征兆的。监控系统可以提前发现CPU使用率过高、内存不足、网络拥塞等问题,让您在故障发生前采取行动。

2. 快速定位问题

当网络出现问题时,LibreNMS能帮助您快速定位到具体是哪个设备、哪个端口、哪个服务出了问题,大大缩短故障排查时间。

3. 容量规划和趋势分析

通过长期收集的性能数据,您可以了解设备的负载趋势,为未来的硬件升级和容量规划提供数据支持。

4. 满足合规要求

许多行业标准(如ISO27001、等级保护)都要求对关键网络设备进行监控和日志记录。

三、LibreNMS能解决什么问题?

  1. 设备发现与管理:自动发现网络中的设备,并分类管理
  2. 性能监控:监控CPU、内存、磁盘、网络流量等关键指标
  3. 故障告警:通过邮件、Slack、Telegram等多种方式发送告警
  4. 可视化展示:提供直观的图表和仪表板展示监控数据
  5. 报表生成:自动生成日报、周报、月报等统计报表
  6. 配置管理:跟踪设备配置变更,支持配置备份

四、使用Docker Compose搭建LibreNMS

下面我们将使用Docker Compose来搭建LibreNMS,这种方法的最大优点是一键部署、环境隔离、易于维护

1、环境准备

首先确保您的系统已经安装了Docker。如果还没有安装,可以参考以下命令(以Ubuntu为例):

bash 复制代码
# 安装Docker
sudo apt update
sudo apt install docker.io -y

# 启动Docker服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

2、搭建步骤详解

步骤1:拉取镜像(从国内镜像加速)

由于网络原因,我们从华为云镜像仓库拉取镜像,速度更快:

bash 复制代码
# 拉取并重命名MariaDB数据库镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/mariadb:10
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/mariadb:10  docker.io/library/mariadb:10

# 拉取并重命名LibreNMS主程序镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/librenms/librenms:26.1.1
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/librenms/librenms:26.1.1  docker.io/librenms/librenms:latest

# 拉取并重命名Redis缓存镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:7.2-alpine
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:7.2-alpine  docker.io/redis:7.2-alpine

# 拉取并重命名邮件发送服务镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/crazymax/msmtpd:latest
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/crazymax/msmtpd:latest  docker.io/crazymax/msmtpd:latest

为什么需要这些组件?

  • MariaDB:存储监控数据、设备信息、用户配置等
  • Redis:作为缓存,提高系统性能
  • msmtpd:用于发送告警邮件
  • LibreNMS:主监控程序
步骤2:安装Docker Compose

Docker Compose是一个用于定义和运行多容器Docker应用的工具:

bash 复制代码
# 下载最新版Docker Compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 添加执行权限
chmod +x /usr/local/bin/docker-compose
步骤3:准备配置文件
bash 复制代码
# 创建项目目录
mkdir librenms
cd librenms

# 下载LibreNMS Docker官方配置
wget https://github.com/librenms/docker/archive/refs/heads/master.zip
unzip master.zip

# 进入示例配置目录
cd docker-master/examples/compose
步骤4:修改配置文件

为了让LibreNMS有足够的权限执行网络发现等操作,我们需要修改配置文件:

bash 复制代码
sed -i '/^[[:space:]]*image:/a\    privileged: true' compose.yml

为什么要添加privileged: true

这个设置让容器内的进程拥有主机系统的特权,主要是为了:

  • 能够使用ICMP协议进行ping扫描
  • 能够执行网络发现和ARP扫描
  • 在某些环境下需要访问硬件信息

注意:在生产环境中,应该使用更精细化的权限控制,而不是直接给特权模式。

步骤5:启动服务
bash 复制代码
# 停止并移除已有的容器(如果是首次安装,这步没有影响)
docker-compose down

# 后台启动所有服务
docker-compose up -d

# 查看启动日志
docker-compose logs
步骤6:扫描网络设备

等待所有容器启动完成后(通常需要1-2分钟),我们可以开始扫描网络中的设备:

bash 复制代码
# 进入LibreNMS容器
docker exec --user librenms -it librenms /bin/bash

# 扫描网络中的设备(将10.10.0.0/16替换为您的网络段)
python3 snmp-scan.py 10.10.0.0/16 -t 5 --ping-fallback

参数解释:

  • 10.10.0.0/16:要扫描的网络段,请根据您的实际网络修改
  • -t 5:使用5个线程并行扫描
  • --ping-fallback:如果SNMP不可用,尝试使用ping发现设备

重要提示:被监控的设备需要开启SNMP服务。对于Linux服务器,可以这样安装和配置:

bash 复制代码
# Ubuntu/Debian系统
sudo apt install snmpd snmp -y

systemctl enable snmpd
systemctl start snmpd
systemctl status snmpd

五、访问Web控制台

所有服务启动后,您可以通过浏览器访问LibreNMS的Web界面:

bash 复制代码
http://<您的服务器IP地址>:8000

首次访问时,系统会引导您完成初始设置:

  1. 创建管理员账户
  2. 配置基本设置
  3. 添加监控设备

六、常见问题排查

1. 容器启动失败

  • 检查端口冲突:确保8000端口没有被其他程序占用
  • 检查日志:使用docker-compose logs查看详细错误信息
  • 检查磁盘空间:确保有足够的磁盘空间

2. 无法发现设备

  • 检查网络连通性:确保Docker主机能ping通目标设备
  • 检查SNMP配置:确保目标设备正确配置了SNMP
  • 检查防火墙:确保UDP 161端口(SNMP)是开放的

3. 性能问题

  • 调整扫描频率:避免过于频繁的扫描
  • 优化数据库:定期清理旧数据
  • 增加资源:为容器分配更多CPU和内存

七、总结

通过本文的指导,您已经成功搭建了一个功能完整的LibreNMS网络监控系统。这套系统不仅安装简单,而且功能强大,能够满足大多数网络监控需求。接下来,您可以:

  1. 添加更多设备:将网络中的路由器、交换机、服务器等设备都加入监控
  2. 配置告警规则:设置CPU、内存、磁盘等阈值告警
  3. 定制仪表板:创建个性化的监控仪表板
  4. 设置定期报告:让系统定期发送监控报告到您的邮箱

LibreNMS还有丰富的插件和API接口,您可以根据需要进一步扩展其功能。祝您使用愉快!

相关推荐
CS创新实验室2 小时前
《计算机网络》深入学:广域网
服务器·网络·计算机网络·408·计算机考研·广域网
Whisper_Sy2 小时前
Flutter for OpenHarmony移动数据使用监管助手App实战 - 月报告实现
android·开发语言·javascript·网络·flutter·ecmascript
小李独爱秋2 小时前
计算机网络经典问题透视:EF PHB与AF PHB深度解析——它们有何不同,各适用于何种通信量?
网络·计算机网络·信息与通信·qos·phb
先鱼鲨生2 小时前
自动化框架pytest
运维·自动化·pytest
海绵宝宝de派小星2 小时前
Linux内核源码结构全景解析
linux·运维·arm开发
Java程序员威哥2 小时前
SpringBoot多环境配置实战:从基础用法到源码解析与生产避坑
java·开发语言·网络·spring boot·后端·python·spring
yayatiantian_20222 小时前
Ubuntu 24.04 安装与配置 pyenv
linux·运维·python·ubuntu·pyenv
会员源码网2 小时前
OA+CRM一体化企业办公系统 v5.8 | 支持PC+手机端的智能管理平台
网络
zhojiew2 小时前
使用firecracker创建虚拟机和配置firecracker作为kata后端的过程
容器