在CentOS 7上使用LibreNMS监视设备

LibreNMS是功能齐全的开源网络监视系统。它用于SNMP从不同的设备获取数据。LibreNMS支持多种设备,例如Cisco,Linux,FreeBSD,Juniper,Brocade,Foundry,HP等。它支持多种身份验证机制,并支持两因素身份验证。它具有可自定义的警报系统,可以通过电子邮件,IRC或闲暇来警告网络管理员。

先决条件

在本教程中,我们将使用nms.example.com指向Vultr实例的域名作为域名。请确保将所有示例域名都替换为实际的示例域名。

使用指南如何更新CentOS 7更新基本系统。系统更新后,继续安装依赖项。

安装Nginx和PHP

LibreNMS的前端基本上是用PHP编写的,因此我们将需要安装Web服务器和PHP。在本教程中,我们将安装Nginx和PHP 7.2,以获得最大的安全性和性能。

安装Nginx。

sudo yum -y install nginx

启动Nginx并使它能够在启动时自动启动。

sudo systemctl start nginx
sudo systemctl enable nginx

添加并启用Remi存储库,因为默认的YUM存储库包含旧版本的PHP。

sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php72

安装PHP版本7.2以及LibreNMS所需的模块。

sudo yum -y install php php-cli php-common php-curl php-fpm php-gd php-mcrypt php-mysql php-process php-snmp php-xml php-zip

通过PHP在编辑器中打开加载的配置文件。

sudo nano /etc/php.ini

找到以下几行,取消注释并更改其值,如图所示。

;cgi.fix_pathinfo=1
memory_limit = 128M
;date.timezone =

请改用这些值,Asia/Kolkata并用您当地的时区代替。

cgi.fix_pathinfo=0
memory_limit = -1
date.timezone = Asia/Kolkata

您还需要通过运行以下命令来更改系统时区。

sudo ln -sf /usr/share/zoneinfo/Asia/Kolkata /etc/localtime

现在打开PHP-FPM配置文件。

sudo nano /etc/php-fpm.d/www.conf

查找以下行。

listen = 127.0.0.1:9000

将其替换为以下行。

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

默认情况下,为Apache Web服务器用户配置PHP-FPM。将用户更改为nginx

user = nginx
group = nginx

此外,取消注释以下几行。

listen.owner = nobody
listen.group = nobody

保存文件并退出编辑器。重新启动PHP-FPM并使其在启动时启动。

sudo systemctl restart php-fpm
sudo systemctl enable php-fpm

为套接字文件设置适当的所有权。

sudo chown nginx:nginx /var/run/php-fpm/php-fpm.sock

安装MariaDB

MariaDB是MySQL的分支。将MariaDB存储库添加到您的系统中。默认yum存储库包含旧版本的MariaDB。

echo "[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1" | sudo tee /etc/yum.repos.d/mariadb.repo

安装MariaDB。

sudo yum -y install mariadb mariadb-server

现在,打开MySQL配置文件。

sudo nano /etc/my.cnf

在代码块的末尾添加以下几行。

[mysqld]
innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0

重新启动MariaDB,并使它能够在引导时自动启动。

sudo systemctl restart mariadb
sudo systemctl enable mariadb

在配置数据库之前,您需要首先保护MariaDB的安全。

sudo mysql_secure_installation

系统将要求您输入当前的MariaDB根密码。默认情况下,全新的MariaDB安装中没有root密码。按“ Enter”键继续。root为您的MariaDB服务器的用户设置一个强密码,并回答Y所有其他问题。提出的问题是不言自明的。

以root用户身份登录MySQL Shell。

mysql -u root -p

提供MariaDB root用户登录的密码。

运行以下查询为LibreNMS安装创建数据库和数据库用户。

CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
EXIT;

您可以根据自己的选择替换数据库名称librenms和用户名librenms。请确保更改StrongPassword为非常安全的密码。

安装LibreNMS

除了上述依赖性之外,LibreNMS还需要更多的依赖性。通过运行安装它们。

sudo yum -y install cronie fping git ImageMagick jwhois mtr MySQL-python net-snmp net-snmp-utils nmap  python-memcached rrdtool

为LibreNMS应用程序添加新的非特权用户。

sudo useradd librenms -d /opt/librenms -M -r
sudo usermod -a -G librenms nginx

可以通过克隆其Github存储库直接安装LibreNMS。

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

修复所有权。

sudo chown librenms:librenms -R /opt/librenms

LibreNMS依靠SNMP来完成许多任务。由于我们已经安装了SNMP,因此将示例配置文件复制到其位置。

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

在编辑器中打开配置文件。

sudo nano /etc/snmp/snmpd.conf

找到这条线。

