原文:zh.annas-archive.org/md5/85DEE4E32CF6CFC6347B684FDF685546
译者:飞龙
协议:CC BY-NC-SA 4.0
第十五章:监控 IT 基础设施
在本章中,我们将涵盖以下主题:
- 安装和配置 Nagios Core
- 在长途客户端主机上设置 NRPE
- 监控紧张的长途系统指标
引言
本章是一系列食谱的集合,提供了设置行业标准的开源网络监控框架:Nagios Core 的必要步调。
安装和配置 Nagios Core
在本食谱中,我们将学习怎样安装 Nagios Core 版本 4,这是一个开源网络监控系统,用于检查主机和服务是否正常工作,并在出现标题或服务不可用时通知用户。Nagios 提供了监控您完整 IT 基础设施的解决方案,并设计了一个高度可扩展和可定制的架构,远远超出了简朴的 bash 脚本来监控您的服务。(请参阅第三章,管理系统中的监控紧张服务器基础设施食谱。)
准备工作
要完成本食谱,您需要一个具有 root 权限的 CentOS 7 操作系统的有效安装,您选择的基于控制台的文本编辑器,以及连接到互联网以便于下载额外软件包的本领。Nagios Core 4 在官方源中不可用,而是来自 EPEL 堆栈;请确保在安装之前已安装它(请参阅第四章,使用 YUM 管理软件包中的使用第三方堆栈食谱)。对于 Nagios Web 前端,您还需要一个运行的 Apache2 Web 服务器以及 PHP(请参阅第十二章,提供 Web 服务中的食谱)安装在您的 Nagios 服务器上。在我们的示例中,Nagios 服务器的 IP 地址为 192.168.1.7,它将可以大概监控整个 192.168.1.0/24 子网中的全部 IT 基础设施。
怎样操作…
Nagios Core 4 默认不可用,因此让我们从安装全部必须的软件包开始:
- 为此,以 root 身份登录并键入以下命令:
- yum install nagios nagios-plugins-all nagios-plugins-nrpe nrpe
复制代码 - 起首,创建一个名为 nagiosadmin 的新用户账户,该账户用于对 Web 前端举行身份验证(在提示时输入一个安全的密码),然后重新加载 Apache 配置:
- htpasswd /etc/nagios/passwd nagiosadmin && systemctl reload httpd
复制代码 - 如今,为 nagiosadmin 网络用户添加一个电子邮件地址到 Nagios 配置中,打开以下文件,并搜刮并替换字符串 nagios@localhost,将其替换为您想要使用的适当电子邮件地址(可以是域内或外部电子邮件地址):
- vi /etc/nagios/objects/contacts.cfg
复制代码 - 如今,我们需要调整主配置文件以激活 /etc/nagios/servers 作为我们服务器的界说配置目录,我们将在稍后放置全部服务器配置文件,但起首,请备份:
- cp /etc/nagios/nagios.cfg /etc/nagios/nagios.cfg.BAK
- sed -i -r 's/^#cfg_dir=(.+)servers$/cfg_dir=\1servers/g'
- /etc/nagios/nagios.cfg
复制代码 - 我们需要创建在上一步中刚刚界说的服务器配置目录:
- mkdir /etc/nagios/servers
- chown nagios: /etc/nagios/servers;chmod 750 /etc/nagios/servers
复制代码 - 之后,要检查 nagios.cfg 语法的精确性,请运行以下命令:
- nagios -v /etc/nagios/nagios.cfg
复制代码 - 最后,在启动时启用 Nagios 保卫进程并启动服务:
- systemctl enable nagios && systemctl start nagios
复制代码 它是怎样工作的…
在本方法中,我们向您展示了怎样在 CentOS 7 上安装 Nagios Core v4 服务器(Core 是 Nagios 项目的开源版本)。除了重要的 Nagios 软件包外,我们还需要在我们的 Nagios 服务器上安装 NRPE 软件包和全部 Nagios 插件。安装后,我们创建了一个用户帐户,该帐户可以大概登录到 Web 前端,并在主 Nagios 配置文件中设置了该用户的电子邮件地址。接下来,我们使用 sed 激活了 /etc/nagios/servers 目录,我们将在本章背面的方法中将全部服务器界说文件放入该目录。然后,我们创建了目录并更改了权限以允许 Nagios 用户访问。要测试 Nagios 服务器安装,请在同一子网 192.168.1.0/24 中的计算机上打开 Web 浏览器,打开以下 URL(在我们的示例中,Nagios 服务器的 IP 地址为 192.168.1.7,因此请相应更改),然后使用新创建的 nagiosadmin 用户帐户登录到 http://192.168.1.7/nagios。
在长途客户端主机上设置 NRPE
Nagios 长途插件实行器(NRPE)是一个系统保卫进程,使用特殊的客户端-服务器协议,并且应该安装在您盼望通过长途 Nagios 服务器监控的全部客户端主机上。它允许中央 Nagios 服务器在这些客户端主机上安全地触发任何 Nagios 检查,并且开销很低。在这里,我们将向您展示怎样设置和配置任何 CentOS 7 客户端以使用 NRPE;如果您在网络中有多个计算机需要监控,则需要为每个实例应用此方法。
准备就绪
要完成此方法,您需要一台除 Nagios 服务器之外的计算机,该计算机安装了 CentOS 7 操作系统,并具有 root 权限,您盼望监控该计算机,并且需要在计算机上安装您选择的基于控制台的文本编辑器,以及连接到互联网以便下载额外的软件包。该计算机需要可以大概通过网络访问我们的 Nagios 服务器。在我们的示例中,Nagios 服务器的 IP 地址为 192.168.1.7,我们的客户端系统的 IP 地址为 192.168.1.8。
怎样操作…
- 以 root 用户身份登录到 CentOS 7 客户端系统,并安装全部 Nagios 插件以及 NRPE:
- yum install epel-release;yum install nrpe nagios-plugins-all nagios-plugins-nrpe
复制代码 - 之后,打开主 NRPE 配置文件(起首辈行备份):
- cp /etc/nagios/nrpe.cfg /etc/nagios/nrpe.cfg.BAK && vi /etc/nagios/nrpe.cfg
复制代码 - 找到以 allowed_hosts 开头的行,并添加 Nagios 服务器的 IP 地址,用逗号分隔,以便我们可以与之通讯(在我们的示例中,192.168.1.7,因此请相应更改);它应该如下所示:
- allowed_hosts=127.0.0.1,192.168.1.7
复制代码 - 生存并关闭文件,然后在启动时启用 NRPE 并启动它:
- systemctl enable nrpe && systemctl start nrpe
复制代码 - 然后在 firewalld 中启用 NRPE 端口。为此,为 NRPE 创建一个新的 firewalld 服务文件:
- sed 's/80/5666/g' /usr/lib/firewalld/services/http.xml | sed 's/WWW (HTTP)/Nagios NRPE/g' | sed 's/<description>.*<\/description>//g' > /etc/firewalld/services/nrpe.xml
- firewall-cmd --reload
- firewall-cmd --permanent --add-service=nrpe; firewall-cmd --reload
复制代码 - 最后,测试 NRPE 连接。为此,以 root 用户身份登录到您的 Nagios 服务器(比方,在192.168.1.7)并实行以下命令以在我们的客户端(192.168.1.8)上检查 NRPE:
- /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.8 -c check_load
复制代码 - 如果输出显示带有数字的OK - load average消息,那么您已成功在客户端配置了 NRPE!
工作原理…
在本食谱中,我们向您展示了怎样在您盼望使用 Nagios 服务器监控的 CentOS 7 客户端上安装 NRPE。如果您想监控运行其他发行版(如 Debian 或 BSD)的其他 Linux 系统,您应该可以大概使用它们本身的包管理器找到适当的包,大概从源代码编译 NRPE。除了 NRPE 包之外,我们还在这台呆板上安装了全部 Nagios 插件,因为 NRPE 只是在客户端计算机上运行监控命令的保卫进程,但它不包括这些插件。安装后,NRPE 默认只监听当地主机(127.0.0.1)连接,因此我们随后不得不将其更改为也监听来自我们的 Nagios 服务器的连接,该服务器使用 IP 192.168.1.7,在主 NRPE 配置文件中使用allowed_hosts指令。NRPE 端口5666需要来自 Nagios 服务器的传入连接,因此我们还需要在防火墙中打开它。由于默认环境下没有 firewalld 规则可用,我们创建了本身的新服务文件并将其添加到当前的 firewalld 配置中。之后,我们可以通过在我们的 Nagios 服务器上运行一个check_nrpe命令来测试我们的 NRPE 安装,使用客户端的 IP 地址和一个随机检查命令(check_load返回系统的负载)。
监控紧张的长途系统指标
Nagios 插件check_multi是一个便捷的工具,可以在单个检查命令中实行多个检查,并天生一个总体返回状态和输出。在本食谱中,我们将向您展示怎样设置它并使用它快速监控客户端上的一系列紧张系统指标。
准备工作
假设您已经按照本章的食谱逐一操作,因此到如今为止,您应该已经有一个运行的 Nagios 服务器和另一个您想要监控的客户端计算机,该计算机已经可以通过其 NRPE 服务从外部被我们的 Nagios 服务器访问。您想要监控的这台客户端计算机需要安装 CentOS 7 操作系统,具有 root 权限,并在其上安装了您选择的基于控制台的文本编辑器,以及连接到互联网以便下载额外的软件包。客户端计算机将具有 IP 地址192.168.1.8。
怎样操作…
check_multi Nagios 插件可在 Github 上得到,因此我们将开始本食谱以安装git步伐,方法是下载它:
- 以 root 用户身份登录到客户端计算机,如果尚未安装 Git,请举行安装:
- 如今,通过从源代码编译来下载并安装check_multi插件:
- cd /tmp;git clone git://github.com/flackem/check_multi;cd /tmp/check_multi
- ./configure --with-nagios-name=nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-plugin-path=/usr/lib64/nagios/plugins --libexecdir=/usr/lib64/nagios/plugins/
- make all;make install;make install-config
复制代码 - 接下来,我们安装另一个非常有用的插件,名为check_mem,该插件在 CentOS 7 Nagios 插件rpms中不可用。
- cd /tmp;git clone https://github.com/justintime/nagios-plugins.git
- cp /tmp/nagios-plugins/check_mem/check_mem.pl /usr/lib64/nagios/plugins/
复制代码 - 接下来,让我们创建一个check_multi命令文件,该文件将包罗您盼望在单次运行中组合的全部客户端检查;打开以下文件:
- vi /usr/local/nagios/etc/check_multi/check_multi.cmd
复制代码 - 插入以下内容:
- command[ sys_load::check_load ] = check_load -w 5,4,3 -c 10,8,6
- command[ sys_mem::check_mem ] = check_mem.pl -w 10 -c 5 -f -C
- command[ sys_users::check_users ] = check_users -w 5 -c 10
- command[ sys_disks::check_disk ] = check_disk -w 5% -c 2% -X nfs
- command[ sys_procs::check_procs ] = check_procs
复制代码 - 接下来,使用以下命令行测试我们上一步创建的命令文件:
- /usr/lib64/nagios/plugins/check_multi -f /usr/local/nagios/etc/check_multi/check_multi.cmd
复制代码 - 如果统统精确,它应该打印出您的五个插件检查的效果和一个总体效果,比方,OK - 5 plugins checked。接下来,我们将在客户端的 NRPE 服务上安装这个新命令,以便 Nagios 服务器可以大概通过调用其名称长途实行它。打开 NRPE 配置文件:
- 在文件的末尾,紧接在最后一个# command行下面添加以下行,以便向我们的 Nagios 服务器公开一个名为check_multicmd的新命令。
- command[check_multicmd]=/usr/lib64/nagios/plugins/check_multi -f /usr/local/nagios/etc/check_multi/check_multi.cmd
复制代码 - 最后,让我们重新加载 NRPE:
- 如今,让我们检查是否可以从我们的 Nagios 服务器实行我们在上一步中界说的新的check_multicmd命令。以 root 身份登录并输入以下命令(根据您的客户端适当更改 IP 地址192.168.1.8):
- /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.8 -c "check_multicmd"
复制代码 - 如果输出与在客户端当地运行它(查看前一步)相同,我们可以成功地通过我们的服务器在客户端上实行长途 NRPE 命令,因此让我们在我们的 Nagios 服务器系统上界说该命令,以便我们可以在 Nagios 系统中开始使用它。打开以下文件:
- vi /etc/nagios/objects/commands.cfg
复制代码 - 在文件末尾插入以下内容,以界说一个名为check_nrpe_multi的新命令,我们可以在任何服务界说中使用它:
- define command {
- command_name check_nrpe_multi
- command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c "check_multicmd"
- }
复制代码 - 接下来,我们将在 Nagios 服务器上为我们要监控的客户端界说一个新的服务器界说(为配置文件指定一个符合的名称,比方,其域名或 IP 地址):
- vi /etc/nagios/servers/192.168.1.8.cfg
复制代码 - 插入以下内容,这将界说一个带有其服务的新主机,使用我们刚刚创建的新 Nagios 命令:
- define host {
- use linux-server
- host_name host1
- address 192.168.1.22
- contact_groups unix-admins
- }
- define service {
- use generic-service
- host_name host1
- check_command check_nrpe_multi
- normal_check_interval 15
- service_description check_nrpe_multi service
- }
复制代码 - 最后,我们需要配置全部应该在出现错误时为我们的新服务接收通知电子邮件的人员。打开以下文件:
- vi /etc/nagios/objects/contacts.cfg
复制代码 - 在文件末尾插入以下内容:
- define contactgroup{
- contactgroup_name unix-admins
- alias Unix Administrators
- }
- define contact {
- contact_name pelz
- use generic-contact
- alias Oliver Pelz
- contactgroups unix-admins
- email oliverpelz@mymailhost.com
- }
复制代码 - 如今,重新启动 Nagios 服务:
工作原理…
我们起首从作者的 Github 堆栈安装了check_multi和check_mem插件,它们是简朴的命令行工具。Nagios 通过运行这些外部命令来实行检查,并使用返回代码以及命令的输出来判断检查是否成功。Nagios 拥有一个非常机动的架构,可以通过插件、附加组件和扩展轻松扩展。全部范例的扩展都可以在exchange.nagios.org/找到一个中央位置举行搜刮。接下来,我们为check_multi添加了一个新的命令文件,其中我们放置了五个不同的系统check_命令。这些检查作为定制监控需求的一个出发点,将检查系统负载、内存消耗、系统用户、可用空间和进程。全部可用的check_命令都可以在/usr/lib64/nagios/plugins/check_*找到。正如您在我们的命令文件中看到的,这些check_命令的参数大概非常不同,解释它们全部超出了本食谱的范围。它们中的大多数用于设置阈值以到达某个状态,比方CRITICAL状态。要获取有关特定命令的更多信息,请使用命令的--help参数。比方,要了解check_load -w 5,4,3 -c 10,8,6命令中的全部参数的作用,请使用run /usr/lib64/nagios/plugins/check_load --help。您可以轻松地从现有插件中添加任意数量的新检查命令到我们的命令文件,大概如果您愿意,可以下载并安装任何新命令。check_multi插件还附带了很多命令文件示例,对于学习非常有用,因此请查看目录:/usr/local/nagios/etc/check_multi/*.cmd。
之后,我们通过在客户端当地以-f参数从check_multi命令干运行来检查我们刚刚创建的新命令文件的精确性。在其输出中,您将找到全部单个输出的信息,就像您单独运行这五个命令一样。如果单个检查失败,整个check_multi也会失败。接下来,我们在 NRPE 配置文件中界说了一个新的 NRPE 命令check_multicmd,然后可以从 Nagios 服务器实行,我们在下一步从 Nagios 服务器举行了测试。为了测试成功,我们盼望得到与从客户端本身调用命令时相同的效果。之后,我们在 Nagios 服务器上的commands.cfg中界说了这个命令,以便我们可以在任何服务界说中通过引用命令名称check_nrpe_multi来重复使用它。接下来,我们创建了一个以 IP 地址命名的新服务器文件(只要它在目录中具有.cfg扩展名,您可以将其命名为任何您喜好的名称),我们想要监控的客户端的 IP 地址为:192.168.1.8.cfg。它包罗恰好一个主机界说和一个或多个服务界说,这些界说通过主机界说中的host_name值与服务界说中的host_name值相干联。
在主机界说中,我们界说了一个contact_groups联系人,该联系人与contacts.cfg文件中的联系人组和联系人条目相干联。如果检查的服务出现任何错误,这些将用于发送通知电子邮件。服务界说中最紧张的值是check_command check_nrpe_multi行,它实行我们之前创建的唯一检查命令。别的,normal_check_interval也很紧张,因为它界说了在正常环境下服务检查的频率。在这里,它每 15 分钟检查一次。您可以向主机添加任意数量的服务界说。
如今,请前往您的 Nagios 网页前端检查您新添加的主机和服务。在这里,点击主机标签,您将看到在本教程中界说的新主机host1,它应该会提供有关其状态的信息。如果您点击服务标签,您将看到check_nrpe_multi服务。它应该显示状态为待定、正常或关键,这取决于单个检查的成功与否。如果您点击其check_nrpe_multi链接,您将看到有关检查的详细信息。
在本章中,我们只能向您展示 Nagios 的基础知识,但总有更多需要学习的内容,因此请阅读官方 Nagios Core 文档,网址为www.nagios.org,大概查看册本《Learning Nagios 4》,Packt Publishing,作者 Wojciech Kocjan。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |