本页内容

  • 先决条件
  • 安装依赖
  • 创建系统用户
  • 配置 PHP-FPM
  • 配置 MariaDB 服务器
  • 为 LibreNMS 创建 MariaDB 数据库和用户
  • 下载并安装 LibreNMS
  • 配置 SELinux
  • 配置 Firewalld
  • 配置 SNMP 服务
  • LibreNMS 其他设置
  • 配置 Nginx
  • 通过 Web 浏览器安装 LibreNMS
  • 结论

LibreNMS 是一个支持通过多种协议(包括 SNMP、ARP、OSPF 和 BGP)自动发现的监控工具。要监控操作系统,可以使用 SNMP 协议,该协议在大多数操作系统上都可用,包括 Linux、Windows 和 BSD。

SNMP 协议有三个版本:v1 和 v2 仅使用团体名(community)密码进行保护,而 v3 协议支持用于认证和加密的密码。对于生产环境,建议使用 SNMP v3 协议,它比 v2 和 v1 更安全。

在本指南中,我将向您展示如何在 AlmaLinux 9 服务器上安装 LibreNMS 监控工具。我将使用 PHP-FPM、Nginx Web 服务器和 MariaDB 数据库来运行 LibreNMS。

先决条件

要完成本指南,您必须具备以下条件:

  • 一台 AlmaLinux 9 服务器——本演示使用主机名为 almalinux9 的服务器。
  • 一个具有 sudo/root 权限的非 root 用户。

安装依赖

首先,您将把 EPEL 和 Remi 仓库添加到系统中。然后,安装 LibreNMS 的软件包依赖。

运行以下 dnf 命令,将 EPEL 仓库和 PHP Remi 仓库添加到您的系统。

sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

部分依赖在 EPEL 仓库中可用,因此您必须将 EPEL 添加到系统中。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

PHP Remi 仓库将用于安装 PHP-FPM 软件包。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

现在,运行以下命令重置 PHP 的默认仓库模块。然后,启用 LibreNMS 所需的 PHP 8.1 版本的 PHP Remi 仓库。

sudo dnf module reset php
sudo dnf module enable php:remi-8.1

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

接下来,运行以下 dnf 命令安装 LibreNMS 的软件包依赖。这包括 PHP-FPM、Nginx Web 服务器、MariaDB 服务器、一些 Python3 软件包,以及 rrdtool、unzip、ImageMagick、git、fping 等系统工具。

sudo dnf install -y 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-redis python3-memcached python3-pip python3-systemd rrdtool unzip

安装完成后,进入下一步。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

创建系统用户

在本节中,您将创建一个名为 librenms 的新系统用户,用于运行 LibreNMS。

运行以下命令创建新用户 librenms。

sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"

详细选项:

  • -d /opt/librenms:将新用户的主目录指定为 /opt/librenms。
  • -M:不为新用户创建主目录。
  • -r:将新用户定义为系统用户。
  • -s "$(which bash)":将新用户的 shell 指定为 bash。

配置 PHP-FPM

在接下来的部分中,您将为 LibreNMS 配置 PHP-FPM。您将在系统上设置正确的时区,然后添加一个 LibreNMS 将使用的专用 PHP-FPM 池。首先,运行以下命令配置服务器上的时区。

sudo timedatectl set-timezone Europe/Stockholm
sudo ln -s /usr/share/zoneinfo/Europe/Stockholm /etc/localtime

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

然后,使用以下 nano 编辑器打开文件 /etc/php.ini。

sudo nano /etc/php.ini

取消注释 date.timezone 参数,并将值更改为适当的时区,如下所示:

date.timezone=Europe/Stockholm

完成后保存并退出文件。

现在,运行以下命令,将默认的 PHP-FPM 池配置复制到 /etc/php-fpm.d/librenms.conf,并使用 nano 编辑器打开它。

sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf
sudo nano /etc/php-fpm.d/librenms.conf

将 PHP-FPM 池名称从 www 更改为 librenms。

[librenms]

将默认的用户和用户组更改为 librenms。

user = librenms
group = librenms

将新 PHP-FPM 池的默认 sock 文件更改为 /run/php-fpm/librenms.sock。

listen = /run/php-fpm/librenms.sock

完成后保存文件并退出编辑器。

现在,运行以下命令启动并启用 PHP-FPM 服务。

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

然后使用以下命令验证 PHP-FPM 服务,以确保服务正在运行。

sudo systemctl status php-fpm

如果正在运行,您的终端将显示以下输出:

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

此外,您还可以使用以下命令验证 LibreNMS 的 PHP-FPM sock 文件。

ss -pl | grep php-fpm

如果配置成功,您应该能看到 PHP-FPM sock 文件 /run/php-fpm/librenms.sock 可用。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

配置 MariaDB 服务器

配置完 PHP-FPM 后,您将配置 MariaDB 服务器。您将为 MariaDB 服务器添加额外的配置,并通过 mariadb-secure-installation 工具加固 MariaDB。

