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

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文件中设置时区

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字符串

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.youcl.lan/install.php

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

192.168.43.31 youcl.lan
192.168.43.31 librenms.youcl.lan

为域设置本地DNS

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

LibreNMS Web安装程序

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

LibreNMS数据库设置

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

LibreNMS数据库导入

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

LibreNMS数据库已更新

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

添加LibreNMS用户

28.现在点击为Generate Config创建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安装

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

验证LibreNMS安装

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

LibreNMS登录页面

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

LibreNMS权限问题

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

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

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

LibreNMS仪表板

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

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

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