LibreNMS - 适用于Linux的全功能网络监控工具

LibreNMS是一款开源,功能强大且功能丰富的自动发现PHP和SNMP网络监控系统,支持广泛的网络硬件和操作系统。

LibreNMS是一个开源的,功能强大且功能丰富的自动发现基于PHP的网络监控系统,它使用SNMP协议。 它支持广泛的操作系统,包括Linux,FreeBSD以及思科,Juniper,Brocade,Foundry,HP等网络设备。

LibreNMS特点:

  1. 它使用这些协议自动发现整个网络:CDP,FDP,LLDP,OSPF,BGP,SNMP和ARP。
  2. 它有一个移动友好的Web UI,可定制的仪表板。
  3. 支持一个Unix代理。
  4. 支持水平缩放以随网络扩展。
  5. 支持高度灵活和可定制的警报系统; 通过电子邮件,irc,slack等发送通知。
  6. 支持用于管理,绘制和检索系统数据的API。
  7. 提供流量计费系统。
  8. 还支持提供核心功能的Android和iOS应用程序。
  9. 支持与NfSen,collectd,SmokePing,RANCID和Oxidized的集成。
  10. 支持多种身份验证方法,例如MySQL,HTTP,LDAP,Radius和Active Directory。
  11. 允许自动更新和许多其他功能。

在Linux系统上安装LibreNMS之前,您可以尝试在线演示。

Demo URL: https://demo.librenms.org/
Username: demo
Password: demo

测试环境:

  1. 带有LEMP协议栈的Ubuntu 16.04
  2. 与LEMP的CentOS 7

在本教程中,我们将学习如何在全新安装的UbuntuCentOS Linux上安装LibreNMS网络监控工具 (相同的说明也适用于基于DebianRHEL的发行版)。

注意 :本文中的所有这些说明都应以root用户身份运行,如果不是,请使用sudo命令获得root用户权限。

第1步:安装必需的软件包

1.首先使用默认软件包管理器安装所需的所有软件包,如图所示。

在Ubuntu / Debian上

$ sudo apt install composer fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php7.0-cli php7.0-curl php7.0-fpm php7.0-gd php7.0-mcrypt php7.0-mysql php7.0-snmp php7.0-xml php7.0-zip python-memcache python-mysqldb rrdtool snmp snmpd whois

在CentOS / RHEL上

# yum install epel-release
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install composer cronie fping git ImageMagick jwhois mariadb mariadb-server mtr MySQL-python net-snmp net-snmp-utils nginx nmap php72w php72w-cli php72w-common php72w-curl php72w-fpm php72w-gd php72w-mysql php72w-process php72w-snmp php72w-xml php72w-zip python-memcached rrdtool

2.一旦安装了所有的软件包, nginxphp-fpmmariadbsnmp服务就会启动并在启动时自动启动(这在Ubuntu中通常是这种情况),否则,您可以运行以下命令启动并启用它们。

------------ On Debian/Ubuntu ------------ 
$ sudo systemctl nginx start php7.0-fpm mysql snmp 
$ sudo systemctl enable nginx php7.0-fpm mysql snmp
------------ On CentOS/RHEL ------------ 
# systemctl nginx start php7.0-fpm mariadb snmp 
# systemctl enable nginx php7.0-fpm mariadb snmp

第2步:安装LibreNMS监测工具

3.接下来,使用useradd命令创建一个名为librenms的系统用户; 其中-M标志禁止创建用户的主目录, -r允许创建系统帐户。 然后将librenms用户添加到组www-data (在Ubuntu上 )或nginx (在CentOS上 ),如下所示。

------------ On Debian/Ubuntu ------------ 
$ sudo useradd librenms -d /opt/librenms -M -r
$ sudo usermod -a -G librenms www-data   
------------ On CentOS/RHEL ------------ 
# useradd librenms -d /opt/librenms -M -r
# usermod -a -G librenms nginx           

4.然后通过composer命令安装LibreNMS ,如图所示。

------------ On Debian/Ubuntu ------------ 
$ cd /opt
$ sudo composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master
------------ On CentOS/RHEL ------------ 
# cd /opt
# composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

第3步:创建LibreNMS数据库

5.在开始使用MariaDB服务器之前,您需要保护您的安装,运行二进制包中提供的安全脚本。 它会要求您设置一个root密码,删除匿名用户,远程禁用root登录并删除测试数据库。

您可以通过发出以下命令启动脚本,并使用yes/y回答所有问题。

$ sudo mysql_secure_installation   [On Debian/Ubuntu]
# mysql_secure_installation        [On CentOS/RHEL]

6.然后登录MariaDB数据库为LibreNMS创建一个数据库(请记住在生产环境中使用强大/安全的密码)。

$ sudo mysql -u root -p
MariaDB [(none)]> CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
MariaDB [(none)]> CREATE USER 'librenms'@'localhost' IDENTIFIED BY '[email protected]!#@%$libre';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

7.之后,现在禁用MySQL严格模式(与MySQL严格模式的兼容性尚未添加)。