使用以下 nano 编辑器打开默认的 MariaDB 服务器配置文件 /etc/my.cnf.d/mariadb-server.cnf。

sudo nano /etc/my.cnf.d/mariadb-server.cnf

在 ' [mysqld] ' 小节下插入以下配置。

innodb_file_per_table=1
lower_case_table_names=0

完成后保存文件并退出编辑器。

现在运行以下命令启动并启用 MariaDB 服务。

sudo systemctl start mariadb
sudo systemctl enable mariadb

接下来,运行以下命令加固您的 MariaDB 服务器安装。

sudo mariadb-secure-installation

您将被问及以下一些配置:

  • 将 MariaDB root 用户的认证方式更改为 unix_socket。输入 n 表示否(No)。
  • 设置 MariaDB root 密码。输入 y 确认,然后输入新的 MariaDB root 密码并重复。
  • 禁止 MariaDB root 用户的远程登录。输入 y 确认。
  • 从 MariaDB 中删除默认的 test 数据库。输入 y 确认。
  • 从 MariaDB 中删除匿名用户。输入 y 确认。
  • 最后,再次输入 y 以重新加载表权限以应用更改。

为 LibreNMS 创建 MariaDB 数据库和用户

配置好 MariaDB 服务器后,接下来您将为 LibreNMS 创建一个新的数据库和用户。

使用以下命令登录 MariaDB 服务器。

sudo mariadb -u root -p

运行以下查询,为 LibreNMS 创建新的数据库和用户。在本演示中,您将创建一个名为 librenms 的新数据库和用户,密码为 librenmspassword。此外,您必须确保 LibreNMS 数据库的默认字符集为 utf8mb4。

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

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

现在,运行以下查询验证新用户 librenms 的权限,然后输入 exit 退出 MariaDB。

SHOW GRANTS FOR 'librenms'@'localhost';
exit

下面显示的输出表明用户 librenms 可以访问数据库 librenms。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

下载并安装 LibreNMS

在本节中,您将下载 LibreNMS 源代码,设置正确的所有权和权限,然后通过源代码附带的 composer_wrapper 脚本安装 PHP 依赖。

运行以下 git 命令,将 LibreNMS 源代码下载到 /opt/librenms 目录。

git clone https://github.com/librenms/librenms.git /opt/librenms

现在将 /opt/librenms 目录的所有权更改为用户 librenms,并将权限更改为 771。

sudo chown -R librenms:librenms /opt/librenms
sudo chmod 771 /opt/librenms

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

之后,运行以下命令设置访问控制列表(ACL),并确保一些 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 身份登录。您应该位于 /opt/librenms 目录。

su - librenms
pwd

运行以下命令安装 LibreNMS 的 PHP 依赖。安装完成后,输入 exit 退出用户 librenms。

./scripts/composer_wrapper.php install --no-dev
exit

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

配置 SELinux

如果您在 AlmaLinux 9 服务器上启用了强制模式(enforcing)的 SELinux,则必须为 LibreNMS 配置它。在本节中,您将安装 policycoreutils-python-utils 软件包,并为 LibreNMS 设置 SELinux。

运行以下命令安装 policycoreutils-python-utils 软件包。

sudo dnf install -y policycoreutils-python-utils

接下来,运行以下命令为 LibreNMS 源代码设置标签,允许 Web 服务器发送电子邮件,并执行需要内存地址的程序。

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
setsebool -P httpd_can_sendmail=1
setsebool -P httpd_execmem 1
chcon -t httpd_sys_rw_content_t /opt/librenms/.env

现在使用以下 nano 编辑器命令创建一个新文件 http_fping.tt。

sudo nano http_fping.tt

将以下配置插入文件。这将允许通过 SELinux 使用 fping 命令。

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。

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

配置 Firewalld

设置好 SELinux 后,您将配置 firewalld 以开放 HTTP 和 HTTPS 协议。

运行以下 firewall-cmd 命令开放 HTTP 和 HTTPS 端口,然后重新加载 firewalld 以应用更改。

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

现在使用以下命令验证 firewalld 规则列表。如果成功,您应该在规则列表中看到 HTTP 和 HTTPS 协议。

sudo firewall-cmd --list-all

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

配置 SNMP 服务

SNMP(简单网络管理协议)是网络设备(如调制解调器、交换机和路由器)最广泛使用的协议。在本节中,您将在 LibreNMS 安装上配置 snmpd 服务,用于监控网络设备。

将默认的 SNMP 配置复制到 /etc/snmp/snmpd.conf,并使用下面的 nano 编辑器命令打开它。

sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
sudo nano /etc/snmp/snmpd.conf

将默认的 SNMP 密码 RANDOMSTRINGGOESHERE 更改为新密码。

# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string
com2sec readonly  default        RANDOMSTRINGGOESHERE

完成后保存文件并关闭编辑器。

