编者按,在房地产市场,真正一锤定音的是地段,但在网络和服务器管理领域,可视性才是一切。如果你不了解自家的网络和服务器每天都在“密谋”着什么,早晚都得碰上大灾难。
幸运的是,市场上有大量工具(有收费的也有开源的)可以点亮我们的网络环境,保我们不受黑暗侵扰。
对普通用户来说,免费总比收费好,因此今天编辑决定把自己压箱底的开源工具分享出来,希望它们能守护好各位的网络。这 7 大免费工具可以满足用户从网络到服务器监控的各种需求,里面甚至还有交换机和路由器的备份。
Cacti
此前如果要监控网络链路流量负载,大家一般会用到 MRTG 这个工具。上世纪 90 年代,Tobi Oetiker 抓住时机以轮询数据库为基础写了一个简单的绘图工具,这个工具监控起路由器流量非常好用,它就是 MRTG。经过一段时间的发展,Cacti 出现了,它扛起了 MRTG 的大旗,将流量监控能力提高到了一个新的高度。
Cacti 是一款 LAMP 应用,它能为各类数据绘制出一个完整的图形框架。在最新版本中,Cacti 采集数据的能力几乎无人可及,从数据中心冷却单元回液温度、滤波器体积再到 FLEXlm 许可证的应用都不在话下。如果设备或服务可以反馈数值型数据,它就能与 Cacti 融为一体。对于如何监控使用了 SNMP 协议的设备(Linux 和 Windows 服务器、路由器、交换机等),Cacti 已经有了模版,而针对其他硬件和软件的模板也在不断完善中。
虽然 Cacti 默认主攻 SNMP 协议设备,但本地 Perl 或 PHP 脚本照样可以使用。Cacti 的图形框架可以熟练的分离采集到的数据并将其绘制成离散实例图,方便重组现有数据并反馈到监视器中。除此之外,你还能通过点击和拖曳在图中观察特定的时间点和区域。
只要用上 PHP Network Weathermap 插件,你就能创建自己的实时网络地图,实时掌握网络设备的链路使用率。当你的鼠标悬停在网络链接的描述上时,就会有完整的图像出现。听说,许多地方都可以用到Cacti,比如,把一台 42 寸的 LCD 显示器挂在墙上,让员工一眼就能看到网络的利用情况和连接的状态。
Cacti 绝对是一款性能强悍且用途广泛的绘图和趋势工具,它除了能追踪一切,还有近乎无限的可定制能力,因此到底能不能挖掘出 Cacti 的最大潜力还得看你自己。
Nagios
Nagios 是一款成熟的网络监控工具,它已经诞生多年且处在不断开发中。用 C 语言编写的 Nagios 只要搭配监控套件使用,就能满足大多数网络和系统监控人员的需求。Nagios 后端稳固且拥有流畅直观的 Web 图形用户界面。
与 Cacti 一样,Nagios 背后有一个活跃的社群,它能用到的插件资源也相当丰富。配合 WebInject 使用,你就能完成对服务器、网络服务和连接等的实时监控。笔者主要用 Nagios 监控服务器磁盘空间、RAM、CPU 和 FLEXlm 许可证利用率、服务器温度、WAN 和网络连接延迟等。此外,它还能保证 Web 服务器不但能回答 HTTP 查询,还能反馈期望页面。
没有通知提醒的网络和服务器监控无疑是不完整的,Nagios 就有一套 email/短信通知引擎,同时还能通过升级来获取智能通知能力(在对的时间通知对的人),如果使用得当绝对是超级杀手锏。除此之外,笔者还将 Nagios 与 Jabber(即时通讯服务器)进行了整合,有了即时通讯、email 和短信三种方案,再也不怕错过通知了。借助流畅的 Web 图形用户界面,用户还能快速暂停通知或发现问题,同时它还能记录管理员留下的便条。
Nagios 对初学者来说有些困难,但复杂的配置也是它的力量来源
如果以上这些还不够你用,Nagios 还有映射功能,它能按网络上的位置将被监控设备有逻辑的呈现在监视器上,同时用彩色编码标出存在的问题。
不过 Nagios 也有缺点,它配置起来实在太复杂了,至少对初学者来说是挺费时间的。不过,如果你掌握了标准的 Linux/Unix 配置文档,就会觉得一切都挺简单。与其他工具一样,Nagios 功能繁多,但想用好这些功能也得有相对应的能力。
在这里我想说的是,别因为 Nagios 的复杂性而气馁,玩转了它之后能省下的时间简直不可限量。此外,Nagios 上的预警系统绝对值得一用,所以花点时间好好学学吧。
Icinga
Icinga 起初是 Nagios 的一个分支,但最近被重新编写成了 Icinga 2。眼下,两个版本都还处在不断开发中,Icinga 1.x 可以直接反向兼容 Nagios 插件和配置。Icinga 2 则是做减法得来的,它还能提供分布式监控和多线程框架,这是 Nagios 或 Icinga 1 所不具备的。你可以从 Nagios 迁移到 Icinga 1,然后再迁移到 Icinga 2。
与 Nagios 一样,Icinga 几乎也能通吃所有设备,搭配 SNMP、定制插件和扩展使用效果更佳。
Icinga 提供全局监控和警告框架,只是在 Web UI 上与 Nagios 有所不同
Icinga 有多款 Web UI,它与 Nagios 的不同主要是配置,用户通过 Web UI 就能搞定,省去了麻烦的配置文档。对于那些在命令行之外管理配置的人来说,这是个重大利好。
Icinga 融入了多款绘图和监控套件(如 PNP4Nagios、inGraph 和 Graphite),可视化性能绝对可靠。此外,Icinga 还拥有扩展报告功能。
NeDi
如果你搜寻网络上的设备时还需要远程登录交换机并进行 MAC 地址查询,或者说你希望知道某台设备身处何方,那么 NeDi 绝对是个好选择。
NeDi 是一款 LAMP 应用,它会对网络交换机上的 MAC 地址和 APR 映射表进行筛查,在本地数据库给发现的每个设备编目。虽然这款工具不太有名,但对于那些设备一直处在移动中的公司网络来说,它用起来确实非常方便。
你可以直接登陆 NeDi 的 Web 图形用户界面并通过 MAC 地址、IP 地址或 DNS 域名来搜索交换机、交换机端口或任何设备的无线 AP。NeDi 会尽可能多的从它遇到的网络设备上采集信息,并把序列号、硬件和软件版本号、当前的温度、模块配置等给记录下来。你甚至可以用 NeDi 标示出被盗或丢失设备的 MAC 地址。如果这些设备重新在网络上露面,NeDi 会自动通知用户。
发现设备是定时任务,而配置则更加直截了当,它自带一个配置文档,用户可以根据需求进行定制,包括使用正规则表达式或网络边界定义跳过某个设备。如果你使用的是 MPLS 网络或由原先的界限分隔的网络,甚至可以直接插入设备的种子列表来查询。NeDi 通常会使用 CDP 协定或链路层发现协定,在网络中穿梭时它会顺带发现新的交换机和路由器,随后连上这些设备手机信息。一旦搞定了初始设置,运行发现任务就会变的相当快。
其实 NeDi 与 Cacti 已经实现了一定程度的融合,如果给 Cacti 提供可用的增速,还能直接调用 Cacti 的图形框架。
Ntop
Ntop 计划,也就是传说中的 Ntopng,已经陆陆续续开发了十年。它是一款顶尖的网络流量监控工具,Web 图形用户界面简洁且顺滑。它使用 C 语言编写且完全独立,你只需要运行配置,就能监控某个特定网络接口的单一进程,就这么简单。
Ntop 提供了简单易懂的图形和表格来显示当前和过去的网络流量,包括协议、源、目的地以及特定交易的历史,甚至两端的主机。此外,你还会发现广泛的网络利用率图表、实时地图和趋势,以及针对各种附加件(例如NetFlow和sFlow)的插件框架。这里甚至还有专门嵌入到 Ntop 的硬件监控器 Nbox。
Ntop 甚至用上了轻量级 Lua API 框架,通过脚本语言就能支持扩展。Ntop 还可以将主机数据存储在 RRD 文件中,以支持持久的数据采集。
Ntop 最便捷的用途就是现场流量检查。当你发现自己的某个 Cacti PHP Weathermap 突然显示红色的网络链接集时,就意味着这些链接的利用率超过了 85%,但原因却不得而知。只要切换到 Ntopng 程序来监控该网络段,就可以查看最高流量消耗者每分钟的报表,并立即获知到底哪个主机在占用流量。
这种可视性算得上是无价之宝了,而且唾手可得。从本质上来讲,你可以在被配置成交换机级别的任何端口运行 Ntopng,以便监控任何端口或者 VLAN。
Zabbix
Zabbix 是一款全面的网络和系统监控工具,它将多个功能集成到了一个基于 Web 的控制台。它可以配置为监控和采集来自各种服务器和网络设备的数据,为每个目标提供服务和性能监控。
Zabbix 可与运行在监控系统上的代理协同工作,它也可以使用 SNMP 或其他监控方法(如对开放服务 SMTP 和 HTTP 的远程检查),这样无需代理就能运行。它支持 VMware 和其他虚拟化管理程序,并可生成关于管理程序性能和活动的深度数据。此外,Zabbix 还可以监控 Java 应用程序服务器、Web 服务和数据库等。
用户可以手动或通过自动发现过程添加主机。一组广泛的默认模版集适用于最常见的用例,例如 Linux、FreeBSD 和 Windows 服务器。一些知名服务(如 SMTP 和 HTTP),以及 ICMP 和 IPMI 设备也可进行详细的硬件监控。此外,使用 Perl、Python 或几乎任何语言编写的自定义检查也可以整合进 Zabbix。
Zabbix 还能提供可定制的仪表盘及 Web 用户图形界面来突显最关键的组件。通知和升级可以作为自定义操作添加到主机或主机组。你还可以将操作配置为触发远程命令,当观察到某个事件达到一定标准,就会自动在被监控的主机运行脚本。
Zabbix 会以图形形式显示性能数据,如网络数据吞吐量和 CPU 使用率,用户还可以用定制的显示方式收集它们。此外,Zabbix 支持用定制地图、屏幕及幻灯片来显示被监控设备的当前状态。
开始阶段 Zabbix 用起来很复杂,但谨慎使用模版和自动发现功能可以缓解整合时的麻烦。此外,除了可安装的工具包,Zabbix 还可以充当几种流行管理程序的虚拟设备。
Observium
Observium 是一个网络和主机监控器,它可以为系统扫描位置范围并使用通用 SNMP 登录凭证来监控系统。作为一款 LAMP 应用,Observium 设置和配置起来比较容易,只需安装常见的 Apache、PHP、MySQL、数据库创建和 Apache 配置等。安装完成后,它就成了自己的服务器,自带专用 URL,而不是隶属于更大的 Web 树。
随后,你可以登录图形用户界面并开始添加主机和网络、自动发现范围和 SNMP 数据等。下一步就是让 Observium 在整个网络穿行,并采集每个系统的数据。Observium 还可以通过 CDP、LLDP 或 FDP 发现网络设备,主机代理则可以部署到 Linux 系统来帮助完成数据的采集。
所有这些数据都会呈现在易用的用户界面上,它能提供大量统计数据、图表和图形,其中包括 ping 和 SNMP 响应时间,以及 IP 输出、分片、数据包数量等。根据设备的不同,这些数据可以用于每个端口,也包括模块化设备。
对服务器来说,Observium 会显示 CPU、RAM、存储、swap、温度和事件日志状态。你还可以将数据收集和服务的性能图表进行整合,包括 Apache、MySQL、BIND、Memcached 和 Postfix等。
Observium 是一款超棒的 VM 工具,因此它也可以迅速成为监控服务器和网络状态信息的常用工具,该工具可以给各种规模的网络带来自动发现和图表功能。
DIY
通常来说,IT 管理员认为他们不能越线,无论我们面对的是定制应用或“不受支持”的硬件,我们很多人都认为,如果监控工具无法立即处理它,也就意味着它无法处理了。但事实并非如此,只要多付出点努力,没有什么不能监控、登记,而且我们还能让它们更具可视性。
典型例子就是具有数据库后端的自定义应用,如 Web 商店或公司内部财务应用。管理层希望通过漂亮的图形和图表来描述数据的使用情况。举例来说,如果你已经在使用 Cacti,就有几种方法可以构建这种图表,比如构建简单的 Perl 或者 PHP 脚本在数据库运行查询功能,并将数据传输到 Cacti,或者使用私有 MIB(管理信息库)调用 SNMP 数据库服务器。这完全可以做到,并且很容易就能完成。
如果是不受支持的硬件,只要它使用 SNMP,就很容易获取你需要的数据,但可能需要费点劲。只要你有正确的 MIB 来查询,随后就可以使用这些信息来编写或修改插件来采集这些数据。在很多情况下,你甚至可以使用标准 SNMP 整合你的云服务到这种监控中,当然也可以通过云供应商提供的 API。虽然你有云服务,但并不意味着你应该将所有监控交给云供应商。因为它们可能不像你一样了解你的应用和服务堆栈。
对普通技术人员来说,让这些工具运行起来并不困难,因为这些工具通常有针对 Linux 的数据包可供下载。在某些情况下,它们还可被预先配置为虚拟服务器。配置和调整这些工具可能需要一些时间,但最初并不难。无论怎么说,这些工具绝对值得尝试。
无论你最终会用到哪款工具,至少都能获得一个全年无休搞监控的好工具。虽然有些工具用起来稍显困难,但相信我,前期投入的时间绝对亏不了。此外,记得在另一个服务器上运行一组小型监控工具来盯着主监控服务器。
本文作者:大壮旅
来源:51CTO