Home >> Blog >> LibreNMS – 一個全功能的 Linux 網絡監控工具

LibreNMS – 一個全功能的 Linux 網絡監控工具

LibreNMS是一個開源、強大且功能豐富的基於 PHP 的自動發現網絡監控系統,它使用 SNMP 協議。它支持廣泛的操作系統,包括 Linux、FreeBSD,以及包括 Cisco、Juniper、Brocade、Foundry、HP 等在內的網絡設備,許多SEO優化服務都架設在PHP環境中,LibreNMS 有其必須性。

LibreNMS 特點:

  • 它使用以下協議自動發現整個網絡:CDP、FDP、LLDP、OSPF、BGP、SNMP 和 ARP。
  • 它有一個移動友好的 Web UI,帶有可定制的使用介面。
  • 支持 Unix 代理。
  • 支持水平擴展以隨您的網絡擴展。
  • 持高度靈活和可定制的警報系統;通過Email、irc、slack 等發送通知。
  • 支持用於管理、繪製和檢索系統數據的 API。
  • 提供流量計費系統。
  • 還支持提供核心功能的 Android 和 iOS 應用程式。
  • 支持與 NfSen、collectd、SmokePing、RANCID 和 Oxidized 集成。
  • 支持 MySQL、HTTP、LDAP、Radius 和 Active Directory 等多種身份驗證方法。
  • 允許自動更新和許多其他功能。

在 Linux 系統上安裝LibreNMS之前,您可以嘗試線上demo。

demo網址:https://demo.librenms.org/
用戶名:demo
密碼:demo

測試環境:

在本教學中,我們將學習如何在新安裝的Ubuntu或CentOS Linux 上安裝LibreNMS 網絡監控工具(相同的說明也適用於基於Debian和RHEL的發行版)。

注意:本文中的所有這些說明都應以root用戶身份運行,如果您不是,請使用sudo 命令獲得 root 用戶權限。

第 1 步:安裝所需的軟體package

1.首先使用默認LibreNMS管理器安裝所有必需的LibreNMS,如圖所示。

在 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 rrdto

2.安裝完所有的LibreNMS後,nginx、php-fpm、mariadb和snmp服務將啟動並啟用在啟動時自動啟動(這通常是Ubuntu的情況),否則,您可以運行以下命令來啟動並啟用它們。

------------ 在 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 php-fpm mariadb snmpd
# systemctl enable nginx php-fpm mariadb snmpd

第 2 步:安裝 LibreNMS 監控工具

3.接下來,使用useradd 命令創建一個名為librenms的系統用戶;其中標誌禁止創建用戶的主目錄,並允許創建系統帳戶。然後將librenms用戶添加到組www-data(在Ubuntu上)或nginx(在CentOS上),如下所示。-M-r

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

4.然後如圖所示通過composer命令安裝LibreNMS 。

------------ 在 Debian/Ubuntu 上 ------------
$ cd /opt
$ sudo composer create-project --no-dev --keep-vcs librenms/ librenms librenms dev-master ------------ 在 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 [在Debian/Ubuntu上]
# mysql_secure_installation [在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 ' =@ !#@%$libre ';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
MariaDB [(none)]>刷新權限;
MariaDB [(無)]>退出

7.之後,暫時禁用MySQL嚴格模式(與 MySQL 嚴格模式的兼容性尚未添加)。

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

請在[mysqld]部分內添加。

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

然後重新啟動資料庫服務器以使更改生效。

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

第 4 步:配置並啟動 PHP-FPM

8.接下來,將您的date.timezone設置php.ini為您當前的時區,例如“Africa/Kampala”,如以下螢幕截圖所示。

------------ 在 Debian/Ubuntu 上 ------------
$ sudo vim /etc/php/7.0/fpm/php.ini
$ sudo vim /etc/php /7.0/cli/php.ini ------------ 在 CentOS/RHEL 上 ------------
# vi /etc/php.ini

LibreNMS – 一個全功能的 Linux 網絡監控工具

