老大哥网络监控系统

图 1. 老大哥(Sean MacGuire)正在监视
我并不感到无聊:我没有时间感到无聊。德克萨斯州农业推广服务处运营着一个相当庞大的企业级网络,该网络横跨被称为地狱半英亩的德克萨斯州。我们在 249 个县和 12 个地区办事处拥有大约 3,000 名用户,他们期望通过我们的广域网接收他们的电子邮件和文件。有些用户实际上期望网络在大多数时候都能正常工作。我们在大约 35 个地点使用以太网网络和 Novell 服务器,其中大约 15 个地点有路由器,这些路由器通过 56Kb 电路、部分 T1、帧中继和无线电链路混合连接。我们目前没有为我们的网络使用带刺铁丝网围栏,无论您可能听到什么。
我很荣幸成为建立和维护该网络团队的一员。我们并没有生活在一个完美网络的世界中——总会发生一些事情。几乎每天都会发生一次或多次广域网链路中断,通常是短时间的。我们有时会竭尽全力保持所有部件的连接。我有没有提到用户期望邮件和其他软件实际上可以工作?
在浏览 USENET 新闻组时,我读到一篇由加拿大蒙特利尔的 Sean MacGuire 撰写的关于“老大哥,Unix 系统监控问题的解决方案”的帖子。我饶有兴趣地注意到,老大哥是一组 shell 脚本和简单的 C 程序集合,旨在监控网络上的一组 Unix 机器。即使我们大多数关键任务服务器都是基于 Novell 的又如何?即使我们的一些 Web 服务器运行在 Macintosh、OS/2、Windows 95 或 NT 上又如何?我们在数量惊人的地方使用了 Linux 和各种 Unix 版本。
系统管理员经常报告监控软件安装困难和软件不兼容问题;因此,沮丧的用户经常给我们第一个暗示,表明一切都不太好。我们已经炮制了许多自制的监控系统;ping 和 traceroute 到所有服务器可能非常有用。我们甚至研究了一堆专有的(且昂贵的)网络监控系统。这些系统的成本之高令人惊讶。
根据 Sean MacGuire 在老大哥上的简介
老大哥是一组松散耦合的分布式工具,用于监控和显示整个 Unix 网络的当前状态,并在需要时通知系统管理员。它的出现是由于 Unix 系统日常管理任务的自动化。
USENET 新闻文章提供了老大哥主站点的 URL,http://www.iti.qc.ca/iti/users/sean/bb-dnld/。我将浏览器指向它,并得到一张蓝色图像作为回报,图像上是一张险恶的面孔,在紫色背景下,标题是“老大哥正在监视”。在最初的震惊之后,我了解到老大哥具有以下特点
基于 Web 的状态显示
可配置的警告和紧急级别
通过寻呼机或电子邮件通知
免费并包含源代码
我被深深吸引了,尤其是最后一项:“免费并包含源代码”。(我经常告诉人们 Linux 不是免费的,而是无价的。)那么一个无价的软件包能为我做什么呢?老大哥检查什么?
通过 ping 进行连接
HTTP 服务器已启动并正在运行
磁盘空间使用情况
正常运行时间和 CPU 使用率
基本进程仍在运行
系统生成的消息和警告
总的来说,非常合理。为了寻找一些“陷阱”,我发现我需要一台基于 Unix 的机器、一个功能正常的 Web 服务器和浏览器(用于显示)、一个编译器、Kermit 和一条调制解调器线路(用于寻呼机)。Web 服务器不成问题,因为我们运行着很多。Linux 自带 C 编译器,我们在许多带有调制解调器的机器上使用 Kermit。到目前为止,一切都很好。
老大哥网站提供了指向一些演示站点的链接,以及一个下载该程序的链接。我连接到一个演示站点,并看到了一个令人惊叹的显示