com2sec readonly  default         RANDOMSTRINGGOESHERE

编辑文本RANDOMSTRINGGOESHERE并将社区字符串替换为您选择的任何字符串。例如。

com2sec readonly  default         my-org

请记住该字符串,因为稍后添加第一个SNMP设备时将需要该字符串。

SNMP还需要有关发行版的信息。下载并安装脚本以查找发行版本。

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

启动SNMP守护程序服务,并使它在引导时自动启动。

sudo systemctl enable snmpd
sudo systemctl restart snmpd

现在,您将需要添加一些crontab条目以运行计划的任务。创建一个新的cron作业文件。

sudo nano /etc/cron.d/librenms

用以下文本填充文件。

33   */6  * * *   librenms    /opt/librenms/cronic /opt/librenms/discovery-wrapper.py 1
*/5  *    * * *   librenms    /opt/librenms/discovery.php -h new >> /dev/null 2>&1
*/5  *    * * *   librenms    /opt/librenms/cronic /opt/librenms/poller-wrapper.py 16
15   0    * * *   librenms    /opt/librenms/daily.sh >> /dev/null 2>&1
*    *    * * *   librenms    /opt/librenms/alerts.php >> /dev/null 2>&1
*/5  *    * * *   librenms    /opt/librenms/poll-billing.php >> /dev/null 2>&1
01   *    * * *   librenms    /opt/librenms/billing-calculate.php >> /dev/null 2>&1
*/5  *    * * *   librenms    /opt/librenms/check-services.php >> /dev/null 2>&1

重新启动cron守护程序服务。

sudo systemctl restart crond

进行设置,logrotate以便随着时间的推移自动刷新日志文件。

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

最后,设置适当的所有权和权限。

sudo chown -R librenms:nginx /opt/librenms
sudo chmod g+w -R /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

SSL和Nginx VHost配置

如果未使用SSL加密连接,则通过LibreNMS的Web界面发送的登录名和其他信息将不安全。我们将Nginx配置为使用“让我们加密免费SSL”生成的SSL。

安装Certbot,这是Let's Encrypt CA的客户端应用程序。

sudo yum -y install certbot

在可以请求证书之前,您将需要允许端口80443或标准HTTPHTTPS服务通过防火墙。

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

注意要从Let's Encrypt CA获取证书,必须为其生成证书的域指向服务器。如果不是,请对域的DNS记录进行必要的更改,并在再次发出证书请求之前,等待DNS传播。Certbot在提供证书之前会检查域权限。

生成SSL证书:

sudo certbot certonly --webroot -w /usr/share/nginx/html -d nms.example.com

生成的证书很可能存储在/etc/letsencrypt/live/nms.example.com/目录中。SSL证书将存储为fullchain.pem,私钥将存储为privkey.pem

让我们加密证书的有效期限为90天,因此建议您使用cron作业为证书设置自动续订。

打开cron作业文件。

sudo crontab -e

在文件末尾添加以下行。

30 5 * * 1 /usr/bin/certbot renew --quiet

上面的cron作业将在当地时间每周一的5:30 AM运行。如果证书到期,它将自动更新。

创建一个新的虚拟主机。

sudo nano /etc/nginx/conf.d/nms.example.com.conf

填充文件。

server {
    listen 80;
    server_name nms.example.com;
    return 301 https://$host$request_uri;
}
server {

    listen 443;
    server_name nms.example.com;

    ssl_certificate           /etc/letsencrypt/live/nms.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/nms.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log    /opt/librenms/logs/librenms.nginx.access.log;
    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-fpm/php-fpm.sock;
    }
    location ~ /\.ht {
        deny all;
    }
 }

nms.example.com在上述配置中替换为您的实际域。

重新启动Nginx。

sudo chown nginx:nginx /var/lib/php/session
sudo systemctl restart nginx

使用WebUI安装

要完成安装,请https://nms.example.com在您喜欢的浏览器上打开。您将看到满足要求。提供您的数据库详细信息并创建一个新的管理帐户。安装完成后,您将收到一条消息以验证安装。单击链接,然后使用管理员帐户登录。您会看到除“ Poller” 之外的所有其他Ok状态均为“ ”。

在CentOS 7上使用LibreNMS监视设备

现在,单击链接以添加设备。在“ Add Device”界面上,提供主机名作为localhost并保留所有内容。在社区字段中提供您的社区字符串。它必须snmpd.conf与配置SNMP时提供的字符串完全相同。

在CentOS 7上使用LibreNMS监视设备

添加设备后,您可以转到“ Devices”标签查看详细信息。

在CentOS 7上使用LibreNMS监视设备

同样,您可以将更多设备添加到LibreNMS应用程序中以进行“全天候”监视。

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息