本页内容

  • 准备工作
  • 安装软件包依赖
  • 下载并安装 LibreNMS
  • 配置 PHP 时区
  • 配置 MariaDB 服务器
  • 为 LibreNMS 配置 PHP-FPM 进程池
  • 为 LibreNMS 配置 Nginx 服务器区块
  • LibreNMS 的额外配置
  • 启动 LibreNMS Web 安装向导
  • 总结

LibreNMS 是一款使用 PHP/MySQL/SNMP 编写的自由开源监控工具。它是 Observium 的社区分支,采用 GPL 许可证。

LibreNMS 支持多种硬件和操作系统,例如 Cisco、Linux、Juniper 等。它支持通过 CDP、OSPF、BGP、SNMP 和 ARP 自动发现网络服务。它提供了可自定义的用户仪表盘,可按需配置,并内置可自定义的告警系统。此外,LibreNMS 还是一个可扩展的监控系统,支持与 NFSen、collectd 等集成。

LibreNMS 支持多种认证方式,包括本地 MySQL、Radius、LDAP 和 Active Directory。如果您拥有集中式认证的基础设施,此功能非常有用。LibreNMS 还提供计费系统,方便管理员检查和生成每个用户的带宽使用量及账单。

本指南将教您如何在最新的 Ubuntu 22.04 服务器上安装和配置 LibreNMS 监控工具。本教程还将涵盖 LibreNMS 安装所需的一些 LEMP 技术栈的额外配置。

准备工作

  • 一台 Ubuntu 22.04 服务器
  • 一个具有 root 权限的非 root 用户

安装软件包依赖

首先,您将安装 LibreNMS 的软件包依赖。这包括 LEMP 技术栈、一些 Python 工具,以及 SNMP、whois、rrdtool 等网络工具。

在安装任何软件包之前,请运行以下 apt 命令来更新并刷新您的 Ubuntu 软件源。

sudo apt update

现在使用以下 apt 命令安装 LibreNMS 的软件包依赖。

sudo apt install acl curl composer fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php-cli php-curl php-fpm php-gd php-gmp php-json php-mbstring php-mysql php-snmp php-xml php-zip rrdtool snmp snmpd whois unzip python3-pymysql python3-dotenv python3-redis python3-setuptools python3-systemd python3-pip

输入 Y 确认并按 ENTER 继续。依赖项的安装将开始,请等待所有安装完成。

下载并安装 LibreNMS

安装完软件包依赖后,您将从源代码安装 LibreNMS。

首先,您必须添加名为 "librenms" 的新用户。该用户将用于运行 LibreNMS 监控工具应用程序。您可以使用以下命令添加 "librenms" 用户。

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

该命令将创建一个新用户 "librenms",其主目录为 /opt./librenms,默认 shell 为 bash。

现在切换到 /opt 目录,并使用以下 git 命令下载 LibreNMS 监控工具的源代码。

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

您将在 /opt 中得到一个名为 librenms 的新目录。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

接下来,运行以下命令更改 /opt/librenms 目录的所有权和权限。

所有权必须为用户 " librenms ",权限为 " 771 ",以允许 librenms 用户在该目录中读取、写入和执行。setfacl 命令用于在目录中设置文件访问控制列表,包括用于存放 rrd 图形的 rrd 目录、存放日志的 logs 目录、存放 LibreNMS 缓存的 cache 目录,以及用于存放数据目录的 storage 目录。

chown -R librenms:librenms /opt/librenms
chmod 771 /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

现在使用以下命令登录到 " librenms " 用户。

su - librenms

最后,使用 PHP 脚本 "composer_wrapper.php" 安装 LibreNMS 监控所需的所有 PHP 依赖。

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

以下是 LibreNMS 安装 PHP 软件包依赖过程中的截图。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

以下是 LibreNMS 安装完成时的截图。如您所见,安装脚本将从 PyPi 软件源安装一些额外的 Python 工具。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

配置 PHP 时区

