如何在 Ubuntu 22.04 上安装 LibreNMS 监控工具
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 Stack 的一些附加配置。
先决条件
- Ubuntu 22.04 服务器
- 具有root权限的非root用户
安装包依赖项
首先,您将为 LibreNMS 安装软件包依赖项。这将包括 LEMP Stack、一些 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 的新目录。
接下来,运行以下命令更改 /opt/librenms 目录的所有权和权限。
所有权必须是用户“librenms”和允许 librenms 用户在该目录内读取、写入和执行的权限“771”。 setfacl命令用于设置目录rrd内的文件访问控制列表(用于存储rrd图),logs用于存储日志,缓存用于存储LibreNMS缓存,以及数据目录的存储。
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/
现在使用以下命令登录到用户“librenms”。
su - librenms
最后,使用 PHP 脚本“composer_wrapper.php”安装 LibreNMS 监控的所有 PHP 依赖项。
./scripts/composer_wrapper.php install --no-dev
下面是安装 LibreNMS 的 PHP 包依赖项期间的屏幕截图。
下面是 LibreNMS 安装完成时的屏幕截图。如您所见,安装程序脚本将从 PyPi 存储库安装一些附加的 Python 工具。
为 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 服务器配置。
现在使用下面的 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 监控工具创建数据库和用户。
为 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 的监听套接字更改为 /run/php-fpm-librenms.sock,如下所示。
listen = /run/php-fpm-librenms.sock
完成后保存并关闭文件。
接下来,运行以下命令重新启动 PHP-FPM 服务并对池配置进行新的更改。
sudo systemctl restart php8.1-fpm
最后,如果您检查系统上所有可用的 sock 文件,您可以看到 sock 文件 /run/php-fpm-librenms.sock,它属于 PHP-FPM 池 librenms。
您可以使用以下命令检查 sock 文件。
ss -pln
为 LibreNMS 配置 Nginx 服务器块
您已经完成了 LibreNMS 的 MariaDB 服务器和 PHP-FPM 的配置,现在您将为 LibreNMS 监控工具设置 Nginx 服务器块。
使用 nano 编辑器创建新的 Nginx 服务器块 librenms.conf。
sudo nano /etc/nginx/sites-available/librenms.conf
复制以下配置并将其粘贴到文件中。另外,将默认域名 librenms.hwdomain.io 更改为您的域。
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;
}
}
完成后保存并关闭文件。
接下来,激活服务器块配置 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.hwdomain.io 进行访问。
LibreNMS 的附加配置
在开始安装 LibreNMS 之前,您需要对 Ubuntu 系统进行一些额外的配置。 LibreNMS 需要所有这些配置。
首先,您需要创建 LibreNMS 二进制文件到 /usr/bin 目录的符号链接 (symlink),该链接允许用户从 shell 执行 lnms 命令。
sudo ln -s /opt/librenms/lnms /usr/bin/lnms
现在将 bash shell 的 lnms 命令完成复制到 /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 代理下载到 /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 配置。
最后,运行以下命令来执行 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 安装。
启动 Web 安装程序 LibreNMS
打开 Web 浏览器并访问 LibreNMS 安装域名(例如 http://librenms.hwdomain.io),您应该会看到下面的 LibreNMS 安装页面。
首先,您可以看到预安装检查页面。确保所有要求均已检查为绿色状态,这意味着 LibreNMS 安装的所有要求均已通过。
单击顶部的数据库图标继续。
输入 LibreNMS 安装的 MariaDB 数据库的详细信息,然后单击检查凭据按钮。
单击构建数据库按钮开始数据库配置。这将为 LibreNMS 导入所有必需的表。当所有过程完成后,您可以看到消息“数据库播种成功完成”。
现在单击顶部的钥匙图标开始配置 LibreNMS 用户。
输入 LibreNMS 安装的详细管理员用户信息,然后单击添加用户。
安装完成后,您可以看到以下页面。 .env 文件和 config.php 文件已使用新配置编写。
此外,您必须通过单击链接“验证您的安装”来验证您的 LibreNMS 安装。
现在,您将被重定向到 LibreNMS 登录页面。输入您的管理员用户和密码,然后点击登录。
登录后,您可以看到以下 LibreNMS 验证页面。确保 LibreNMS 的所有状态均为绿色并带有Ok,这意味着 LibreNMS 的所有配置均正确。
现在,您已准备好向 LibreNMS 监控工具添加主机或硬件。
结论
恭喜!您现在已经学会了在最新的 Ubuntu 22.04 上使用最新的 PHP 8、MariaDB 服务器和 Nginx Web 服务器安装 LibreNMS 监控工具。您还了解了如何配置 LibreNMS 来完成安装。