使用 Linux 进行网络监控
NOCOL,即在线网络运营中心,使指定的机器能够托管网络监控代理的集合。这些代理可以执行各种任务,从使用 ICMP ping 方法检查机器是否“启动”到通过请求测试页面来确保远程 Web 服务器按预期运行。这允许以多种方式诊断和报告网络上的问题,可以通过电子邮件、网页或专用终端进行。
警报系统通过升级工作。通常,任何报告的数据都归类为 INFO。但是,如果服务开始出现异常,则可以将其标记为 WARNING、ERROR 或 CRITICAL。如果问题未得到处理,它将升级(WARNING 将升级为 ERROR,ERROR 将升级为 CRITICAL)。例如,您可能有一台必须定期重启的机器。因此,您会期望 NOCOL 抱怨机器不时停止响应。在这种情况下,您会将此类事件归类为 WARNING。然后,您将随时了解重启何时发生:如果事件升级到 ERROR 或更高,您将知道有些严重错误发生了。
如今,大多数路由器和类似设备都与 SNMP(简单网络监控协议)兼容,并且几个 NOCOL 代理具有询问此类设备的能力。
NOCOL 不 需要以 root 身份运行。在安装过程中,少数确实需要特权的二进制文件被设置为 SUID root。建议您在系统上创建一个名为“nocol”的用户,用于所有与 NOCOL 相关的活动,包括在安装期间使用它。
NOCOL 可从 ftp://ftp.navya.com/pub/ 获取。在撰写本文时,最新的稳定版本是 nocol-4.2.tar.gz,本文将使用该版本。
NOCOL 广泛使用 Perl,因此请确保在继续之前已安装 Perl。如果您的 Linux 系统不太可能尚未安装 Perl,请从 https://perldotcom.perl5.cn/CPAN/ 获取。
一旦您将 NOCOL 存档安全地放在您建议的监控服务器上(一台配备 32MB 内存的 486/66DX 机器对我们来说就足够了),请执行以下神奇操作
gzip -dc nocol-4.2.tar.gz | tar xvf-
我们在 Red Hat 5.2 系统上安装了 NOCOL,并进行了升级以允许使用 Linux 2.2.1 内核。进入新生成的 nocol-4.2 目录,然后键入
./Configure然后,系统会询问您一些关于您的系统的简单问题
输入顶层目录: NOCOL 树默认位于 /usr/local/nocol,但您可以根据需要进行调整。确保“nocol”用户有权写入您指定的任何目录。
输入 man 页面的位置: 这些页面默认位于主树下,但您可能更喜欢将它们放在系统上更“传统”的位置。
输入 man 页面的扩展名: 我坚持使用默认值 n 作为此选项。
输入您的日志主机的完全限定名称: 我为主要 NOCOL 监视器设置的服务器也用于日志记录目的,此选项默认设置为安装机器的主机名。为简单起见,接受默认值。
您的 MAIL 程序位于何处? 为了使 NOCOL 的电子邮件警报系统正常运行,它需要访问 mail 二进制文件。默认值 /bin/mail 应该适用于大多数 Linux 安装。
操作电子邮件应发送到何处? 此电子邮件地址用于一般的 NOCOL 消息。根据需要进行设置。
紧急/关键电子邮件应发送到何处? 同样,此电子邮件地址用于紧急事件(例如,“Web 服务器爆炸了!”)。
您想使用哪个编译器? NOCOL 系统的部分代码是用 C 语言编写的。默认选择 cc 应该足够了。
您想要哪些编译器选项 (-DDEBUG)? 这实际上是为开发人员准备的,因此接受默认值 -O 就可以了。
Perl 在您的系统上的位置在哪里? 在此处输入 Perl 二进制文件的路径,如果 /usr/bin/perl 是正确的,则接受默认值。
可以预见的是,可以通过键入以下命令来启动编译过程
make
在我们的系统上,etherload(一种用于监控以太网负载的工具)编译失败。etherload 在这里没有介绍,我们希望这个问题在未来的版本中得到纠正。
现在安装软件
make install
使用 su 以 root 身份登录并键入
make root预计会因 etherload 未编译而再次失败。
这样就完成了安装过程。现在剩下的就是让 NOCOL 为您的网络发挥作用。
监视器的示例配置文件安装在您建议的 NOCOL 树下的 /etc/samples 中。查看这些文件以熟悉其工作原理。
您可能要监控的第一件事是网络上的机器是否已启动并正在运行。传统的做法是查看它们是否响应 ping 请求。
要处理网络上的 UNIX 机器(那些运行 RPC 端口映射器的机器),请在 /etc 目录中创建一个名为 rpcpingmon-confg 的文件,键入如下内容
POLLINTERVAL 300 kenny kenny.your-network.com kyle kyle.your-network.com cartman 123.123.123.123
POLLINTERVAL 指示 NOCOL 应“扫描”网络的频率。在我们的示例中,它将每 300 秒(5 分钟)扫描一次。接下来是要监控的机器列表:第一列是“友好名称”,第二列包含 TCP/IP 主机名或 IP 地址。
对于非 UNIX 机器(路由器、Windows 机器等),您应该创建一个单独的文件,名为 ippingmon-confg。格式相同。
NOCOL 包含许多其他监视器(请参阅 NOCOL 套件),您应该研究和配置这些监视器以满足您的需求。示例配置文件很好地解释了它们的作用以及如何设置它们。
在 NOCOL 可以开始分析您的网络之前,必须调整一些小的脚本。同样,这些脚本都位于您安装 NOCOL 的目录下。
Perl 脚本 bin/keepalive_monitors 处理监视器的自动启动。在第 32 行左右,您会找到以下两行(忽略换行)
PROGRAMS="noclogd etherload ippingmon rpcpingmon nsmon ntpmon portmon" PROGRAMS="$PROGRAMS radiusmon hostmon tpmon"
修改这些行,使其仅包含您实际配置的监视器。为了匹配此处讨论的两个监视器,您可以将它们合并为一行
PROGRAMS="ippingmon rpcpingmon"脚本 bin/notifier 处理将警告电子邮件发送到配置期间指定的地址。默认情况下,当站点被标记为“critical”超过两个小时时,它将发送一封电子邮件。如果您对 Perl 感到自信,则可以指定更多时间过去后要联系的其他地址。在 AFTERx 行中指定这些地址
AFTER2=" AFTER3=" AFTER5="emergency-team@your-network.com"NOCOL 附带一个自定义 crontab 文件,该文件将自动执行任何所需的内务处理,例如确保所有监视器都在运行并轮换日志。要安装它,请进入 NOCOL 树中的 /bin 目录并键入
su nocol crontab crontab.nocol
要最终启动 NOCOL,请运行位于 bin 目录中的 keepalive_monitors 脚本。如果一切顺利,监视器将开始工作。
如果失败,请键入 ps aux | grep nocol (查看监视器是否正在运行),然后返回并检查您是否正确遵循了说明。
您很可能想查看 NOCOL 报告的内容。最简单的工具是 netconsole,它可以在控制台或通过 TELNET 会话运行。运行它并在提示时输入您的终端类型(例如 vt220)。控制台屏幕将出现,并且很可能是空的。默认设置为仅显示 CRITICAL 事件。
按 l 键可让您更改查看模式。将其设置为级别 4 (INFO),您将看到您的配置监视器收集的所有信息。有关示例,请参见列表 1。随意尝试不同的级别,直到找到最适合您需求的级别。h 键将显示全面的帮助屏幕。
在本文的安装过程中,我发现一个旧的 ICL DRS-10 串行终端隐藏在橱柜中。此终端或等效终端可以连接到 Linux 机器并用作专用监控屏幕。
/etc/gettydefs 中所需的确切设置取决于您的终端的规格。对于 DRS-10,我们对 Red Hat 使用了以下条目
# 9600 baud Dumb Terminal entry DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP \ CLOCAL #@S login: #DT9600
现在我们需要编辑 /etc/inittab 文件以在终端上显示登录屏幕。在操作此文件时要小心:可能会导致您的 Linux 系统无法启动。添加条目
S1:3456:respawn:/sbin/getty ttyS0 DT9600 vt220用于连接到第一个串行端口 (ttyS0) 的终端。
最后,通过键入以下命令强制 init 重新检查其配置文件
/sbin/telinit q
如果一切顺利,您的终端应显示登录提示符。从那里,您可以像往常一样启动 netconsole。
文本终端 HOWTO (www.linuxhq.com/HOWTO/Text-Terminal-HOWTO.html) 中更详细地描述了如何设置此类串行终端。
NOCOL 具有一个 Web 界面,包含在存档中,有关设置它的说明可以在 INSTALL 文件中找到。本质上,这是一个 Web 版本的 netconsole,可以自定义以使其看起来更炫酷一些(参见图 1)。
NOCOL 的 hostmon 部分也非常强大。它允许您在网络上的机器上安装基于 Perl 的客户端,以便监控可用磁盘空间、邮件队列等方面。可以扩展脚本以监控您可能正在运行的任何自定义软件。(我们添加了一个扩展来监控我们的 X.400/SMTP 邮件网关软件上的队列。)
系统提供了一个 API,允许您在 Perl 中编写自己的监视器。因此,NOCOL 具有监控任何事物的能力。
作为 NOCOL 灵活性的一个例子,我编写了 notifier 工具的扩展,该工具利用了我们的内部 SMS 消息系统。这允许将描述 CRITICAL 问题的文本消息发送到我的手机。这是通过为 SMS 网关编写电子邮件前端来完成的,因此 notifer 所要做的就是以正确的格式发送电子邮件。
本质上,NOCOL 已被证明是一个非常有用的工具。它在我们网络问题发生后立即向我们发出警报,并且它是免费软件(它是在“不太像 GPL”协议下发布的)只是 Linux 下提供的出色免费软件的另一个例子。