$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf    [On Debian/Ubuntu]
# vi /etc/my.cnf        [On CentOS/RHEL]

[mysqld]部分中,请添加。

innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0

然后重新启动数据库服务器以实现更改。

$ sudo systemctl restart mysql     [On Debian/Ubuntu]
# systemctl restart mariadb        [On CentOS/RHEL]

第4步:配置并启动PHP-FPM

8.接下来,将php.inidate.timezone设置为当前时区,例如“Africa / Kampala” ,如以下屏幕截图所示。

------------ On Debian/Ubuntu ------------ 
$ sudo vim /etc/php/7.0/fpm/php.ini
$ sudo vim /etc/php/7.0/cli/php.ini
------------ On CentOS/RHEL ------------ 
# vi /etc/php.ini
在PHP文件中设置时区

在PHP文件中设置时区

9.接下来在Ubuntu中启用mcrypt PHP模块,并重新启动php-fpm ,如图所示。

------------ On Debian/Ubuntu ------------ 
$ sudo phpenmod mcrypt
$ sudo systemctl restart php7.0-fpm

10.CentOS / RHEL上,您需要对php-fpm配置文件进行以下更改。

# vi /etc/php-fpm.d/www.conf

进行以下更改。

;user = apache
user = nginx
group = apache   ; keep group as apache
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php7.2-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

11.重新启动php-fpm服务,如图所示。

# systemctl restart php-fpm

第5步:为LibreNMS配置Nginx

12.在这一步中,您需要为librenms配置一个Nginx服务器块才能访问Web UI。 如图所示为它创建一个.conf文件。

$ sudo vim /etc/nginx/conf.d/librenms.conf     [On Debian/Ubuntu]
# vi /etc/nginx/conf.d/librenms.conf           [On CentOS/RHEL]         

添加下面的配置 ,根据需要编辑server_name

server {
listen      80;
server_name librenms.example.com;
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 /api/v0 {
try_files $uri $uri/ /api_v0.php?$query_string;
}
location ~ \.php {
include fastcgi.conf;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}

13.然后保存并退出文件。 同时删除默认的服务器模块配置并重新启动Nginx服务器。

------------ On Debian/Ubuntu ------------ 
$ sudo rm /etc/nginx/sites-enabled/default
$ sudo systemctl restart nginx
------------ On CentOS/RHEL ------------ 
# systemctl restart nginx

注意 :在CentOS / RHEL ,如果这是您托管的唯一网站,则需要禁用默认网站部分。 /etc/nginx/nginx.conf文件中删除服务器部分。

14.同样在CentOS / RHEL上 ,您需要安装SELinux策略工具并使用以下命令配置LibreNMS所需的上下文

------------ On CentOS/RHEL ------------ 
# yum install policycoreutils-python
# semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/logs(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/logs(/.*)?'
# restorecon -RFvv /opt/librenms/logs/
# semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/rrd(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/rrd(/.*)?'
# restorecon -RFvv /opt/librenms/rrd/
# setsebool -P httpd_can_sendmail=1
# setsebool -P httpd_execmem 1

15.通过创建具有以下内容的文件http_fping.tt允许fping

在CentOS / RHEL上
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 };

16.然后运行这些命令。

------------ On CentOS/RHEL ------------ 
# 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

17.如果您在CentOS / RHEL上使用防火墙,请启用通过防火墙的HTTP / HTTPS访问。

------------ On CentOS/RHEL ------------ 
# firewall-cmd --zone public --add-service http
# firewall-cmd --permanent --zone public --add-service http
# firewall-cmd --zone public --add-service https
# firewall-cmd --permanent --zone public --add-service https

第6步:为LibreNMS配置SNMPD

18.现在使用示例snmp配置创建配置文件并打开它进行编辑,如下所示。

------------ On Debian/Ubuntu ------------ 
$ sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
$ sudo vim /etc/snmp/snmpd.conf
------------ On CentOS/RHEL ------------ 
# cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
# vi /etc/snmp/snmpd.conf

找到字符串RANDOMSTRINGGOESHERE并将其更改为您自己的社区字符串,如截图所示。

设置SNMP字符串

设置SNMP字符串

19.接下来,在您的系统上下载一个shell脚本,这有助于检测哪个操作系统,如果它是Linux,那么它将检测您正在使用的是哪个Linux发行版:

------------ On Debian/Ubuntu ------------ 
$ sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
$ sudo chmod +x /usr/bin/distro
$ sudo systemctl restart snmpd
------------ On CentOS/RHEL ------------ 
# curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
# chmod +x /usr/bin/distro
# systemctl restart snmpd

第7步:创建Cron并配置Logrotate

20.现在运行下面的命令为LibreNMS设置一个cron作业。

# cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms

21.接下来,所有LibreNMS日志都记录在/ opt / librenms / logs中 ,您可能需要使用提供的logrotate配置文件将这些日志配置为自动旋转,如下所示。

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

然后在LibreNMS安装根目录和日志文件上设置适当的权限。

