如何在 Rocky Linux 上安装 LibreNMS 监控解决方案
在此页
- 先决条件
- 设置存储库
- 安装包依赖
- 设置防火墙
- 下载 LibreNMS 源代码
- 为 LibreNMS 安装 PHP 依赖项
- 配置 PHP-FPM
- 配置 MariaDB 服务器
- 设置 Nginx 服务器块
- 配置 SELinux
- 完成 LibreNMS 配置
- 访问 LibreNMS Web 安装
- 结论
LibreNMS 是一种监控工具,支持使用多种协议进行自动发现,包括 SNMP、ARP、OSPF 和 BGP。要监控操作系统,您可以使用 SNMP 协议,该协议可用于大多数操作系统,包括 Linux、Windows 和 BSD。
存在三个版本的 SNMP 协议,v1 和 v2,仅使用社区密码进行保护,以及支持密码进行身份验证和加密的协议 v3。对于生产环境,推荐使用SNMP协议v3,比v2和v1更安全。
在本指南中,您将学习如何在 Rocky Linux 服务器上安装 LibreNMS 监控工具。本指南包括 LEMP 堆栈(Nginx、MariaDB 和 PHP-FPM)的安装和 SNMP 服务的基本配置。
到最后,您将拥有生产就绪的监控解决方案 LibreNMS,您只需添加一个新的主机或服务器或设备来监控 LibreNMS。
先决条件
要完成本指南,您需要满足以下要求:
- Rocky Linux 服务器 - 此示例使用 Rocky Linux 8。
- 具有 sudo root/管理员权限的非 root 用户。
- 本地部署的本地域名。
设置存储库
在开始安装软件包之前,您现在将在 Rocky Linux 系统上设置存储库。您将需要添加 EPEL 存储库(企业 Linux 的额外软件包)和 PHP Remi 存储库。
运行以下 dnf 命令将 EPEL 存储库添加到您的系统。
sudo dnf install epel-release
在提示确认时输入 Y,然后按 ENTER 继续。

接下来,运行以下 dnf 命令以添加 PHP Remi 存储库。此存储库提供多个版本的 PHP,其中包括安装 LibreNMS 所需的最新 PHP 8.1。
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
现在输入 Y 并按 ENTER 继续。

添加 EPEL 和 Remi 存储库后,使用下面的 dnf 命令进行验证。
sudo dnf repolist
您应该会看到 EPEL 和 Remi 存储库已添加并在您的 Rocky Linux 系统上可用。

安装包依赖
添加 EPEL 和 Remi 存储库后,您现在将开始为 LibreNMS 安装软件包依赖项。这包括 LEMP 堆栈、SNMP 包和一些基本的 Python 依赖项。
在开始安装之前,运行以下命令以启用 PHP 存储库模块 remi-8.1。最新版本的 LibreNMS 至少需要 PHP 8。
sudo dnf reset php
sudo dnf module enable php:remi-8.1
输入 y 以确认并启用 PHP Remi 8.1 存储库。

接下来,运行以下 dnf 命令为 LibreNMS 安装包依赖项。当提示确认安装时,输入 y 并按 ENTER 继续,安装将开始。
sudo dnf install bash-completion cronie fping git ImageMagick mariadb-server mtr net-snmp net-snmp-utils nginx nmap php-fpm php-cli php-common php-curl php-gd php-gmp php-json php-mbstring php-process php-snmp php-xml php-zip php-mysqlnd python3 python3-PyMySQL python3-devel python3-redis python3-memcached python3-pip python3-systemd rrdtool unzip

依赖安装完成后,运行如下命令启动并启用Nginx、MariaDB、PHP-FPM、snmpd等服务。
sudo systemctl enable nginx php-fpm mariadb snmpd
sudo systemctl start nginx php-fpm mariadb snmpd
此时,一些基础服务Nginx、MariaDB、PHP-FPM、snmpd会在系统启动时自动启动。所有这些服务都在运行。

