如何在 Debian 9 上安装 Nagios 4.3.x 监控工具
本教程适用于这些操作系统版本
- Debian 9(延伸版)
- Debian 5(蓝尼版)
在此页
- 要求
- 初始配置
- 安装 Nagios 核心
- 安装 Nagios 插件
本教程将向您展示如何从 Debian 9.1 中的源代码安装和配置最新版本的 Nagios Core,目前为 4.3.4,代号为 Stretch。
Nagios,也称为 Nagios Core,是一个免费的开源网络监控工具,由其开发人员积极维护,旨在监控整个网络基础设施。 Nagios 几乎可以监控所有网络设备,只要设备配置了网络连接,例如路由器、交换机、服务器、台式机、防火墙设备、物联网设备。除了监控设备以确定其网络状态外,Nagios 还可以监控网络服务、应用程序或与操作系统相关的其他特定任务,并且可以配置为通过邮件或 SMS 发送警报,以便通知网络管理员可能的设备,中断或服务故障。
要求
- Debian 9.1 安装在裸机或虚拟专用服务器上。优选地,安装必须以最少的软件要求来执行。
- 配置了静态IP地址的网络接口卡。
- 通过 sudo 访问 root 帐户或具有 root 帐户权限的用户。
- 配置了正确的 DNS A 记录的私有或公共域名。如果您没有在您的场所配置 DNS 服务器,您可以通过服务器 IP 地址访问 Nagios。
初始配置
在我们开始从源安装 Nagios 之前,请确保系统满足编译和安装 Nagios 的所有软件要求。第一步,通过发出以下命令更新您的系统存储库和软件包。
apt update
apt upgrade

在下一步中,启动一个新命令以安装一些必要的实用程序,这些实用程序将用于从命令行进一步管理您的系统。
apt install wget unzip zip bash-completion
接下来,通过执行以下命令为您的系统设置名称:
hostnamectl set-hostname nagios.server.lan
通过发出以下命令验证机器主机名和主机文件。
hostnamectl
cat /etc/hostname
cat /etc/hosts
最后,重新启动系统以应用新的主机名。
init 6
Nagios 是一个基于 Web 的监控应用程序,其中一些部分是用 PHP 服务器端编程语言和其他 CGI 程序编写的。为了运行 Nagios PHP 文件脚本,必须在系统中安装并运行 Web 服务器,例如 Apache HTTP 服务器和 PHP 处理网关。为了安装 Apache Web 服务器和 PHP 解释器以及 Nagios 4 正常运行所需的所有必需的 PHP 模块,请在服务器控制台中发出以下命令。
apt install apache2 libapache2-mod-php7.0 php7.0
安装 Apache 和 PHP 后,通过以 root 权限发出以下命令来测试 Web 服务器是否已启动并正在运行并侦听端口 80 上的网络连接。
netstat –tlpn
如果您的 Debian 9 系统中没有默认安装 netstat 网络实用程序,请执行以下命令进行安装。
apt install net-tools

通过检查 netstat 命令输出,您可以看到 Apache Web 服务器正在侦听端口 80 上的传入网络连接。
如果您的系统启用了防火墙,例如 UFW 防火墙应用程序,您应该通过发出以下命令添加一个新规则以允许 HTTP 流量通过防火墙。
ufw allow WWW
或者
ufw allow 80/tcp
如果您想使用 iptables 原始规则允许防火墙上的端口 80 入站流量,以便访问者可以浏览 Nagios Core Web 界面,请添加以下规则。
apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload
接下来,通过发出以下命令启用并应用 Nagios Web 应用程序正常运行所需的以下 Apache 模块。
a2enmod rewrite headers cgi
systemctl restart apache2

最后,通过HTTP协议访问您的Debian机器IP地址或域名,测试Apache Web服务器默认网页是否可以在您的客户端浏览器中显示,如下图所示。如果您不知道您的机器 IP 地址,请执行 ifconfig 或 ip a 命令。
http://192.168.1.14