------------ On Debian/Ubuntu ------------
$ sudo chown -R librenms:librenms  /opt/librenms
$ sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
$ sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs
------------ On CentOS/RHEL ------------ 
# chown -R librenms:librenms /opt/librenms
# setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
# setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs

第8步:访问LibreNMS Web安装程序

22.接下来,使用以下URL访问Web安装程序并按照屏幕上的说明进行操作。

http://librenms.howtoing.lan/install.php

要使此地址在本地计算机上工作,在上线之前,您需要使用hosts文件( /etc/hosts )设置本地DNS,以进行本地域解析或测试。

192.168.43.31 howtoing.lan
192.168.43.31 librenms.howtoing.lan
为域设置本地DNS

为域设置本地DNS

23.您将看到如下图所示的安装欢迎页面,点击Next Stage继续。

LibreNMS Web安装程序

LibreNMS Web安装程序

24.然后输入LibreNMS数据库的设置(数据库主机,端口,用户名和用户密码),然后单击Next Stage继续。

LibreNMS数据库设置

LibreNMS数据库设置

25. Web安装程序现在将开始导入MySQL数据库,这需要一些时间。 请注意,该进程将尝试暂停某些点,只需点击重试继续输入进程。

LibreNMS数据库导入

LibreNMS数据库导入

26.数据库输入完成后,您应该看到消息“ 数据库是最新的! “,如下面的截图所示。 然后点击转到添加用户继续。

LibreNMS数据库已更新

LibreNMS数据库已更新

27.接下来,添加一个LibreNMS用户,指定用户名,密码和电子邮件,然后单击添加用户以实现更改。

添加LibreNMS用户

添加LibreNMS用户

28.现在点击为Generate Config创建LibreNMS配置。

生成Librenms配置

生成Librenms配置

LibreNMS配置

LibreNMS配置

29.生成配置后,如前一屏幕照片所示,将其复制并保存到安装的根目录中,位于名为/opt/librenms/config.php的文件中。

# vi /opt/librenms/config.php
LibreNMS配置
<?php
## Have a look in defaults.inc.php for examples of settings you can set here. DO NOT EDIT defaults.inc.php!
### Database config
$config['db_host'] = 'localhost';
$config['db_port'] = '3306';
$config['db_user'] = 'librenms';
$config['db_pass'] = '[email protected]!#@%$libre';
$config['db_name'] = 'librenms';
$config['db_socket'] = '';
// This is the user LibreNMS will run as
//Please ensure this user is created and has the correct permissions to your install
$config['user'] = 'librenms';
### Locations - it is recommended to keep the default
#$config['install_dir']  = "/opt/librenms";
### This should *only* be set if you want to *force* a particular hostname/port
### It will prevent the web interface being usable form any other hostname
#$config['base_url']        = "http://librenms.company.com";
### Enable this to use rrdcached. Be sure rrd_dir is within the rrdcached dir
### and that your web server has permission to talk to rrdcached.
#$config['rrdcached']    = "unix:/var/run/rrdcached.sock";
### Default community
$config['snmp']['community'] = array("public");
### Authentication Model
$config['auth_mechanism'] = "mysql"; # default, other options: ldap, http-auth
#$config['http_auth_guest'] = "guest"; # remember to configure this user if you use http-auth
### List of RFC1918 networks to allow scanning-based discovery
#$config['nets'][] = "10.0.0.0/8";
#$config['nets'][] = "172.16.0.0/12";
#$config['nets'][] = "192.168.0.0/16";
# Update configuration
#$config['update_channel'] = 'release';  # uncomment to follow the monthly release channel
#$config['update'] = 0;  # uncomment to completely disable updates

30.保存并关闭文件。 然后返回到Web安装程序继续安装过程,方法是单击完成安装

完成LibreNMS安装

完成LibreNMS安装

31.现在您的LibreNMS安装已完成,您可以点击“ 验证您的安装并解决任何问题 ”,登录页面应该出现。

验证LibreNMS安装

验证LibreNMS安装

32.接下来,输入您的用户凭证以访问验证页面。

LibreNMS登录页面

LibreNMS登录页面

33.从安装验证过程中, LibreNMS发现了两个问题,一个是设备尚未添加(这是现在的警告),第二,我们没有在配置文件( / opt / librenms)上设置适当的权限/config.php ),这是手动添加的,如下面的屏幕截图所示。

LibreNMS权限问题

LibreNMS权限问题

现在运行以下命令在配置文件上设置正确的权限。

$ sudo chown -R librenms:librenms /opt/librenms/config.php 

34.要添加设备,请转至: http://librenms.howtoing.lan/addhost 添加设备后,您可以转到主页并添加各种仪表板。

LibreNMS仪表板

LibreNMS仪表板

而已! 您可以在https://docs.librenms.org/找到更多信息,包括LibreNMS文档的安装和设置。

LibreNMS是一个全功能的网络监控系统,支持各种网络硬件。 我们希望这是一本清晰的安装指南,如果您有任何问题,请通过下面的反馈表与我们联系。