9.接下來在Ubuntu中啟用mcrypt PHP模塊並重啟php-fpm,如圖所示。

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

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

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

進行以下更改。

;用戶 = apache
用戶 = nginx

組 = apache ; 保持組為 apache

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php7.2-fpm.sock

listen.owner = nginx
listen.group = nginx

11.如圖所示重啟php-fpm服務。

# systemctl 重啟 php-fpm

第 5 步:為 LibreNMS 配置 Nginx

12.在此步驟中,您需要為librenms配置Nginx服務器塊,以便訪問 Web UI。為它創建一個文件,如圖所示。.conf

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

添加以下配置,根據需要進行編輯server_name。

服務器{
聽80;
server_name librenms.example.com ;
根 /opt/librenms/html;
索引 index.php;

字符集 utf-8;
gzip打開;
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;
位置 / {
try_files $uri $uri/ /index.php?$query_string;
}
位置 /api/v0 {
try_files $uri $uri/ /api_v0.php?$query_string;
}
位置 ~ \.php {
包括 fastcgi.conf;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
位置 ~ /\.ht {
全部拒絕;
}
}

13.然後保存並退出文件。同時刪除默認的服務器塊配置並重新啟動 Nginx 服務器。

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

注意:在CentOS/RHEL上,如果這是您託管的唯一站點,您將需要禁用默認站點部分。從/etc/nginx/nginx.conf文件中刪除服務器部分。

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

------------ 在 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.通過創建具有以下內容的文件來允許fping 。http_fping.tt

模塊 http_fping 1.0;

要求 {
類型 httpd_t;
類能力 net_raw;
類 rawip_socket { getopt 創建 setopt 寫 讀 };
}

#============= httpd_t ==============
允許 httpd_t self:capability net_raw;
允許 httpd_t self:rawip_socket { getopt create setopt write read };

16.然後運行這些命令。

------------ 在 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 訪問。

------------ 在 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 配置創建您的配置文件並打開它進行編輯,如下所示。

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

找到字符串RANDOMSTRINGGOESHERE並將其更改為您自己的社區字符串,如螢幕截圖所示。

LibreNMS – 一個全功能的 Linux 網絡監控工具

19.接下來,在您的系統上下載一個 shell 腳本,這有助於檢測哪個操作系統,如果是 Linux,那麼它將檢測您正在使用哪個 Linux 發行版:

------------ 在 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 ------------ 在 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 安裝根目錄和日誌文件設置適當的權限。

------------ 在 Debian/Ubuntu 上 ------------
$ sudo chown -R librenms:librenms /opt/librenms
$ sudo setfacl -d -mg::rwx /opt/librenms/rrd /opt/librenms/logs
$ sudo setfacl -R -mg::rwx /opt/librenms/rrd /opt/librenms/logs ------------ 在 CentOS/RHEL 上------------
# chown -R librenms:librenms /opt/librenms
# setfacl -d -mg::rwx /opt/librenms/rrd /opt/librenms/logs
# setfacl -R -mg ::rwx /opt/librenms/rrd /opt/librenms/logs

第 8 步:訪問 LibreNMS Web 安裝程式

22.接下來,使用以下 URL 訪問 Web 安裝程式並按照螢幕上的說明進行操作。

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

要使此地址在本地電腦上工作,您需要使用 hosts 文件 ( /etc/hosts) 設置本地 DNS,用於本地域名解析或在上線之前進行測試。

192.168.43.31 tecmint.lan
192.168.43.31 librenms.tecmint.lan

LibreNMS – 一個全功能的 Linux 網絡監控工具

23.您將看到如下螢幕截圖所示的安裝歡迎頁面,點擊Next Stage繼續。

LibreNMS – 一個全功能的 Linux 網絡監控工具

24.然後輸入 LibreNMS 資料庫的設置(資料庫主機、端口、用戶名和用戶密碼),然後點擊Next Stage繼續。

LibreNMS – 一個全功能的 Linux 網絡監控工具

25. Web 安裝程式現在將開始導入 MySQL 資料庫,這需要一些時間。請注意,該過程將嘗試在某些點暫停,只需點擊“重試”即可繼續導入過程。

LibreNMS – 一個全功能的 Linux 網絡監控工具

26.資料庫導入完成後,您應該會看到消息“資料庫已更新!”,如下面的截圖所示。然後點擊轉到添加用戶繼續。

LibreNMS – 一個全功能的 Linux 網絡監控工具

27.接下來,添加一個LibreNMS用戶,指定用戶名、密碼和Email,然後點擊添加用戶以使更改生效。

LibreNMS – 一個全功能的 Linux 網絡監控工具

28.現在點擊Generate Config為你的系統創建LibreNMS配置。

LibreNMS – 一個全功能的 Linux 網絡監控工具

LibreNMS – 一個全功能的 Linux 網絡監控工具

29.生成配置後,如上一個螢幕截圖所示,將其複制並保存在安裝的根目錄中的一個名為/opt/librenms/config.php的文件中。

# vi /opt/librenms/config.php

?php
## 查看 defaults.inc.php 以獲得可以在此處設置的設置示例。不要編輯 defaults.inc.php!

### 資料庫配置
$config['db_host'] = 'localhost';
$config['db_port'] = '3306';
$config['db_user'] = 'librenms';
$config['db_pass'] = ' =@ !#@%$libre';
$config['db_name'] = 'librenms';
$config['db_socket'] = '';

// 這是 LibreNMS 將運行的用戶
//請確保此用戶已創建並且對您的安裝具有正確的權限
$config['user'] = 'librenms';

### Locations - 建議保留默認值
#$config['install_dir'

### 如果你想*強制*一個特定的主機名/端口,這應該*僅*設置
###它將阻止 Web 界面從任何其他主機名可用
#$config['base_url'] = "http:/ /librenms.company.com”;

### 啟用它以使用 rrdcached。確保 rrd_dir 在 rrdcached 目錄
### 中,並且您的 Web 服務器有權與 rrdcached 通信。
#$config['rrdcached'] = "unix:/var/run/rrdcached.sock";

### 默認社區
$config['snmp']['community'] = array("public");

### 身份驗證模型
$config['auth_mechanism'] = "mysql"; # 默認,其他選項:ldap, http-auth
#$config['http_auth_guest'] = "guest";

### RFC1918 網絡列表以允許基於掃描的發現
#$config['nets'][] = "10.0.0.0/8";
#$config['nets'][] = "172.16.0.0/12";
#$config['nets'][] = "192.168.0.0/16";

# 更新配置
#$config['update_channel'] = 'release'; # 取消註釋以關注每月發布頻道
#$config['update'] = 0; # 取消註釋以完全禁用更新

30.保存並關閉文件。然後通過點擊Finish Install返回到 Web 安裝程式以繼續安裝過程。

LibreNMS – 一個全功能的 Linux 網絡監控工具

31.現在您的LibreNMS安裝已完成,您可以點擊“驗證您的安裝並修復任何問題”,應該會出現登錄頁面。

LibreNMS – 一個全功能的 Linux 網絡監控工具

32.接下來,輸入您的用戶憑據以訪問驗證頁面。

LibreNMS – 一個全功能的 Linux 網絡監控工具

33.從安裝驗證過程中,LibreNMS發現了兩個問題,一是沒有添加設備(這暫時是一個警告),二是我們沒有對配置文件(/opt/librenms )設置適當的權限/config.php ) 是手動添加的,如下面的螢幕截圖所示。

LibreNMS – 一個全功能的 Linux 網絡監控工具

現在運行以下命令來設置配置文件的正確權限。

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

34.要添加設備,請訪問:http://librenms.tecmint.lan/addhost。添加設備後,您可以進入首頁並添加各種使用介面。

LibreNMS – 一個全功能的 Linux 網絡監控工具