在下一步中,我们需要对 PHP 默认配置文件进行一些进一步的更改,以确保正确配置 PHP 时区设置并匹配您的系统物理位置。打开 /etc/php/7.0/apache2/php.ini 文件进行编辑,并确保以下行设置如下。
date.timezone = Europe/London
通过在以下链接 http://php.net/manual/en/timezones.php 中查阅 PHP 文档提供的时区列表,根据您的物理时间替换时区变量。
重新启动 apache 守护程序以应用更改。
systemctl restart apache2
完成所需的更改后,创建一个 php 信息文件并重新启动 apache 守护进程以通过发出以下命令来应用更改。
echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php
systemctl restart apache2
通过从浏览器访问以下 URL 中的 phpinfo 脚本文件,检查 PHP 时区是否已正确配置,如下图所示。向下滚动到日期设置以检查 php 时区设置。
http://192.168.1.14/info.php

安装 Nagios 核心
在从源代码下载和编译 Nagios Core 之前,首先确保您通过发出以下命令在您的系统中安装了以下预先需要的包。
apt install autoconf gcc libc6 make apache2-utils libgd-dev
在您的 Debian 系统上安装了从源代码编译 Nagios 所需的所有依赖项和软件包后,访问 Nagios 官方网站 https://www.nagios.org/downloads/nagios-core/ 下载最新版本的 Nagios Core 稳定源码存档通过发出 wget 实用程序,如以下命令摘录所示。
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.4.tar.gz
下载 Nagios 源代码压缩包后,解压缩 tar 存档并使用以下命令进入解压缩的 nagios 目录。在 nagios 提取的目录中运行 ls 命令以列出源文件。
tar xzf nagios-4.3.4.tar.gz
cd nagios-4.3.4/
ls

当您在 Nagios 提取的源目录中时,通过发出以下命令从源启动 Nagios 编译过程。首先,将 Nagios 配置为使用指向 sites-enabled 目录的 Apache Web 服务器 http 配置路径进行编译。
./configure --with-httpd-conf=/etc/apache2/sites-enabled
接下来,通过发出以下命令来编译 Nagios,如下图所示。
make all


接下来,创建nagios系统用户和组,并将nagios账户添加到Apache运行时用户,以便nagios用户拥有访问web资源所需的权限。
useradd nagios
usermod -a -G nagios www-data
现在,通过发出以下命令开始安装 Nagios 二进制文件、CGI 脚本和 HTML 文件。 make install 命令的最终输出应显示二进制位置,如下图所示。
make install

接下来,安装 Nagios 守护进程 systemd init 文件并通过发出以下命令在系统范围内启用 nagios 服务。
make install-init
systemctl enable nagios.service

此外,通过运行以下命令安装和配置 Nagios 外部命令文件。
make install-commandmode

接下来,运行以下命令以安装 Nagios 守护程序正常启动和运行所需的 Nagios 示例配置文件。
make install-config

最后,通过执行以下命令安装 Nagios 的 Apache Web 服务器配置文件,该文件位于 /etc/apacahe2/sites-enabled/ 目录中。
make install-webconf

通过发出以下命令,使用 Apache Web 服务器所需的相应密码创建 nagiosadmin 用户帐户,以便能够执行登录到 Nagios Web 工具。
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

为了访问 Nagios Web 面板,首先,重新启动 Apache HTTP 服务器并通过发出以下命令启动 Nagios 服务。
systemctl restart apache2
systemctl start nagios
然后,通过打开浏览器并访问服务器的 IP 地址或域名或 FQDN 并通过 HTTP 协议附加 /nagios URL 路径来登录 Nagios Web 界面,如下面的屏幕截图所示。使用具有先前为此用户配置的密码的 nagiosadmin 用户登录到 Nagios Web 界面。


安装 Nagios 插件
Nagios 引擎现已安装在系统上。但是,Nagios 软件还不能运行,因为用于检查主机和服务的插件没有安装。可以通过导航到 Hosts 菜单观察到此行为,您会在其中注意到插件错误,如下面的屏幕截图所示。