设置防火墙
对于此示例,我们使用启用了 firewalld 的 Rocky Linux。现在您将向 firewalld 添加 HTTP 和 HTTPS 协议。
运行以下 firewall-cmd 命令将 HTTP 和 HTTPS 服务添加到 firewalld。您应该得到输出消息成功,这意味着新规则已添加。
sudo firewall-cmd --permanent --zone public --add-service http
sudo firewall-cmd --permanent --zone public --add-service https
接下来,重新加载 firewalld 以应用新的更改。然后,使用以下命令验证 firewalld 状态。
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
您将收到添加到 firewalld 的 HTTP 和 HTTPS 协议的输出。

下载 LibreNMS 源代码
在此步骤中,您将从 GitHub 下载 LibreNMS 源代码。但在此之前,您还将创建一个新的专用用户 librenms,用于运行 LibreNMS 应用程序。
运行以下命令创建一个新的系统用户 librenms。该用户将用于运行 LibreNMS 应用程序。
sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
现在将您的工作目录移动到 /opt 并通过下面的 git 命令下载 LibreNMS 源代码。您现在应该得到一个新目录 /opt/librenms,它将用作 LibreNMS 安装目录。
cd /opt
git clone https://github.com/librenms/librenms.git

更改 LibreNMS 安装目录 /opt/librenms 的所有权和权限。安装的所有权应该是 librenms 用户,权限 771 将允许用户在目录上读写和执行。
sudo chown -R librenms:librenms /opt/librenms
sudo chmod 771 /opt/librenms
最后,运行以下命令为某些 LibreNMS 目录设置访问控制列表。这将授予 librenms 组在某些特定的 LibreNMS 目录上读取、写入和执行的权限。
sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/

为 LibreNMS 安装 PHP 依赖项
下载 LibreNMS 源代码并配置正确的权限后,您现在将为 LibreNMS 安装 PHP 依赖项。
使用以下命令以 librenms 用户身份登录。
su - librenms
现在,通过安装程序脚本安装 PHP 依赖项,如下所示。
./scripts/composer_wrapper.php install --no-dev
您现在将看到 LibreNMS 所需的 PHP 依赖项的安装。您还将看到为 LibreNMS 安装 Python 包。

PHP 依赖项安装完成后,您现在可以通过按 Ctrl+d 从用户 librenms 退出,或者您可以键入 exit 命令。
配置 PHP-FPM
在此步骤中,您将为 LibreNMS 配置 PHP-FPM 安装。您将修改默认配置 /etc/php.ini 并为 LibreNMS 设置特定的 PHP-FPM 池。
运行以下命令为您的 Rocky Linux 系统设置正确的时区。
sudo timedatectl set-timezone Europe/Stockholm
现在使用以下 nano 编辑器编辑 PHP 配置 /etc/php.ini。
sudo nano /etc/php.ini
取消注释 date.timezone 选项并使用当前服务器时区更改值。
date.timezone = Europe/Stockholm
完成后保存文件并关闭编辑器。
接下来,将默认的 PHP-FPM 池配置 www.conf 复制到 librenms.conf。在此示例中,您将为 LibreNMS 监控工具设置特定的 PHP-FPM 池。
cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf
现在使用以下 nano 编辑器编辑 PHP-FPM 池配置 /etc/php-fpm.d/librenms.conf。
sudo nano /etc/php-fpm.d/librenms.conf
将默认池名称从 [www] 更改为 [librenms]。
[librenms]
将默认用户和组更改为 librenms。这将作为用户和组 librenms 运行 PHP-FPM 进程。
user = librenms
group = librenms
最后,将监听选项更改为 /run/php-fpm-librenms.sock。这将为 PHP-FPM 库指定 sock 文件。
listen = /run/php-fpm-librenms.sock
完成后保存文件并退出编辑器。
现在运行以下 systemctl 命令以重新启动 PHP-FPM 服务并应用新的更改。
sudo systemctl restart php-fpm