图 2
Legend [BIG BROTHER IMAGE] [help] [grn] System OK [BIG BROTHER IMAGE] [info] [yel] Attention [BIG BROTHER IMAGE] [page] [red] Trouble [BIG BROTHER IMAGE] [view] [blu] No report [BIG BROTHER IMAGE] Updated @ 22:52 [BIG BROTHER IMAGE] conn cpu disk http msgs procs iti-s01 [grn] [grn] [grn] [grn] [yel] [grn] route-r-000 [grn] - - - - - inet-gw-0 [grn] - - - - -
正如您所看到的,老大哥正在监视。在忍受着奥威尔式面孔的审视时,我检查了显示的其余部分。它的颜色像交通信号灯(绿/黄/红),更新时间清楚地显示在它下面。在“老大哥”的右侧是四个按钮,清楚地标记为 帮助、信息、寻呼 和 查看。在标题区域下方是一个表格,有六列标题和三行,每一行都整齐地标记着计算机主机名。由行和列的交点形成的框包含有吸引力的绿色和黄色小球。整体效果就像一棵装饰过的树。屏幕的左侧带有黄色色调,在中心逐渐变为黑色。
选择 帮助 按钮会给出老大哥的简要说明。选择 信息 按钮会提供更长更详细的系统说明,包括一个真正 值 千言万语的图形。寻呼 按钮会向无线电链路寻呼机发送信号——完全出乎我的意料。最后,查看 选择提供了信息的简要但可能更有用的视图,仅隔离出现问题的系统。
在我的例子中,只显示了“iti-s01”系统。我的浏览器光标在经过每个彩色点时都指示一个链接,所以我点击了闪烁的黄色点,收到了这条消息
yellow Tue Feb 18 22:50:53 EST 1997 Feb 16 12:22:33 iti-s01 kernel: WARNING: / was not properly dismounted
起初这让我感到困惑。它怎么可能知道这个?事实证明,老大哥 (BB) 定期检查系统 /var/log/messages 文件,并对任何以 WARNING 或 NOTICE 开头的行发出警报。由于我确信 Sean MacGuire 非常认真,我怀疑他将该行添加到他的消息文件中,以便查看者可以看到老大哥如何报告其发现。
突然,我的屏幕自动更新了。更新时间更改了五分钟,并且在标记为 进程 的列下出现了一个闪烁的黄色点。我点击了闪烁的黄色点,被告知 sendmail 进程未运行。这真的让我感兴趣了——老大哥可以监控选定的进程是否正在运行。
对于屏幕自动更新的能力感到有点困惑,我查看了文档源代码,发现了一些对我来说是新的 HTML 命令
<META HTTP-EQUIV="REFRESH" CONTENT="120"> <META HTTP-EQUIV="EXPIRES" CONTENT="Tue Feb 18 23:22:07 CST 1997">
第一个 META 行指示浏览器每 120 秒更新一次。第二个指示浏览器在过期时间和日期之后获取新副本——非常聪明。
我返回到图形窗口,发现左侧的黄色区域已变为红色。出现了一个新的主机名行,在标记为 连接 的列下有一个闪烁的红点。我点击了闪烁的红点,并阅读了这条消息
red Tue Feb 18 22:59:11 CST 1997 bb-network.sh: Can't connect to router''000... (paging)
与名为 router-000 的机器的连接已中断,并且管理员已被寻呼。令人惊讶的是,身在德克萨斯州的我,已经意识到加拿大蒙特利尔的网络中断。这真的很有可能——也许有一天我可以去度假了。
老大哥给我留下了深刻的印象,所以我决定使用它。Sean 周到地简化了它的获取过程,但要求您填写一份在线注册表,其中包含您的姓名和电子邮件地址。他还想知道您从哪里听说过老大哥。我在 1996 年 11 月初填写了他的表格,并在 12 月下旬收到了一份电子邮件调查表。要下载老大哥并获取有关系统如何工作以及如何安装和配置软件包的技术信息,请访问 http://www.iti.qc.ca/iti/users/sean/bb-dnld/bb-dnld.html。
当我单击下载老大哥的链接时,我最终得到了一个名为 bb-src.tgz 的文件。我不假思索地 gunzip 了它以获得 bb-src.tar。然后,我反思了自己即将犯下的错误,并决定在进一步操作之前下载并打印安装说明。老大哥的安装程序可以在 http://www.iti.qc.ca/iti/users/sean/bb-dnld/bb-install.html 上找到,以及关于如何设置系统的其他信息。为了以防万一,我还抓取并打印了调试信息(事实证明我不需要它),该信息在 http://www.iti.qc.ca/iti/users/sean/bb-dnld/bb-debug.html 上提供。
我按照安装说明进行操作时没有遇到任何问题。我决定将 $BBHOME 目录设置为 /usr/src/bb。据说自动配置例程适用于 AIX、FreeBSD、HPUX 10、Irix、Linux、NetBSD、OSF、Red Hat Linux、SCO、SCO 3/5、Solaris、SunOS4.1 和 UnixWare。我可以保证 Linux、Red Hat Linux、Solaris 和 SunOS 4.1 可以正常工作。C 程序编译顺利,安装过程也很顺利。与往常一样,您的结果可能会有所不同。不到一个小时,我看到了老大哥的彩色灯光显示。
此时,最好重新检查文档和信息文件。根据需要个性化您的安装,最重要的是,玩得开心。
我承认。我是一个隐藏的黑客。我看到了标准 BB 发行版中的许多东西,我想改进。老大哥的模块化和优雅简洁的结构使其可以随意修改,令人愉快。shell 脚本是可移植的、简单的、文档齐全且易于理解的。使用修改后的 hosts 文件来确定要监控的主机令人欣慰地熟悉。bbclient 脚本使将所需组件移动到另一个类似的 Unix 主机变得非常容易。Sean 在使这个软件包易于安装方面做得非常出色。
我对破解 BB 变得痴迷和强迫症,并对其进行了轻微修改,以 Sean MacGuire 的 v1.03 发行版为基础进行工作。我将我的更改转发给他,以便可能包含在以后的发行版中。
我添加到 BB 本身的功能包括
在简要视图 (bb2.html) 中链接到信息文件,这是我最需要它们的地方。
链接到每个列标题和列信息文件本身的 html 信息文件。我将这些文件与 bb.html 和 bb2.html 一起放在 html 目录中,并给它们起了像 conn.html、cpu.html、... smtp.html 这样的枯燥名称。
检查以确定 ftp 服务器、pop3 邮局和 SMTP 邮件传输代理 (MTA) 是否可访问 ($BBHOME/bin/bb-network.sh)。这些检查都使用 bbnet 通过 telnet 连接到相应的端口。我遵循 Sean 的风格,在 bb-hosts 文件中添加注释,如下所示
128.194.44.99 behemoth.tamu.edu # BBPAGER smtp ftp pop3 165.91.132.4 bryan-ctr.tamu.edu # pop3 smtp 128.194.147.128 csdl.tamu.edu # http://csdl.tamu.edu/ ftp smtp
一些环境变量到 $BBHOME/etc/bbdef.sh 以进行添加的监控,如下所示
# # WARNING AND PANIC LEVELS FOR DIFFERENT # THINGS. SEASON TO TASTE # DFPAGE=Y # PAGE ON DISK FULL (Y/N) CPUPAGE=Y # PAGE FOR CPU Y/N TELNETPAGE=Y # PAGE ON TELNET FAILURE? HTTPPAGE=Y # PAGE ON HTTP FAILURE? FTPPAGE=Y # PAGE ON FTPD FAILURE? POP3PAGE=Y # PAGE ON POP3 PO FAILURE? SMTPPAGE=Y # PAGE ON SMTP MTA FAILURE? export DFPAGE CPUPAGE TELNETPAGE HTTPPAGE\ FTPPAGE POP3PAGE SMTPPAGE
更新了 bb-info.html 和 bb-help.html 页面,以反映 1.03a 版本和 1997 年 2 月 10 日的日期。我还修改了它们,简要提及了新的 ftp、pop3 和 smtp 监控检查。具体来说,我修改了 bb-help.html 文件以添加新的寻呼机代码,如下所示
100—磁盘错误。磁盘已满 95% 以上...
200—CPU 错误。CPU 负载平均值过高。
300—进程错误。一个重要的进程已死掉。
400—消息文件包含严重错误。
500—网络错误,无法连接到该 IP 地址。
600—Web 服务器 HTTP 错误——服务器已关闭。
610—Ftp 服务器错误——服务器已关闭。
620—POP3 服务器错误——PopMail 邮局已关闭。
630—SMTP MTA 错误——SMTP 邮件主机已关闭。
911—用户寻呼。消息是回拨的电话号码。
在 bb-info.html 文件中添加了部分,以解释 ftp、pop3 和 smtp 监控。
在每个 html 页面上使用标准标签行文件,以标识页面的作者和位置。因此,mkbb.sh 和 mkbb2.sh 现在查找一个可选的标签行文件,以合并到它们生成的 html 文档中。可选文件名为 mkbb.tag(用于 mkbb.sh)和 mkbb2.tag(用于 mkbb2.sh)。shell 脚本在 $BBHOME/web 目录中查找可选的标签行文件,mkbb.sh 和 mkbb2.sh 文件也位于该目录中。
浏览了所有 html 生成脚本和 html 文件,以确保它们实际上有节,并在各种参数周围正确放置了双引号。
编辑了文件,以便在大多数情况下,所有内容都适合 80 列的屏幕。
修改了 $BBHOME/etc/bbsys.sh,以便更容易忽略某些磁盘卷,如下所示
# DISK INFORMATION # DFSORT="4" # % COLUMN - 1 DFUSE="^/dev" # PATTERN FOR LINES TO INCLUDE DFEXCLUDE="-->E dos|cdrom" # PATTERN FOR LINES TO EXCLUDE
我修改了 $BBHOME/etc/bbsys.linux,以便正确找到 ping 程序,如下所示
# bbsys.linux # # BIG BROTHER # OPERATING SYSTEM DEPENDENT THINGS # THAT ARE NEEDED # PING="/bin/ping" # LINUX CONNECTIVITY TEST PS="/bin/ps -ax" # LINUX DF="/bin/df -k" MSGFILE="/var/adm/messages" TOUCH="/bin/touch" # SPECIAL TO LINUX
添加了动态 traceroute 和 ping 每个被监控系统的能力。我与 Sean 谈过此事,并且为了保持 KISS(保持简单,傻瓜)原则,我们认为最好将这些功能添加到信息文件中。用户部分在信息文件的源代码中非常明显。cgi 脚本是非常简单的 shell 脚本,如 列表 1 所示。
Sean MacGuire 是老大哥的主要作者。秉承去中心化共享软件开发的优良传统,Sean 向所有人征求改进、建议和增强功能。然后,他巧妙地将它们适当地纳入老大哥发行版中。因此,像 Linux 一样,老大哥也处于积极演变的动态状态,并有成千上万(至少是数十个)人的贡献。这种受约束的无政府状态产生了具有国际风味的有趣结果。
来自瑞典的 Jacob Lundqvist 正在积极改进寻呼界面。他在增强寻呼部分方面做得非常出色,增加了对字母数字和 SMS 寻呼机的支持。Darren Henderson(美国缅因州)添加了 AIX 支持。David Brandon(美国德克萨斯州)添加了正确的 IRIX 支持,Jeff Matson(美国明尼苏达州)修复了一些 IRIX 错误。Richard Dansereau(加拿大)将老大哥移植到 SCO3 并提供了对其他 df 的支持。Doug White(美国俄勒冈州)修复了一些寻呼脚本错误。Ron Nelson(美国明尼苏达州)使 BB 适应 Red Hat Linux。Jac Kersing(荷兰)对 bbd.c 进行了一些安全增强。Alan Cox(威尔士)提出了一些 shell 脚本安全修改建议。Douwe Dijkstra(荷兰)提供了 SCO 5 支持。Erik Johannessen(美国明尼苏达州)在 SunOS 4.1.4 安装中幸存下来。Curtis Olson(美国明尼苏达州)在 IRIX、Linux 和 SunOS 安装中幸存下来。Gunnar Helliesen(挪威)将老大哥移植到 Ultrix、OSF 和 NetBSD。Josh Wilmes(美国密苏里州)为新的 ping 功能添加了 Solaris 更改。
毫无疑问,世界上还有许多其他无名英雄此刻正在努力增强 BB。
我正在(滥)用老大哥,其方式并非其创建者 Sean MacGuire 最初设想的方式。德克萨斯州农业推广服务处的网络是各种不同操作系统和协议的极其异构的混合体,而不是同构的基于 Unix 的网络。我希望看到老大哥了解 IPX/SPX 协议,以便进行 Novell 连接监控。我还希望看到 Macintosh、Novell、OS/2、Windows 3.1x、Windows'95 和 Windows NT 的老大哥数据收集模块。如果我能抽出时间,用 Perl 重写老大哥可能会更好地服务于这些不同的平台。
我们现在监控大约 122 台主机。只有 20 台是实际运行老大哥 bb 程序的基于 Unix 的主机。大约 28 台是 Novell 服务器,39 台是路由器,其余是运行一种或多种类型服务器(34 台 FTP 或 26 台 HTTP)的 Macintosh、OS/2、Windows 3.1x、Windows'95 和 Windows NT 机器的混合体。我们还发现监控我们的 31 个 PopMail 邮局和 43 个邮件主机和网关很有用。我们还在检查三个 DNS 服务器的连接,因为它们是关键任务。
老大哥(或者,我现在亲切地称之为“老烦哥”)现在每天五次或更多次提醒我们出现中断。通常,系统管理员会收到寻呼。检查 BB 的显示,并使用信息文件 traceroute 和 ping 发生故障的机器以验证中断。许多连接中断涉及路由器、DSU/CSU 和多路复用器以及实际主机。BB 的显示使我们能够快速看到有助于诊断的模式。从 html 信息页面动态 traceroute 和 ping 主机的能力也有助于快速确定实际故障点。如果被寻呼的管理员无法纠正问题,他会将问题转达给负责人员或机构。
在我们安装老大哥之前,我们经常接到沮丧的用户打来的电话,通知我们这些故障。现在,我们通常在他们打电话之前就意识到发生了什么故障。用户也开始意识到他们可以通过 WWW 界面监控网络。在许多情况下,我们能够实际上在问题干扰我们的用户之前纠正问题。很难准确衡量节省的时间,但我们估计老大哥总体上产生了积极的净效应。
我们在公共可见区域放置了一台机器,显示老大哥的简要视图。绿色、黄色、红色和蓝色屏幕飞溅在走廊远处清晰可见,帮助我们的网络团队更加了解正在发生的问题。WWW 页面的可访问性使老大哥甚至对我们网络远端的人员也很有用。因此,老大哥已成为我们网络团队的得力成员。也许现在我有时间感到无聊了。
Paul Sittler (p-sittler@tamu.edu) 是德克萨斯州农业推广服务处的一名员工,该服务处是德克萨斯州 A&M 大学系统的一部分。作为一个人,他当然是一位熟练的工具制造者。他喜欢摆弄技术,并努力使其对他的同类有用。他是一个害羞的人,口味简单,但对德国葡萄酒仍然有挑剔的味蕾。他会说多种语言,至少能用几种人类语言进行交流,并且精通几种计算机方言。他天生患有一种特殊的遗传缺陷,这使他需要拆卸和重新组装东西,而不是仅仅使用它们。