在此步骤中,您将通过编辑 php.ini 配置文件来设置 PHP 的时区。

使用 nano 编辑器编辑 php.ini 配置文件。

sudo nano /etc/php/8.1/fpm/php.ini
sudo nano /etc/php/8.1/cli/php.ini

取消注释 date.timezone 选项,并添加您的时区,如下所示。在本示例中,时区为 Etc/UTC。

date.timezone = Etc/UTC

完成后保存并关闭文件。

接下来,运行以下 timedatectl 命令,将您系统的时区设置为 Etc/UTC。

sudo timedatectl set-timezone Etc/UTC

最后,重启 PHP-FPM 服务以使 php.ini 配置文件的新更改生效。

sudo systemctl restart php8.1-fpm

您现在已完成 PHP 和 Ubuntu 系统的时区配置。

配置 MariaDB 服务器

LibreNMS 监控工具需要在 MariaDB 服务器上进行一些特定的配置。在此步骤中,您将编辑 MariaDB 服务器配置,并为 LibreNMS 创建一个新数据库和用户。

使用 nano 编辑器编辑 MariaDB 服务器配置文件 50-server.cnf。

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

在 " [mysqld] " 部分下,添加以下配置。

[mysqld]
...
innodb_file_per_table=1
lower_case_table_names=0

完成后保存并关闭文件。

接下来,运行以下 systemctl 命令来启用并重启 MariaDB 服务。这将使 MariaDB 服务在系统启动时自动启动,并应用对 MariaDB 服务器配置的新更改。

sudo systemctl enable mariadb
sudo systemctl restart mariadb

您现在已完成 MariaDB 服务器的配置。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

现在使用以下 mysql 命令登录到 MariaDB shell。

sudo mysql -u root -p

运行以下查询,创建新数据库 librenms 、用户 librenms ,密码为 " password "。

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;

最后,输入 exit 退出 MariaDB shell。现在您已为 LibreNMS 监控工具创建了数据库和用户。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

为 LibreNMS 配置 PHP-FPM 进程池

配置完 MariaDB 服务器后,您将为 LibreNMS 设置 PHP-FPM 进程池。PHP-FPM 允许您为每个应用程序创建多个进程池。这使您能够为特定应用程序(本例中为 LibreNMS 监控工具)指定一个进程池。

PHP-FPM 进程池配置文件位于 /etc/php/8.1/fpm/pool.d 目录中,默认进程池配置文件为 www.conf。

现在运行以下命令,将默认进程池配置从 www.conf 复制为 librenms.conf 。

sudo cp /etc/php/8.1/fpm/pool.d/www.conf /etc/php/8.1/fpm/pool.d/librenms.conf

使用 nano 编辑器编辑进程池配置文件 librenms.conf。

sudo nano /etc/php/8.1/fpm/pool.d/librenms.conf

将默认进程池名称从 " [www] " 更改为 " [librenms] ",如下所示。

[librenms]

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

user = librenms
group = librenms

现在将 PHP-FPM 的监听 socket 更改为 /run/php-fpm-librenms.sock,如下所示。

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

完成后保存并关闭文件。

接下来,运行以下命令重启 PHP-FPM 服务,使进程池配置的新更改生效。

sudo systemctl restart php8.1-fpm

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

最后,如果您检查系统上所有可用的 sock 文件,可以看到 /run/php-fpm-librenms.sock 这个 sock 文件,它属于 PHP-FPM 进程池 librenms。

您可以使用以下命令检查该 sock 文件。

ss -pln

为 LibreNMS 配置 Nginx 服务器区块

您已完成 MariaDB 服务器和 PHP-FPM 对 LibreNMS 的配置,现在您将为 LibreNMS 监控工具设置 Nginx 服务器区块。

使用 nano 编辑器创建新的 Nginx 服务器区块配置文件 librenms.conf。

sudo nano /etc/nginx/sites-available/librenms.conf

复制以下配置并粘贴到文件中。同时,将默认域名 librenms.howtoforge.local 替换为您的域名。

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;
 }
}

