Linux下网络监控工具总结

borislee0 2016-10-20

对任何规模的业务来说, 网络监控工具都是一个重要的功能.

网络监控的目标可能千差万别. 比如, 监控活动的目标可以是保证长期的网络服务、安全保护、对性能进行排查、网络使用统计等. 由于它的目标不同, 网络监控器使用很多不同的方式来完成任务. 比如对包层面的嗅探, 对数据流层面的统计数据, 向网络中注入探测的流量, 分析服务器日志等.

尽管有许多专用的网络监控系统可以365天24小时监控, 但您依旧可以在特定的情况下使用命令行式的网络监控器, 某些命令行式的网络监控器在某方面很有用. 如果您是系统管理员, 那您就应该有亲身使用一些知名的命令行式网络监控器的经历. 这里有一份Linux上流行且实用的网络监控器列表.

1 包层面的嗅探器


在这个类别下, 监控工具在链路上捕捉独立的包, 分析它们的内容, 展示解码后的内容或者包层面的统计数据. 这些工具在最底层对网络进行监控、管理, 同样的也能进行最细粒度的监控, 其代价是影响网络I/O和分析的过程.

编号工具描述
1dhcpdump一个命令行式的DHCP流量嗅探工具, 捕捉DHCP的请求/回复流量, 并以用户友好的方式显示解码的DHCP协议消息. 这是一款排查DHCP相关故障的实用工具.
2dsniff一个基于命令行的嗅探、伪造和劫持的工具合集,被设计用于网络审查和渗透测试. 它可以嗅探多种信息, 比如密码、NSF流量(LCTT 译注:此处疑为 NFS 流量)、email消息、网络地址等
3httpry一个HTTP报文嗅探器, 用于捕获、解码HTTP请求和回复报文, 并以用户友好的方式显示这些信息. (LCTT 译注:延伸阅读.)
4IPTraf基于命令行的网络统计数据查看器. 它实时显示包层面、连接层面、接口层面、协议层面的报文/字节数. 抓包过程由协议过滤器控制, 且操作过程全部是菜单驱动的. (LCTT 译注:延伸阅读.)
5mysql-sniffer一个用于抓取、解码MySQL请求相关的数据包的工具。它以可读的方式显示最频繁或全部的请求
6ngrep在网络报文中执行grep。它能实时抓取报文,并用正则表达式或十六进制表达式的方式匹配(过滤)报文。它是一个可以对异常流量进行检测、存储或者对实时流中特定模式报文进行抓取的实用工具
7p0f一个被动的基于包嗅探的指纹采集工具,可以可靠地识别操作系统、NAT或者代理设置、网络链路类型以及许多其它与活动的TCP连接相关的属性
8pktstat一个命令行式的工具, 通过实时分析报文, 显示连接带宽使用情况以及相关的协议(例如,HTTP GET/POST、FTP、X11)等描述信息
9Snort一个入侵检测和预防工具,通过规则驱动的协议分析和内容匹配,来检测/预防活跃流量中各种各样的后门、僵尸网络、网络钓鱼、间谍软件攻击
10tcpdump一个命令行的嗅探工具, 可以基于过滤表达式抓取网络中的报文, 分析报文, 并且在包层面输出报文内容以便于包层面的分析. 他在许多网络相关的错误排查、网络程序debug、或安全监测方面应用广泛
11tshark一个与Wireshark窗口程序一起使用的命令行式的嗅探工具. 它能捕捉、解码网络上的实时报文, 并能以用户友好的方式显示其内容.

2 流/进程/接口层面的监控


在这个分类中, 网络监控器通过把流量按照流、相关进程或接口分类, 收集每个流、每个进程、每个接口的统计数据. 其信息的来源可以是libpcap抓包库或者sysfs内核虚拟文件系统. 这些工具的监控成本很低, 但是缺乏包层面的检视能力.

编号工具描述
1bmon一个基于命令行的带宽监测工具, 可以显示各种接口相关的信息, 不但包括接收/发送的总量/平均值统计数据, 而且拥有历史带宽使用视图
2iftop一个带宽使用监测工具,可以实时显示某个网络连接的带宽使用情况。它对所有带宽使用情况排序并通过ncurses的接口来进行可视化。他可以方便的监控哪个连接消耗了最多的带宽. (LCTT 译注:延伸阅读)
3nethogs一个基于ncurses显示的进程监控工具,提供进程相关的实时的上行/下行带宽使用信息。它对检测占用大量带宽的进程很有用. (LCTT 译注:延伸阅读.)
4netstat一个显示许多TCP/UDP的网络堆栈的统计信息的工具。诸如打开的TCP/UDP连接书、网络接口发送/接收、路由表、协议/套接字的统计信息和属性. 当您诊断与网络堆栈相关的性能、资源使用时它很有用
5speedometer一个可视化某个接口发送/接收的带宽使用的历史趋势,并且基于ncurses的条状图进行显示的终端工具
6sysdig一个可以通过统一的界面对各个Linux子系统进行系统级综合性调试的工具。它的网络监控模块可以监控在线或离线、许多进程/主机相关的网络统计数据,例如带宽、连接/请求数等. (LCTT 译注:延伸阅读.)
7tcptrack一个TCP连接监控工具,可以显示活动的TCP连接,包括源/目的IP地址/端口、TCP状态、带宽使用等.
8vnStat一个存储并显示每个接口的历史接收/发送带宽视图(例如,当前、每日、每月)的流量监控器。作为一个后台守护进程,它收集并存储统计数据,包括接口带宽使用率和传输字节总数. (LCTT 译注:延伸阅读.)
9nloadnload默认分为上下两块, 上半部分是 : Incoming也就是进入网卡的流量, 下半部分是 : Outgoing,也就是从这块网卡出去的流量, 每部分都有当前流量(Curr), 平均流量(Avg), 最小流量(Min), 最大流量(Max)

