尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

CentOS7部署LibreNMS网络监控平台:从安装到中文界面全攻略

发布时间:2026/9/28 1:43:59

资讯中心
01
ARTICLE

CentOS7部署LibreNMS网络监控平台:从安装到中文界面全攻略

CentOS7部署LibreNMS网络监控平台:从安装到中文界面全攻略
CentOS7 已经停止维护但很多机房和公司内网里它仍然是主力系统。我去年接手一台跑着旧业务的 CentOS7 服务器要再塞进去一套网络监控平台最终选型选了 LibreNMS。这篇文章就围绕 CentOS7 下 LibreNMS 部署、配置、中文界面设置展开把我从空白系统到成功接入设备、再切到中文界面的完整过程拆开写包括哪些坑值得绕开、哪些参数必须手动改。适合正要接手企业网络监控、又不想上太重方案的运维朋友。1. 选型与规划CentOS7 上这套监控栈的定位1.1 为什么不是 Zabbix、Cacti而是 LibreNMS我最早给公司搭监控的时候用的是 Cacti 加 RRDtool画端口流量图确实顺手但痛点也明显新增设备要手工加模板、匹配 OID图表数据量一上来处理就开始慢。后来评估过 Zabbix功能强是强但对中小规模网络来说部署和 Agent 维护都有点重尤其是监控交换机、路由器这一层SNMP 的接入体验还是不够爽利。LibreNMS 的特点在于它主要面向网络设备监控自动发现机制非常友好。你只要给它一个网段配置好 SNMP community它自己去扫描、识别设备型号、自动关联对应的 MIB 模板省掉了很多手工活。而且它自带一套比较现代的 Web UI支持多用户、告警规则、API 接口还可以分布式轮询。对一台 CentOS7 机器来说跑起来压力并不大。另外一点很实用LibreNMS 支持多语言包括中文。这一点对团队里不想碰英文界面的同事非常关键。当时也是看中这一点才决定把监控平台直接做成中文界面减少上手成本。1.2 部署前的资源与网络假设如果是一台干净的 CentOS7 最小化安装我建议至少给 2 核 CPU、2GB 内存、20GB 磁盘。监控设备在 100 台以内、轮询间隔 5 分钟的话这个配置够用。如果后续要监控几百台设备或者缩短轮询周期再把内存加到 4GB并把数据库单独放一块盘。网络方面要提前确认几件事监控服务器和目标设备之间能互通UDP 161 是 SNMP 轮询的默认端口不能挡。Web 管理界面需要放行 TCP 80 或 443。如果要用邮件告警还得保证服务器能访问外部邮件服务或内网 SMTP。我当时用的是内网隔离环境服务器没有外网访问权限安装依赖包得先准备离线仓库或者在一台能联网的机器上下载好 RPM 包再传进去。这里要给后来的人提个醒如果环境离线务必先确认 yum 源是否可用否则后面每一步都会卡住。1.3 理清核心组件再动手LibreNMS 不是单个程序它是一套组合核心组件大概是这样组件建议版本作用CentOS 77.9操作系统内核 3.10MariaDB10.5 或 10.6存储设备、用户、告警配置PHP7.4 或 8.1运行 Web 和轮询调度PHP-FPM与 PHP 同版本处理 PHP 动态请求Nginx1.20提供 Web 访问入口RRDtool系统自带即可存储历史性能图Memcached1.5缓存会话和临时数据Python 33.6部分探测脚本依赖刚开始部署时我对 PHP 版本不够重视直接用了 CentOS7 自带仓库的 PHP 5.4结果 LibreNMS 安装向导直接报版本过低。后来换了 REMI 仓库的 PHP 7.4 才顺利通过。如果你现在拉取的是 LibreNMS 最新代码建议直接上 PHP 8.1更接近官方当前测试环境。2. 环境初始化最小化系统装完后先做这三件事2.1 把网络先稳下来默认网关、DNS、网卡自启CentOS7 最小化装完我碰到最典型的问题是网卡默认没开自启。装完系统重启后发现ip addr里根本没有 IP检查/etc/sysconfig/network-scripts/ifcfg-ens33发现ONBOOTno这时候要改成yes再配置静态 IPBOOTPROTOstatic ONBOOTyes IPADDR192.168.10.20 NETMASK255.255.255.0 GATEWAY192.168.10.1 DNS1114.114.114.114 DNS28.8.8.8改完执行systemctl restart network验证。那时候我还遇到过ping 不通百度的问题排查方向就两个一是默认网关没写对二是 DNS 没配好。先用ip route看 default route 是否存在再用nslookup www.baidu.com验证 DNS 是否可用。生产环境里 DNS 经常被安全策略限制这时候优先确认内网 DNS 地址而不是强行改公共 DNS。2.2 换源与安装通用依赖CentOS7 原版 yum 源在我这边经常速度慢稳妥做法是先把 Base 源和 EPEL 源换成国内镜像源。换源的命令比较常规但有一个细节容易被忽略CentOS7 已经 EOL很多老镜像源的目录结构可能不完整建议优先使用仍然在维护的镜像源并立刻执行yum clean all yum makecache接下来安装基础工具和扩展包yum install -y vim wget git curl net-tools policycoreutils-python-utilspolicycoreutils-python一定要装后面如果要给 SELinux 单独开 SNMP 端口、设置 httpd 对特定目录的权限时需要用到semanage。即使后面选择关闭 SELinux这个包也建议提前装好省得排查时缺命令。2.3 防火墙和 SELinux 的处理方式LibreNMS 部署文档里通常会建议临时关闭防火墙和 SELinux但生产服务器不能想关就关。我的习惯是先放行必要端口再保持 SELinux 开启测试如果实在出现目录读写被拒再针对性地调整策略。放行防火墙端口firewall-cmd --permanent --add-servicehttp firewall-cmd --permanent --add-servicehttps firewall-cmd --permanent --add-port161/udp firewall-cmd --reloadSELinux 如果一定要关就把/etc/selinux/config里的SELINUXenforcing改成permissive然后重启。很多人直接改成disabled也能跑但系统升级或装安全软件时容易出现状态不一致的问题。我自己调试时用的permissive既能看到报错又不会死挡进程。3. 数据库与 PHP版本匹配决定了后面的顺畅程度3.1 升级 MariaDB 而不是用默认版本这是整套部署里我最大的一个教训。CentOS7 自带的 MariaDB 版本是 5.5LibreNMS 新版本在安装向导阶段就会提示数据库版本太旧后面创建用户、导入表结构时更是各种报错。正确做法是先把系统自带的 mariadb 相关包卸载干净然后从 MariaDB 官方仓库装 10.5 或 10.6。安装方式我建议直接配官方 yum 源选择 10.5cat /etc/yum.repos.d/mariadb.repo EOF [mariadb] name MariaDB baseurl https://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/ gpgkey https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck 1 EOF装好后启动数据库并做安全初始化systemctl enable --now mariadb mysql_secure_installationmysql_secure_installation会要求设置 root 密码、移除匿名用户、禁止 root 远程登录。这步不要跳过LibreNMS 的 Web Installer 后面要填数据库账号提前建好 root 密码免得来回折腾。3.2 PHP 7.4 的安装与扩展CentOS7 默认 yum 源里的 PHP 版本太低我建议使用 REMI 仓库启用 PHP 7.4 模块yum install -y epel-release yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum install -y yum-utils yum-config-manager --enable remi-php74启用之后安装 PHP-FPM 和常用扩展yum install -y php php-cli php-fpm php-mysql php-gd php-snmp php-curl php-mbstring php-xml php-zip php-process php-memcached这些扩展缺一个都会导致安装向导在“检查依赖”步骤卡住。特别提一下php-snmpLibreNMS 的 SNMP 轮询虽然主要靠系统 net-snmp 工具完成但 PHP 侧的 snmp 扩展会影响部分设备探测脚本没有它会出现奇怪的函数未定义报错。3.3 php.ini 必须改的几个参数PHP 安装完之后/etc/php.ini里有几个参数必须手动调否则安装或后续使用中会遇到问题date.timezone Asia/Shanghai memory_limit 512M max_execution_time 300date.timezone不设置LibreNMS 在生成图表和日志时间戳时会差若干小时中文界面上时间显示也不对。memory_limit太低Web 页面加载大流量图时会看到空白图查日志才发现是 PHP 内存耗尽。max_execution_time是给一些耗时较长的数据导入操作预留空间。改完后启动 php-fpmsystemctl enable --now php-fpm如果用的是 REMI 的 php74服务名可能是php-fpm也可能是php74-php-fpm取决于安装方式。我安装时直接用php-fpm大家先执行systemctl list-units | grep php确认一下。4. 主程序安装从 git 拉源码到 Nginx 接管网页4.1 创建专用用户、拉取源码、调整权限LibreNMS 官方建议用独立系统用户运行不推荐直接用 root。我按官方推荐创建一个librenms用户useradd -m -r -s /bin/bash librenms然后把源码放到/opt/librenmsgit clone https://github.com/librenms/librenms.git /opt/librenms chown -R librenms:librenms /opt/librenms如果内网环境不能直接访问 GitHub可以在能联网的机器上先 clone再用压缩包传到服务器。注意压缩包解压后目录权限要重新设置否则编译依赖和日志写入都会因为权限问题报错。4.2 Composer 依赖与数据库初始化LibreNMS 用 Composer 管理 PHP 依赖不能跳过。我用官方自带的 wrapper 脚本安装这样它会自动匹配当前版本所需的 Composer 版本su - librenms -c /opt/librenms/scripts/composer_wrapper.php install --no-dev这个过程会比较长耐心等。完成后直接操作数据库为 LibreNMS 建库建账号mysql -uroot -p CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER librenmslocalhost IDENTIFIED BY 这里填一个高强度密码; GRANT ALL PRIVILEGES ON librenms.* TO librenmslocalhost; FLUSH PRIVILEGES; EXIT;字符集必须指定utf8mb4否则后续中文字符在界面上可能出现乱码。我就因为看过一些老教程用了utf8结果设备备注里的 emoji 和特殊符号直接报错。4.3 走 Web Installer 而不是手改配置新版本 LibreNMS 提供了 Web Installer我强烈建议走向导而不是手写 config.php。先复制一份默认配置cp /opt/librenms/config.php.default /opt/librenms/config.php chown -R librenms:librenms /opt/librenms/config.php chmod 755 /opt/librenms/config.php然后让 Nginx 生效前可以直接访问http://服务器IP/install.php进入向导。向导会检查 PHP 扩展、数据库配置、目录权限等逐项打勾之后才能进入下一步。如果哪里不满足页面会明确告诉你是缺扩展还是目录不可写按照提示处理即可。数据库信息填第 4.2 节建好的名称、用户和密码再设置管理员的账号密码配置文件会自动生成。这里有个坑如果在执行向导之前没有复制config.php.default向导可能会提示无法写入配置文件所以复制这一步千万别省。4.4 Nginx 与 PHP-FPM 联动配置CentOS7 上安装 Nginxyum install -y nginx然后在/etc/nginx/conf.d/librenms.conf里写一个站点配置server { listen 80; server_name monitor.example.com; root /opt/librenms/html; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }注意fastcgi_pass的 socket 路径必须和 php-fpm 配置里的监听路径一致。我之前一直用默认/var/run/php-fpm/php-fpm.sock但实际启动的是www.sock导致访问页面直接 502。可以用ss -lx | grep php看当前 php-fpm 到底监听了哪个 socket 文件。改完配置后测试语法并重启nginx -t systemctl enable --now nginx如果 PHP-FPM 是以librenms用户运行还要确认 FPM 的 pool 配置里user和group是否指向正确否则页面对/opt/librenms/html下的文件没有读取权限前端会加载不出样式。5. 中文界面设置不只是一行 locale5.1 系统语言包与中文 localeLibreNMS 的界面语言读取的是运行环境下可用的 locale而不是简单丢一个“中文包”进去。所以先确认系统有没有中文 localelocale -a | grep zh_CN如果没有任何输出需要安装语言包yum install -y langpacks-zh_CN我用上面的仓库安装时报错过 “No package langpacks-zh_CN available”这是因为系统 yum 源没更新完整执行完yum makecache再装一次一般就好了。装完后可以执行localedef -f UTF-8 -i zh_CN zh_CN.UTF-8同时建议把系统默认语言改成中文cp /etc/locale.conf /etc/locale.conf.bak echo LANGzh_CN.UTF-8 /etc/locale.conf source /etc/locale.conf但这里要提醒系统语言切换成中文只影响系统命令和区域设置对 LibreNMS 本身并不产生决定性影响真正让 Web 界面变中文的是下一步的 PHP 和用户设置。5.2 PHP 时区与 LibreNMS 用户级语言切换确认/etc/php.ini中date.timezone Asia/Shanghai然后重启 php-fpmsystemctl restart php-fpm接着登录 LibreNMS Web 后台。语言切换入口不在“系统设置”里而是在右上角用户头像菜单里的 Settings 下。进入User Settings / 用户设置后找到语言选项选择简体中文保存后页面就会切换成中文界面。如果你的 LibreNMS 版本较老可能界面上没有语言选择项那需要检查config.php中是否启用了多语言支持。有些版本需要手动加入$config[app][locale] zh_CN;再加这一行时要注意不要破坏 config.php 末尾的 PHP 结束标签很多生产事故都是尾标签后面多了一个空格导致会话头输出错误。5.3 中文化之后可以顺带做的体验优化中文界面切换完成后我发现部分菜单仍然显示英文这属于正常的因为 LibreNMS 的翻译文件并没有覆盖全部模块。想要提高中文覆盖比例可以去官方翻译平台提交词条或者直接在安装目录下把对应语言的 JSON 文件补齐。但我的建议是不必为此花太多时间基础菜单和设备详情已经中文化了剩下的英文术语反而有助于后续搜日志时对上号。还可以在 User Settings 里把日期格式、默认页面、刷新时间一并调整。我一般把默认仪表盘每隔 5 分钟自动刷新网络状况一栏扫过去很直观。6. 接入设备与日常排障上线后真正花时间的部分6.1 添加第一台设备前的 SNMP 自检很多人在 GUI 里添加设备失败问题不在 LibreNMS而是 SNMP 本来就不同。添加设备前先在服务器上手动测试目标设备snmpwalk -v2c -c public -On 192.168.10.1 system能正常输出 OID 列表说明 SNMP 通。如果命令卡住或 timeout按下面顺序排查目标设备是否开启了 SNMP并配置了正确的 community。防火墙是否放行了 UDP 161。是否有 ACL 把监控服务器的 IP 拦掉了。设备 SNMP 版本是 v2c 还是 v3如果只开 v3那 GUI 添加时要切换协议。我踩过最隐蔽的一个坑设备开的是 SNMP v2c但 community 里带着特殊字符#命令里没加引号一直报错。所以在 shell 里测试时带特殊字符的 community 必须加单引号snmpwalk -v2c -c my#community 192.168.10.1 system6.2 定时任务与轮询日志LibreNMS 的轮询、发现、告警检查都依赖 cron。官方推荐的配置是使用librenms用户的 crontab或者直接写一个/etc/cron.d/librenms文件。我用的是 crontab 方式su - librenms crontab -e写入如下任务*/5 * * * * /opt/librenms/librenms-nms.php poller /dev/null 21 */5 * * * * /opt/librenms/librenms-nms.php discovery /dev/null 21 */5 * * * * /opt/librenms/librenms-nms.php check-services /dev/null 21如果在 GUI 中看到设备状态一直是灰色或长时间不更新先检查 cron 有没有执行。最直接的方式是手动跑一次su - librenms -c /opt/librenms/librenms-nms.php poller -h all看输出里有没有ERROR或WARNING。日志文件在/opt/librenms/logs/librenms.log排查问题第一件事就是tail -f这个文件。6.3 高频报错整理从 RRD 权限到 memcached部署完成、设备也接入后我整理过几个高频问题基本是部署时埋下的隐患报错现象根因解决办法页面能打开图表全是空白图RRD 目录不可写或 php-fpm 用户没权限chown -R librenms:librenms /opt/librenms/rrd添加设备后永远 pendingpoller 没执行或 cron 没生效手动跑 poller检查 cron 文件权限登录后很快掉线memcached 未启动或 php-memcached 扩展缺失systemctl enable --now memcachedSNMP timeoutUDP 161 被防火墙挡firewall-cmd --add-port161/udp数据库连接失败config.php 中 DB 信息错误或 MariaDB 没开核对 config.php 中db_user、db_pass、db_namepoller 运行很慢每次超过5分钟设备数量大且 PHP 内存不足调大memory_limit考虑分布式轮询RRD 权限问题是新手最容易遇到的一类。LibreNMS 默认把流量数据写入/opt/librenms/rrd每次 poller 运行时要创建和更新文件如果这个目录不是librenms用户所有就会出现部分设备有图、部分没图。建议安装完成后执行一次统一的权限修复chown -R librenms:librenms /opt/librenms find /opt/librenms -type d -exec chmod 775 {} \;最后再提一个常在群里看到的问题为什么设备识别出来了但部分端口流量取值明显不对。这个问题多半是设备开启了多个 SNMP community 或者网管接口太多LibreNMS 默认会把所有可用接口都采集进来。你需要在设备详情页的 Settings 里把不需要监控的端口状态改为ignore减少无效轮询也能让流量图更清爽。我在实际运维中最深的体会是LibreNMS 部署本身不复杂真正花时间的永远是环境基础——PHP 版本、数据库版本、权限、SNMP 连通性。把这些前置条件按顺序理干净中文界面设置反而是整个流程里最轻松的一步。如果你接下来准备在 CentOS7 上搭这套系统建议照着第 2 章到第 4 章的顺序走基本可以一次通过。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。