为了从源代码编译和安装一些基本的 Nagios 插件,首先确保通过发出以下命令安装以下库和依赖项。
apt install libmcrypt-dev make libssl-dev bc gawk dc build-essential snmp libnet-snmp-perl gettext libldap2-dev smbclient fping default-libmysqlclient-dev
在您的系统中安装所有依赖包后,通过访问以下地址转到 Nagios 插件存储库页面 https://github.com/nagios-plugins/nagios-plugins/releases 并在帮助下获取最新的源代码存档wget 命令行实用程序,如以下命令示例所示。
wget https://github.com/nagios-plugins/nagios-plugins/archive/release-2.2.1.tar.gz
然后,解压压缩后的Nagios Plugins源代码tarball,执行以下命令进入解压后的nagios-plugins目录。
tar xfz release-2.2.1.tar.gz
cd nagios-plugins-release-2.2.1/

为了从源代码编译和安装 Nagios 插件,请使用 root 权限执行以下脚本和命令,如以下摘录所示。
./tools/setup
./configure
make
make install
所有插件安装完成后,您可以在 /usr/local/nagios/libexec/ 系统路径下找到它们。发出 ls 命令以检查 /usr/local/nagios/libexec/ 目录的所有内容,并查看系统中 Nagios 可用的插件。
ls /usr/local/nagios/libexec/

为了让 Nagios 引擎接收并使用已安装的插件,您需要使用以下命令重新启动并检查 nagios 服务状态。
systemctl restart nagios.service
systemctl status nagios.service
要测试 Nagios 插件是否按预期工作,请通过打开浏览器并访问服务器的 IP 地址、FQDN 或域名并导航到主机或服务菜单,重新登录到 Nagios Web 界面,如下面的屏幕截图所示。插件现在应该检查受监控的主机和服务,并且应该显示正确的输出,具体取决于插件命令的退出状态。显示的颜色是:绿色表示正常,黄色表示警告,红色表示严重。

为了使用 HTTPS 协议通过安全连接访问 Nagios 引擎 Web 界面,发出以下命令以启用 Apache Web 服务器 SSL 模块和 SSL 站点配置文件。
a2enmod ssl
a2ensite default-ssl.conf
接下来,为了强制访问者每次从浏览器访问Nagios web界面时自动重定向到HTTPS协议,打开/etc/apache2/sites-enabled/000-default.conf文件进行编辑并添加以下重写规则在 DocumentRoot 语句之后,如下例所示。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1

最后,重新启动 Apache 守护进程以应用到目前为止配置的所有规则,并通过 HTTP 协议访问 Nagios Web 界面。
systemctl restart apache2.service
为了检查 Apache 是否正在侦听 HTTPS 端口,执行 netstat 命令并查找 443 端口绑定,如下图所示。
netstat -tlpn

如果 UFW 防火墙应用程序阻止传入网络连接到 HTTPS 端口,您应该通过发出以下命令添加一个新规则以允许 HTTPS 流量通过防火墙。
ufw allow 'WWW Full'
或者
ufw allow 443/tcp
如果您运行 iptables 防火墙来保护您的 Debian 系统,请添加以下规则以允许防火墙中的端口 443 入站流量,以便访问者可以浏览 Nagios Core Web 界面。
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload
现在,您应该会通过 HTTPS 协议自动重定向到 Nagios Web 面板。因为您在安装时使用的是 Apache 自动颁发的自签名证书对,所以浏览器中应该会显示一条错误警告。接受浏览器警告并使用之前配置的凭据登录 Nagios,如下面的屏幕截图所示。

要添加一个新的 Nagios 监控的主机,打开 /usr/local/nagios/etc/objects/localhost.cfg 配置文件进行编辑,在 localhost 定义后添加新的设备,如下例所示。
define host{
use linux-server
host_name router
alias router
address 192.168.1.1
}

相应地替换 host_name、alias 和 IP address 变量并重新启动 Nagios 守护程序以加载新的主机定义并应用更改。
systemctl restart nagios
几分钟后导航到 Nagios 网络界面中的 Hosts 菜单以检查设备状态,如下图所示。

就这样!您已经在 Debian 9 中成功安装和配置了来自源的 Nagios 引擎。您可以开始添加您的组织网络设备、服务器或关键服务以供 Nagios 监控。有关 Nagios Core 和 Nagios 插件的其他自定义配置,请访问以下链接中的文档页面 https://support.nagios.com/kb/category.php?id=12