3 主动网络监控器


不同于前面提到的被动的监听工具,这个类别的工具们在监听时会主动的“注入”探测内容到网络中,并且会收集相应的反应。监听目标包括路由路径、可供使用的带宽、丢包率、延时、抖动(jitter)、系统设置或者缺陷等。

编号工具描述
1dnsyo一个DNS检测工具, 能够管理跨越多达1500个不同网络的开放解析器的DNS查询. 它在您检查DNS传播或排查DNS设置的时候很有用
2iperf一个TCP/UDP带宽测量工具,能够测量两个端点间最大可用带宽。它通过在两个主机间单向或双向的输出TCP/UDP探测流量来测量可用的带宽. 它在监测网络容量、调谐网络协议栈参数时很有用. 一个叫做netperf的变种拥有更多的功能及更好的统计数据.
3netcat/socat通用的网络调试工具,可以对TCP/UDP套接字进行读、写或监听。 它通常和其他的程序或脚本结合起来在后端对网络传输或端口进行监听. (LCTT 译注:延伸阅读.)
4nmap一个命令行的端口扫描和网络发现工具。它依赖于若干基于TCP/UDP的扫描技术来查找开放的端口、活动的主机或者在本地网络存在的操作系统。它在你审查本地主机漏洞或者建立维护所用的主机映射时很有用. zmap是一个类似的替代品,是一个用于互联网范围的扫描工具. (LCTT 译注:延伸阅读.)
5ping一个常用的网络测试工具。通过交换ICMP的echo和reply报文来实现其功能。它在测量路由的RTT、丢包率以及检测远端系统防火墙规则时很有用。ping的变种有更漂亮的界面(例如,noping)、多协议支持(例如,hping)或者并行探测能力(例如,fping). (LCTT 译注:延伸阅读.)
6sprobe一个启发式推断本地主机和任意远端IP地址之间的网络带宽瓶颈的命令行工具. 它使用TCP三次握手机制来评估带宽的瓶颈。它在检测大范围网络性能和路由相关的问题时很有用.
7traceroute一个能发现从本地到远端主机的第三层路由/转发路径的网络发现工具. 它发送限制了TTL的探测报文,收集中间路由的ICMP反馈信息. 它在排查低速网络连接或者路由相关的问题时很有用. traceroute的变种有更好的RTT统计功能(例如,mtr).

4 应用日志解析器


在这个类别下的网络监测器把特定的服务器应用程序作为目标(例如,web服务器或者数据库服务器). 由服务器程序产生或消耗的网络流量通过它的日志被分析和监测。不像前面提到的网络层的监控器,这个类别的工具能够在应用层面分析和监控网络流量.

编号工具描述
1GoAccess一个针对Apache和Nginx服务器流量的交互式查看器。基于对获取到的日志的分析,它能展示包括日访问量、最多请求、客户端操作系统、客户端位置、客户端浏览器等在内的多个实时的统计信息,并以滚动方式显示
2mtop一个面向MySQL/MariaDB服务器的命令行监控器,它可以将成本最大的查询和当前数据库服务器负载以可视化的方式显示出来。它在您优化MySQL服务器性能、调谐服务器参数时很有用.
3ngxtop一个面向Nginx和Apache服务器的流量监测工具,能够以类似top指令的方式可视化的显示Web服务器的流量. 它解析web服务器的查询日志文件并收集某个目的地或请求的流量统计信息

5 图形界面工具


编号工具描述
1MonitMonit 是一个Linux/UNIX系统上开源的进程、文件、目录和文件系统监控和管理工具,可自动维护和修复一些错误的情况.
2GangliaGanglia是一个跨平台可扩展的,高 性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据存储和可 视化。它利用精心设计的数据结构和算法实现每节点间并发非常低的。它已移植到广泛的操作系统和处理器架构上,目前在世界各地成千上万的集群正在使用。它已 被用来连结大学校园和世界各地,可以处理2000节点的规模.
3MuninMunin 是一个非常好用安装和设置方便的监测软件
4CactiCacti在英文中的意思是仙人掌的意思,Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结 构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善.
5NagiosNagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等, Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等.
6zabbixzabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.
7ObserviumObservium是一个可自动发现网络中的思科设备和 Linux系统的网络监控工具,而是包括了主要的网络硬件和操作系统的广泛支持。 Observium发展出来的一种轻松缺乏使用NMSes。其目的是提供一个更加通航接口的健康和你的网络性能。它的设计目标包括收集尽可能就设备多的历 史资料,是完全与很少或无需人工干预的自动发现,并有一个非常直观的界面.
8ZenossZenoss Core是开源企业级IT管理软件-是智能监控软件,他允许IT管理员依靠单一的WEB控制台来监控网络架构的状态和健康度。Zenoss Core同时也是开源的网络与系统管理软件.
9Collectdcollectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。比如以RRD 文件形式
当系统运行和存储信息的时候,Collectd会周期性统计系统的相关统计信息。那些信息可以用来找到当前系统性能瓶颈. (如作为性能分析 performance analysis)和预测系统未来的load(如能力部署capacity planning).如果你需要美观的图形来显示您的数据,并且已经厌烦了内部解决方案,恭喜您,你找到了正确的地方.
10ArgusArgus是一个网络连接监控器,可以利用它来定制监控网络中符合某种条件的计算机,例如网络空闲、断开等.

相关推荐