配置 MariaDB 服务器
配置 PHP-FPM 后,您现在将设置 MariaDB 数据库服务器并为 LibreNMS 创建新的数据库和用户。
LibreNMS 需要启用了 InnoDB 的 MariaDB 数据库服务器。所以现在你需要启用它。然后,您将为 LibreNMS 创建一个新的数据库和用户。
使用以下 nano 编辑器编辑 MariaDB 服务器配置 /etc/my.cnf.d/mariadb-server.cnf。
sudo nano /etc/my.cnf.d/mariadb-server.cnf
将以下配置放在 [mysqld] 部分下。
[mysqld]
....
innodb_file_per_table=1
lower_case_table_names=0
完成后保存文件并退出编辑器。
现在运行下面的 systemctl 命令以重新启动 MariaDB 服务并应用新的更改。 MariaDB 服务器现在在启用 InnoDB 数据库引擎的情况下运行。
sudo systemctl restart mariadb
接下来,通过下面的 mysql 命令登录到 MariaDB shell。当提示输入密码时,您只需按 ENTER 或输入 MariaDB root 密码即可。
sudo mysql -u root -p
运行以下查询为 LibreNMS 创建新的数据库和用户。在此示例中,您将创建一个新数据库和用户 librenms,并确保使用您的密码更改数据库密码。
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';
FLUSH PRIVILEGES;