完成后保存并关闭文件。

接下来,启用服务器区块配置文件 librenms.conf ,然后使用以下命令验证 Nginx 配置。

sudo ln -s /etc/nginx/sites-available/librenms.conf /etc/nginx/sites-enabled/
sudo nginx -t

如果输出类似 test-successful,则说明您的配置正确。

最后,您可以重启 nginx 服务以应用新的服务器区块配置 librenms.conf 。

sudo systemctl restart nginx

至此,您的 LibreNMS 安装现在可以通过域名 librenms.howtoforge.local 访问了。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

LibreNMS 的额外配置

在开始 LibreNMS 安装之前,您需要对 Ubuntu 系统进行一些额外配置。所有这些配置都是 LibreNMS 所必需的。

首先,您需要创建 LibreNMS 二进制文件的符号链接(symlink)到 /usr/bin 目录,这样用户就可以从 shell 执行 lnms 命令。

sudo ln -s /opt/librenms/lnms /usr/bin/lnms

现在将 lnms 命令的 bash shell 自动补全脚本复制到 /etc/bash_completion.d/ 目录。

sudo cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/

接下来,您需要为 LibreNMS 监控工具配置 SNMP 服务。SNMP 服务可用于添加和监控服务器或设备。

将 LibreNMS 提供的 SNMP 服务示例配置复制到 /etc/snmp/snmp.conf 。然后使用 nano 编辑器编辑该配置。

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

将 SNMP 服务的默认社区密码 " RANDOMSTRINGGOESHERE " 替换为您自己的强密码。

com2sec readonly default RANDOMSTRINGGOESHERE

完成后保存并关闭文件。

现在运行以下命令,将用于检查 Linux 发行版的 LibreNMS agent 二进制脚本下载到 /usr/bin/ 目录,并使其可执行。

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

现在启用 snmpd 服务并重启该服务以应用新配置。

systemctl enable snmpd
systemctl restart snmpd

您现在已完成 LibreNMS 的 snmp 配置。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

最后,运行以下命令配置 LibreNMS 的 cron 脚本和 logrotate 配置。

cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

现在您可以从 Web 浏览器开始 LibreNMS 的安装。

启动 LibreNMS Web 安装向导

打开您的 Web 浏览器并访问 LibreNMS 安装域名(例如 http://librenms.howtoforge.local),您应该会看到如下的 LibreNMS 安装页面。

首先,您会看到预安装检查页面。请确保所有要求项都已勾选为绿色状态,这意味着 LibreNMS 安装的所有要求都已通过。

点击顶部的数据库图标以继续。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

输入 LibreNMS 安装所需的 MariaDB 数据库详细信息,然后点击 "Check Credentials" 按钮。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

点击 "Build Database" 按钮开始数据库配置。这将导入 LibreNMS 所需的所有表。当所有进程完成后,您会看到 " Database seeding completed successfully " 的消息。

现在点击顶部的钥匙图标,开始配置 LibreNMS 用户。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

输入 LibreNMS 安装的 admin 用户详细信息,然后点击 "Add User"。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

安装完成后,您会看到如下页面。.env 文件和 config.php 文件已被写入新配置。

此外,您必须点击 " validate your install " 链接来验证您的 LibreNMS 安装。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

现在,您将被重定向到 LibreNMS 登录页面。输入您的 admin 用户名和密码,然后点击 "Login"。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

登录后,您会看到如下的 LibreNMS 验证页面。请确保 LibreNMS 的所有状态均为绿色 "Ok",这意味着 LibreNMS 的所有配置都正确无误。

在 Ubuntu 22.04 上安装 LibreNMS 网络监控系统

现在,您已准备好将主机或硬件添加到您的 LibreNMS 监控工具中。

总结

恭喜!您现在已经学会在最新的 Ubuntu 22.04 上,使用最新的 PHP 8、MariaDB 服务器和 Nginx Web 服务器安装 LibreNMS 监控工具。您还学会了如何配置 LibreNMS 以完成安装。