返回 2026-05-08
🛠 工具 / 开源

在 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、无复杂加固。目标是搭建一个可用的环境,供后续扩展使用。

前提假设

  • FreeBSD 15.0-RELEASE,运行在 jail 或专用虚拟机/主机上
  • nginx + php-fpm + MySQL 8.4
  • 从官方软件包安装 LibreNMS,而非通过 git clone
  • 开始之前先说明一点:本指南中使用纯 HTTP 是为了完成首次配置。如果你的 LibreNMS 实例不会局限于私有网络或 VPN 之后,则必须配置 HTTPS,这不是可选项。

    安装步骤

    pkg install librenms mysql84-server python3 nginx

    LibreNMS 目前依赖 PHP 8.4。若想提升 PHP 性能,请同时安装 OPcache:

    pkg install php84-opcache

    MySQL

    在首次启动 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 作为占位符——请勿照搬。

    mysql
    CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
    exit

    php-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/Rome

    nginx

    由于此 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 start

    LibreNMS 配置

    复制默认配置文件:

    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 并至少设置:

  • DB_DATABASE - librenms
  • DB_USERNAME - librenms
  • DB_PASSWORD - 实际使用的密码(请不要用 password)
  • 接着添加这一行,告知 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 官方文档非常详尽,我在此处无需赘述。

    需要完整排版与评论请前往来源站点阅读。