接下来,运行以下查询以验证数据库用户的权限 [email 。
SHOW GRANTS FOR ;
您应该会看到用户 librenms@localhost 拥有数据库 librenms 的权限。

现在键入 exit 从 MariaDB shell 注销。
设置 Nginx 服务器块
配置 MariaDB 服务器并创建数据库和用户后,您现在将为 LibreNMS 创建一个新的 Nginx 服务器块配置。
在开始之前,请确保您已决定将用于 LibreNMS 的本地域。在此示例中,LibreNMS 应使用域 librenms.hwdomain.io 运行。
使用以下 nano 编辑器创建一个新的 Nginx 服务器块配置 /etc/nginx/conf.d/librenms.conf。
sudo nano /etc/nginx/conf.d/librenms.conf
将以下配置添加到文件中,并确保将域名更改为您的域。
server {
listen 80;
server_name librenms.hwdomain.io;
root /opt/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 ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php-fpm-librenms.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
完成后保存文件并退出编辑器。
接下来,运行以下命令来验证 Nginx 配置并确保配置正确。
sudo nginx -t
如果您的 Nginx 配置正确,您将看到输出消息,例如测试成功 - Syntax OK。
现在重新启动 Nginx 服务以应用新的服务器块配置。
sudo systemctl restart nginx

至此,您已经为 LibreNMS 完成了 LEMP Stack(Nginx、MariaDB 数据库和 PHP-FPM)的配置。此外,LibreNMS 现在应该在您的 Rocky Linux 系统上运行。
配置 SELinux
对于本指南,您将在强制模式下启用 SELinux 的情况下运行 LibreNMS。因此,您现在将为 LibreNMS 设置 SELinux 规则。
首先,运行下面的 dnf 命令将软件包 policycoreutils-python-utils 安装到您的 Rocky Linux 系统。这个包提供了多个管理 SELinux 的命令行。
sudo dnf install policycoreutils-python-utils
出现提示时,输入 y 确认并按 ENTER 继续。

接下来,运行以下命令为 LibreNMS 源代码设置标签。
semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/html(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/(rrd|storage)(/.*)?'
semanage fcontext -a -t httpd_log_t "/opt/librenms/logs(/.*)?"
semanage fcontext -a -t bin_t '/opt/librenms/librenms-service.py'
restorecon -RFvv /opt/librenms
chcon -t httpd_sys_rw_content_t /opt/librenms/.env

运行以下命令以允许访问 Nginx Web 服务器的某些服务。
setsebool -P httpd_can_sendmail=1
setsebool -P httpd_execmem 1
现在,使用以下 nano 编辑器创建一个新文件 http_fping.tt。
nano http_fping.tt
将以下配置添加到文件中。
module http_fping 1.0;
require {
type httpd_t;
class capability net_raw;
class rawip_socket { getopt create setopt write read };
}
#============= httpd_t ==============
allow httpd_t self:capability net_raw;
allow httpd_t self:rawip_socket { getopt create setopt write read };
完成后保存文件并退出编辑器。
接下来,运行以下命令将 http_fping.tt 转换为 SELinux 的格式。然后,将新的编译规则添加到 SELinux 中。
checkmodule -M -m -o http_fping.mod http_fping.tt
semodule_package -o http_fping.pp -m http_fping.mod
semodule -i http_fping.pp

现在您已经完成了 LibreNMS 的 SELinux 配置。接下来,您将为 LibreNMS 设置一些额外的配置。
完成 LibreNMS 配置
要完成 LibreNMS 配置,您现在将设置 lnms 命令行,复制一些默认配置 LibreNMS,包括 cron 和 logrotate 的配置。此外,您将为 LibreNMS 设置 SNMP 服务。
运行以下命令以启用lnms 命令行并复制lnms 命令的bash 补全。
ln -s /opt/librenms/lnms /usr/bin/lnms
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
将 LibreNMS cron 的示例配置复制到 /etc/cron.d/librenms。
sudo cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
将 LibreNMS 的默认 logrotate 配置复制到 /etc/logrotate.d/librenms。
sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

现在将默认的 snmpd 服务配置复制到 /etc/snmp/snmpd.conf。然后,使用 nano 编辑器编辑新文件 /etc/snmp/snmpd.conf。
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
sudo nano /etc/snmp/snmpd.conf
使用您的密码更改 snmpd 服务 RANDOMSTRINGGOESHERE 的默认社区密码。
# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string
com2sec readonly default RANDOMSTRINGGOESHERE
完成后保存文件并退出编辑器。
接下来,下载 LibreNMS 将使用的二进制文件,用于自动检测每个目标主机的操作系统。然后,通过更改默认权限使其可执行。
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro

最后,重新启动 snmpd 服务以应用新更改和新配置。
systemctl restart snmpd
现在所有的基本配置都完成了。接下来,您将通过网络浏览器启动 LibreNMS 安装。
访问 LibreNMS Web 安装
在您的本地计算机上,编辑 /etc/hosts 文件并定义您的 LibreNMS 安装的本地域名。另外,请务必将 IP 地址更改为您的服务器 IP 地址。
192.168.5.100 librenms.hwdomain.io
现在打开网络浏览器并访问您的 LibreNMS 安装的域名(即:http://librenms.hwdomain.io/)。
首先,LibreNMS 安装程序将检查安装环境。确保所有要求都标记为绿色,这意味着系统已准备好安装 LibreNMS。
单击数据库图标继续。

现在输入您的 LibreNMS 的详细信息数据库和用户,然后单击检查凭据。如果您的数据库凭据正确,该部分将标记为绿色。

现在单击构建数据库开始 LibreNMS 的数据库迁移。

数据库迁移完成后,您将看到 Build Database 部分标记为绿色。
单击钥匙图标开始为 LibreNMS 配置管理员用户。

现在为您的 LibreNMS 安装输入新的管理员用户、密码和电子邮件地址,然后单击添加用户。

现在安装完成,您将看到以下页面。可以看到安装完成,配置写入到.env文件中。

现在单击验证您的安装链接以验证 LibreNMS 安装。
您现在应该被重定向到 LibreNMS 登录页面。输入您的管理员用户和密码,然后单击登录。

现在确保所有配置都标记为 OK,这意味着配置没有错误。
您还可以按照 LibreNMS 推荐的说明修复所有错误或警告。

您现在可以添加新的目标主机、虚拟机或网络设备来监控 LibreNMS Monitoring Solution。
结论
恭喜!您已经在 Rocky Linux 服务器上安装了 LibreNMS 监控解决方案。您还了解了 Rocky Linux 上 LEMP 堆栈(Nginx、MariaDB 和 PHP-FPM)的基本配置。
从这里,您可以继续添加要监控的主机或目标机器、设置 LibreNMS 代理、设置警报或通知、设置与 Graylog 的第三方集成,以及执行其他任务。