在 FreeBSD 上使用 LibreNMS 监控设备Monitor your devices with LibreNMS on FreeBSD
LibreNMS 是一款轻量级网络监控系统,适用于 FreeBSD 环境,能有效监控服务器、设备和服务的运行状态。相比 Zabbix 等重型方案,它资源占用少、部署简便,并提供实时告警、数据可视化和历史趋势图表。本文详细介绍了在 FreeBSD 上配置 LibreNMS 的具体步骤与最佳实践。
Stefano Marinelli
LibreNMS 多年来一直是我忠实的助手。它默默地监控着我的服务器、设备和服务的运行状态,几乎不索取任何回报——这正是你希望从一款负责守护其他一切的工具中获得的品质。相比 Zabbix 这类更重量级的解决方案,LibreNMS 是一个坚实的选择,它能对通过 SNMP 可达的几乎所有对象提供告警、数据和图表。
我通常将它安装在无法从外部访问的主机上,然后通过 VPN 让 LibreNMS 轮询所有设备:一个观察点,清晰的边界。此外,创建多个仪表盘并允许用户筛选的功能,也让我能够向客户提供其服务器状况的透明视图。在我看来,透明度始终是长期更优的策略。
与 Uptime-Kuma(以及经典的 Nagios/Munin 组合)一起,LibreNMS 运行在我的 FreeBSD 监控服务器的 jail 中,仅专注于完成本职工作。
本文将介绍在 FreeBSD 上对 LibreNMS 进行基础安装:基于软件包、无反向代理、无 HTTPS、无复杂加固。目标是搭建一个可用的环境,供后续扩展使用。
前提假设
开始之前先说明一点:本指南中使用纯 HTTP 是为了完成首次配置。如果你的 LibreNMS 实例不会局限于私有网络或 VPN 之后,则必须配置 HTTPS,这不是可选项。
安装步骤
pkg install librenms mysql84-server python3 nginxLibreNMS 目前依赖 PHP 8.4。若想提升 PHP 性能,请同时安装 OPcache:
pkg install php84-opcacheMySQL
在首次启动 MySQL 前需要设置两个参数。一旦启动后,除非重新初始化数据目录,否则无法更改。因此建议现在就确认它们。
cd /usr/local/etc/mysql
cp my.cnf.sample my.cnf在 [mysqld] 部分添加:
innodb_file_per_table=1
lower_case_table_names=0现在启动 MySQL:
service mysql-server enable
service mysql-server start在全新安装的 FreeBSD 系统中,本地 root 用户无需密码即可从命令行连接 MySQL。连接后创建数据库和用户。此处用 password 作为占位符——请勿照搬。
mysqlCREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
exitphp-fpm
编辑 /usr/local/etc/php-fpm.d/www.conf 并调整 listen 指令:
listen = /var/run/php-fpm-librenms.sock
listen.owner = www
listen.group = www
listen.mode = 0660然后从生产环境示例文件生成 php.ini:
cd /usr/local/etc
cp php.ini-production php.ini并在 php.ini 中设置时区:
date.timezone = Europe/Romenginx
由于此 jail(或主机)专用于 LibreNMS,可直接重写 /usr/local/etc/nginx/nginx.conf 中的 server 块:
server {
listen 80;
#server_name yourServerName
root /usr/local/www/librenms/html;
index index.php;
charset utf-8;
gzip on;
gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /api/v0 {
try_files $uri $uri/ /api_v0.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SERVER_SOFTWARE "";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php-fpm-librenms.sock;
fastcgi_buffers 256 4k;
fastcgi_intercept_errors on;
fastcgi_read_timeout 14400;
}
location ~ /\.(?!well-known).* {
deny all;
}
}现在启动 nginx 和 php-fpm:
service nginx enable
service nginx start
service php_fpm enable
service php_fpm startLibreNMS 配置
复制默认配置文件:
cp /usr/local/www/librenms/config.php.default /usr/local/www/librenms/config.php因为我们是从软件包安装的,该文件已包含适用于 FreeBSD 的正确命令和路径——无需逐个查找 mtr、fping、snmpwalk 等工具。
创建 RRD 图目录并设置所有权:
mkdir -p /var/db/librenms/rrd
chown -R www:www /var/db/librenms
chmod 775 /var/db/librenms/rrd然后是 .env 文件:
cd /usr/local/www/librenms
cp .env.example .env
chown www .env编辑 .env 并至少设置:
接着添加这一行,告知 LibreNMS 仍需运行 Web 安装程序:
INSTALL=true关于权限的说明。官方文档建议将整个应用树 chown -R www:www,但在 FreeBSD 上,软件包已合理设置了所有权,其中 storage/ 和 bootstrap/cache/ 目录由 www 用户可写。没有理由扩大其余代码库的权限范围。如果 validate.php 后续因写入问题报错,首先应检查:
ls -la /usr/local/www/librenms/storage /usr/local/www/librenms/bootstrap/cache现在以 www 用户身份生成 app key,因为该文件归 www 所有:
su -m www -c "php artisan key:generate"并加固 .env 文件:
chmod 600 .env刷新配置缓存:
su -m www -c "lnms config:clear"
su -m www -c "lnms config:cache"Web 安装程序
打开 http://host/install 并按照步骤操作。验证过程可能会失败,刷新缓存即可获取 install 过程中写入 config.php 的值:
su -m www -c "lnms config:clear"
su -m www -c "lnms config:cache"Web 安装程序完成后,请再次编辑 .env 文件,如果其中仍存在 INSTALL=true 这一行,请将其删除。保留该行会让安装程序重新暴露在能够通过 URL 访问的任何人面前。
轮询服务
LibreNMS 需要某种机制来实际执行轮询。在 FreeBSD 上,软件包自带一个 rc 服务,用于运行 LibreNMS 调度器,因此无需像大多数 Linux 教程所假设的那样手动管理 cron 任务。
service librenms enable
service librenms start验证
cd /usr/local/www/librenms
su -m www -c './validate.php'启动服务后,你可能会看到一些告警信息——通常是与调度器相关的,几分钟后会自动解决。待调度器稳定后再运行 validate.php。若仍有红色警告,则值得进一步排查。
后续步骤
此时你可以登录 Web 界面,开始添加设备、配置 SNMP 以及构建仪表盘。关于这些内容,LibreNMS 官方文档非常详尽,我在此处无需赘述。
需要完整排版与评论请前往来源站点阅读。