接下来,下载用于检测 Linux 和 UNIX 操作系统的 LibreNMS 代理工具的二进制文件,并使其可执行。

sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
sudo chmod +x /usr/bin/distro

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

现在使用以下命令启动并启用 snmpd 服务。

sudo systemctl start snmpd
sudo systemctl enable snmpd

最后,使用以下 systemctl 命令验证 snmpd 服务。

sudo systemctl status snmpd

如果 snmpd 服务正在运行,您应该会看到类似 ' active (running) ' 的输出。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

LibreNMS 其他设置

以下部分是 LibreNMS 的一些额外配置。您将设置以下配置:

  • 设置 LibreNMS 二进制命令 'lnms' 及其 bash_completion。
  • 为 LibreNMS 轮询设置 cron。
  • 通过 systemd timer 设置 LibreNMS 调度器。
  • 为 LibreNMS 日志设置 logrotate。

首先,为 LibreNMS 命令行 lnms 创建指向 /usr/bin/lnms 的符号链接。然后,将 lnms 命令的 bash 补全脚本复制到 /etc/bash_completion.d/ 目录。

sudo ln -s /opt/librenms/lnms /usr/bin/lnms
sudo cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/

现在,以用户 librenms 身份登录并运行 lnms 命令,然后按 TAB 键获取 lnms 命令的可用参数列表。

su - librenms
lnms TAB

您的终端将显示类似的输出。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

接下来,运行以下命令将 LibreNMS 的 cron 配置复制到 /etc/cron.d/librenms。

cp /opt/librenms/dist/librenms.cron /etc/cron.d/librenms

然后,使用以下命令复制 LibreNMS 的 logrotate 配置。

sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

之后,将 LibreNMS 调度器服务和定时器复制到 /etc/systemd/system/ 目录,并重新加载 systemd 管理器以应用更改。

sudo cp /opt/librenms/dist/librenms-scheduler.service /opt/librenms/dist/librenms-scheduler.timer /etc/systemd/system/
sudo systemctl daemon-reload

最后,启动并启用 LibreNMS 调度器服务。

sudo systemctl enable librenms-scheduler.timer
sudo systemctl start librenms-scheduler.timer

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

配置 Nginx

完成所有配置后,现在您将为 LibreNMS 设置 Nginx 服务器块。

使用以下 nano 编辑器命令创建新的 Nginx 服务器块配置文件 /etc/nginx/conf.d/librenms.conf。

sudo nano /etc/nginx/conf.d/librenms.conf

插入以下配置,并确保更改 server_name 选项中的域名。

server {
    listen      80;
    server_name librenms.howtoforge.local;
    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 配置。如果成功,您应该看到类似 ' test is successful - syntax is ok ' 的输出。

sudo nginx -t

接下来,使用以下命令启动并启用 Nginx 服务。

sudo systemctl start nginx
sudo systemctl enable nginx

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

然后,输入以下命令验证 Nginx 服务状态,确保服务正在运行。

sudo systemctl status nginx

如果成功,您应该得到以下输出:

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

通过 Web 浏览器安装 LibreNMS

创建好 Nginx 服务器块配置后,您就可以从 Web 浏览器开始 LibreNMS 的安装了。

启动您的 Web 浏览器并访问 LibreNMS 安装的域名,例如:http://librenms.howtoforge.local 。

在第一个页面上,LibreNMS 将检查并验证您当前的环境。请确保您通过了先决条件检查,然后点击数据库图标以继续。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

现在输入您已创建的数据库详细信息,然后点击 Check Credentials(检查凭据)。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

然后,点击 Build Database(构建数据库)以迁移 LibreNMS 数据库。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

接下来,点击钥匙图标以设置 LibreNMS 的管理员用户和密码。输入管理员用户、密码和电子邮件的详细信息,然后点击 Add User(添加用户)。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

现在点击 Finish Install(完成安装)以完成 LibreNMS 的安装。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

LibreNMS 安装完成后,您将被重定向到 LibreNMS 登录页面。输入您的管理员用户和密码,然后点击 Login(登录)。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

如果成功,您将看到如下的 LibreNMS 仪表盘。您可以根据需要创建和排列 LibreNMS 仪表盘。

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

最后,您可以使用 validate.php 脚本来确保您拥有正确的 LibreNMS 配置。运行以下命令以用户 librenms 身份登录并执行 validate.php 脚本。

su - librenms
./validate.php

如果您拥有正确的 LibreNMS 配置,所有项目都应显示为 OK 状态,如下所示:

如何在 AlmaLinux 9 上安装 LibreNMS 监控工具

结论

恭喜,您已成功在 AlmaLinux 9 上安装了 LibreNMS 监控工具。您已经安装并配置了 LibreNMS,搭配 MariaDB 数据库服务器和 Nginx Web 服务器。并且还为 LibreNMS 配置了 SELinux 和 firewalld。

此外,请参阅 LibreNMS 文档以添加要监控的新主机或设备。