引言
LibreNMS 是一个免费开源的网络监控和自动化工具,用于监视网络设备、服务器和应用程序的性能和状态。它提供了一个集中的管理平台,帮助管理员实时监控和管理整个网络基础设施。
以下是 LibreNMS 的一些主要特点和功能:
- 自动发现:LibreNMS 可以自动发现和添加网络设备,无需手动配置。它支持各种网络设备,如路由器、交换机、防火墙、服务器等。
- 实时监控:LibreNMS 提供实时监控功能,可以监测设备的性能指标、接口流量、CPU 和内存利用率等。它还支持 SNMP、LLDP 和其他协议,以获取详细的设备信息。
- 告警和通知:LibreNMS 可以根据预定义的规则生成告警,并通过电子邮件、Slack、PagerDuty 等方式发送通知。管理员可以根据需要定制告警规则和通知方式。
- 图形化界面和报表:LibreNMS 提供直观的图形化界面,显示设备的状态和性能图表。它还提供各种报表和分析工具,帮助管理员进行容量规划和故障排除。
- 集成和扩展性:LibreNMS 支持与其他系统和工具的集成,如 SNMP Trap 收集、Syslog 日志分析等。它还提供了强大的 API,方便开发者进行自定义扩展和集成。
- 多用户支持:LibreNMS 允许创建多个用户账户,并为不同的用户分配不同的权限和访问级别。这对于团队协作和分工非常有用。
- 社区支持和更新:LibreNMS 是一个活跃的开源项目,拥有庞大的社区支持。它经常发布更新和新功能,以改进性能和安全性。
安装docker
详细可以查看我之前发的博客:无桌面版docker在Ubuntu系统上安装
docker compose
下载
sudo curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
可以选择下载上述二进制文件,到制定目录。因为比较慢,所以建议可以直接通过科学上网手段加快速度。也可以打开https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64下载到指定位置之后/usr/local/bin/,更改文件名为docker-compose
权限
下载完之后需要将可执行权限应用于安装目标路径中的独立二进制文件。
sudo chmod +x /usr/local/bin/docker-compose
LibreNMS 安装
关于libreNMS的docker安装可以参见官网:Docker - LibreNMS Docs
关于其中的参数说明可以参见:GitHub - librenms/docker: LibreNMS Docker image
如果你对docker的流程十分熟悉,那么看上面两个网页可以完全自行完成安装。
如果你不是很熟悉docker,那么请看下面的详细教程:
获取镜像
从docker官方镜像(https://hub.docker.com/r/librenms/librenms)获取镜像:
docker pull librenms/librenms
下载librenms配置文件
可以从github上拉去镜像,并且进入他的docker compose示例目录中去:
git clone https://github.com/librenms/docker.git
cd ./examples/compose # 进入docker compose示例文件夹
然后可以看见里面有以下几个文件,在linux中可以使用ls来查看,.env文件会自动隐藏,但是他是存在的:
修改原有的docker compose示例
.env
用你喜欢的编辑器打开.env文件
TZ=Europe/Paris
PUID=1000
PGID=1000
MYSQL_DATABASE=librenms
MYSQL_USER=librenms
MYSQL_PASSWORD=asupersecretpassword
我们需要再这里修改自己的mysql数据库还有时区(TZ),关于这几个参数
如果你没有新建自己的MySQL数据库则不需要更改,如果你已经有了mysql数据库,则要匹配到自己mysql数据库的用户名和密码。
时区建议修改为Asia/Shanghai
compose.yml
name: librenms
services:
db:
image: mariadb:10.5
container_name: librenms_db
command:
- "mysqld"
- "--innodb-file-per-table=1"
- "--lower-case-table-names=0"
- "--character-set-server=utf8mb4"
- "--collation-server=utf8mb4_unicode_ci"
volumes:
- "./db:/var/lib/mysql"
environment:
- "TZ=${TZ}"
- "MYSQL_ALLOW_EMPTY_PASSWORD=yes"
- "MYSQL_DATABASE=${MYSQL_DATABASE}"
- "MYSQL_USER=${MYSQL_USER}"
- "MYSQL_PASSWORD=${MYSQL_PASSWORD}"
restart: always
redis:
image: redis:5.0-alpine
container_name: librenms_redis
environment:
- "TZ=${TZ}"
restart: always
msmtpd:
image: crazymax/msmtpd:latest
container_name: librenms_msmtpd
env_file:
- "./msmtpd.env"
restart: always
librenms:
image: librenms/librenms:latest
container_name: librenms
hostname: librenms
cap_add:
- NET_ADMIN
- NET_RAW
ports:
- target: 8000
published: 8000
protocol: tcp
depends_on:
- db
- redis
- msmtpd
volumes:
- "./librenms:/data"
env_file:
- "./librenms.env"
environment:
- "TZ=${TZ}"
- "PUID=${PUID}"
- "PGID=${PGID}"
- "DB_HOST=db"
- "DB_NAME=${MYSQL_DATABASE}"
- "DB_USER=${MYSQL_USER}"
- "DB_PASSWORD=${MYSQL_PASSWORD}"
- "DB_TIMEOUT=60"
restart: always
dispatcher:
image: librenms/librenms:latest
container_name: librenms_dispatcher
hostname: librenms-dispatcher
cap_add:
- NET_ADMIN
- NET_RAW
depends_on:
- librenms
- redis
volumes:
- "./librenms:/data"
env_file:
- "./librenms.env"
environment:
- "TZ=${TZ}"
- "PUID=${PUID}"
- "PGID=${PGID}"
- "DB_HOST=db"
- "DB_NAME=${MYSQL_DATABASE}"
- "DB_USER=${MYSQL_USER}"
- "DB_PASSWORD=${MYSQL_PASSWORD}"
- "DB_TIMEOUT=60"
- "DISPATCHER_NODE_ID=dispatcher1"
- "SIDECAR_DISPATCHER=1"
restart: always
syslogng:
image: librenms/librenms:latest
container_name: librenms_syslogng
hostname: librenms-syslogng
cap_add:
- NET_ADMIN
- NET_RAW
depends_on:
- librenms
- redis
ports:
- target: 514
published: 514
protocol: tcp
- target: 514
published: 514
protocol: udp
volumes:
- "./librenms:/data"
env_file:
- "./librenms.env"
environment:
- "TZ=${TZ}"
- "PUID=${PUID}"
- "PGID=${PGID}"
- "DB_HOST=db"
- "DB_NAME=${MYSQL_DATABASE}"
- "DB_USER=${MYSQL_USER}"
- "DB_PASSWORD=${MYSQL_PASSWORD}"
- "DB_TIMEOUT=60"
- "SIDECAR_SYSLOGNG=1"
restart: always
snmptrapd:
image: librenms/librenms:latest
container_name: librenms_snmptrapd
hostname: librenms-snmptrapd
cap_add:
- NET_ADMIN
- NET_RAW
depends_on:
- librenms
- redis
ports:
- target: 162
published: 162
protocol: tcp
- target: 162
published: 162
protocol: udp
volumes:
- "./librenms:/data"
env_file:
- "./librenms.env"
environment:
- "TZ=${TZ}"
- "PUID=${PUID}"
- "PGID=${PGID}"
- "DB_HOST=db"
- "DB_NAME=${MYSQL_DATABASE}"
- "DB_USER=${MYSQL_USER}"
- "DB_PASSWORD=${MYSQL_PASSWORD}"
- "DB_TIMEOUT=60"
- "SIDECAR_SNMPTRAPD=1"
restart: always
如果你已经有自己的redis也需要对自己的redis参数进行修改,其余的几乎不需要更改,但是需要将所有的DB_HOST参数修改为自己的主机ip。
关于详细的参数配置可以查看这个网站https://github.com/librenms/docker/tree/master里的说明。
剩下的两个文件几乎不需要更改,保留即可。
安装启动
在your_path/examples/compose目录下,输入以下命令,启动docker-container
sudo docker compose up -d
如果已经成功运行,你可以输入http://localhost:8000,访问librenms UI界面。
应该会需要创建用户,如果没有创建用户环节,则默认密码和账户都是librenms。如果需要更改,可以在个人设置里修改自己的密码。