How to set up top web-based network traffic monitoring system on Linux:Monitorix nagios cacti zabbix MRTG Nfsen ntopng Zenoss ntop 开源监控工具简介、分析比较、区别和优缺点

1. 主要对流量及主机在线状态监控软件,如最初的MRTG,PRGT,CACTI,Hobbit,
2. 能对服务器的关键服务及进程进行监控的软件,如Big Brother,Nagios,

Monitorix is an open source, free and most powerful lightweight tool designed to monitor system and network resources in Linux. It regularly collects system and network data and display the information in graphs using its own web interface. Monitorix allows to monitor overall system performance and also help in detecting bottlenecks, failures, unwanted long response times and other abnormal activities.

It is written in Perl language and licensed under the terms of GNU (General Public License) as published by the FSP (Free Software Foundation). It uses RRDtool to generate graphs and display them using web interface.

This tool is specifically created for monitoring Red Hat, CentOS, Fedora based Linux systems, but today it runs on many different flavors of GNU/Linux distributions and even it runs on UNIX systems like OpenBSD, NetBSD and FreeBSD.

The development of Monitorix is currently in active state and adding new features, new graphs, new updates and fixing bugs to offer a great tool for Linux system/network administration.

Monitorix Features

  1. System load average, active processes, per-processor kernel usage, global kernel usage and memory allocation.
  2. Monitors Disk drive temperatures and health.
  3. Filesystem usage and I/O activity of filesystems.
  4. Network traffic usage up to 10 network devices.
  5. System services including SSH, FTP, Vsftpd, ProFTP, SMTP, POP3, IMAP, POP3, VirusMail and Spam.
  6. MTA Mail statistics including input and output connections.
  7. Network port traffic including TCP, UDP, etc.
  8. FTP statistics with log file formats of FTP servers.
  9. Apache statistics of local or remote servers.
  10. MySQL statistics of local or remote servers.
  11. Squid Proxy Web Cache statistics.
  12. Fail2ban statistics.
  13. Monitor remote servers (Multihost).
  14. Ability to view statistics in graphs or in plain text tables per day, week, month or year.
  15. Ability to zoom graphs for better view.
  16. Ability to define the number of graphs per row.
  17. Built-in HTTP server.

For a full list of new features and updates, please check out the official feature page.

Nagios

This is one of the most popular web based Linux monitoring systems nowadays, actually it’s industry standard for IT infrastructure monitoring. Licensed under GPL Nagios is available for everybody free of charge and allows to monitor availability and response time of network services, usage of system resources like CPU load, RAM allocation etc., number of logged in users and many-many more. It doesn’t makes sense to list here everything that can be monitored by Nagios but its nature implies that main Nagios instance (server) collects information from either local system or Nagios clients (agents). It means you can install client software on number of Linux, BSD, Windows hosts or Cisco devices, point them to Nagios server and see states of their services or processes in one place: Nagios web based monitoring tool (see the screenshot below).

Project’s homepage: http://www.nagios.org/
Documentation and Howtos: Official Documentation, How To Monitor Remote Linux Host using Nagios 3.0, Centos Nagios Howto, Ubuntu Nagios Howto, FreeBSD Nagios Howto.

Cacti

Cacti is another web based monitoring system written in PHP and licensed under GPL. Unlike Nagios describe above Cacti was designed mainly fo the graphs — in brief, Cacti polls various services and then graphs resulting data. It uses RRDTool to build graphs so if you can some graphs in .rrd files you can easily attach them to Cacti and have everything in one place.

So you can see CPU load graphs, RAM usage, round trip time stats, bandwidth utilization and much more information collected from various hosts. As well as Nagios Cacti supports SNMP that makes it possible to monitor almost any device in your network: Linux hosts, *BSD hosts, Windows hosts, Cisco devices, Juniper equipment, voip phones, routers, switches whatever.

Meantime by default Cacti doesn’t provides alerts so you should install third party plugin (thold or others) for that or use more flexible solutions supporting alerts (like Nagios or Zabbix).

Project’s homepage: http://www.cacti.net/
Documentation and Howtos: Official Documentation, Centos/RedHat Cacti Howto, Debian SNMP+Cacti Howto, Ubuntu Cacti Howto.

Zabbix

Zabbix is enterprise class Linux monitoring system with impressive list of capabilities available out of the box. It is licensed under GPL and is written in PHP. In brief Zabbix can do the same tasks as Nagios and Cacti by default: Zabbix easily graphs monitored data and sends alerts to user in case of any problem. Using Zabbix you can create maps of the hosts, group hosts by various categories and so on.

I personally like Zabbix’s capability to track changes made into specified files, for example if /etc/password is changed at one of your 100 servers and you monitor it with Zabbix then you’ll get corresponding report about this authorized (or not!?) change.

Zabbix can collect data from remote hosts where Zabbix agent/client is running (just like Nagios). Zabbix shows various kinds of graphs including network statistics, CPU load and so on (just like Cacti). Probably Zabbix may seem rather complicated for beginners but I’d recommend to take some time and get familiar with this monitoring system.

Project’s homepage: http://www.zabbix.com/
Documentation and Howtos: Official Documentation, Ubuntu Zabbix Howto, Debian Zabbix Howto, Monitor Radius with Zabbix.

MRTG

MRTG is yet another open source monitoring tool that collects data at local and/or remote host by means of SNMP protocol. But MRTG is much more simple than Cacti, Nagios or Zabbix so it may be a good choice for small projects.

One of the most common applications of MRTG is monitoring of network interfaces, CPU, memory usage and network interfaces statistics. One of MRTG’s advantages is that it it extremely easy to deploy. Btw, MRTG was created by author of RRDTool Obi Oetiker.

Project’s homepage: http://oss.oetiker.ch/mrtg/
Documentation and Howtos: Official Documentation, Linux MRTG Howto, Advanced MRTG for Linux, Centos MRTG Howto.

Nfsen

Nfsen is open source Netflow collector and analyzer available under open source license. It differs from monitoring tools described here — Nfsen collects only network usage data and shows the interactive graphs based on that data.

I found Nfsen as the only workable open source Netwflow analyzer available for Linux. Using Nfsen you can see the graphs showing network traffic on various hosts or networks, configure alerts (for example if bandwidth usage is lower or higher than average) and what it more important to digg into collected traffic.

我比较看好zabbix这款监控软件,理由如下:
1.分布式监控,天生具有的功能,适合于构建分布式监控系统,具有node,proxy2种分布式模式
2.自动化功能,自动发现,自动注册主机,自动添加模板,自动添加分组,是天生的自动化运维利器的首选,当然于自动化运维工具搭配,puppet+zabbix,或者saltstack+zabbix,那是如鱼得水。
3.自定义监控比较方便,自定义监控项非常简单,支持变量,支持low level discovery,可以参考我写的文档自动化运维之监控篇—利用zabbix自动发现功能实现批量web url监控
4.触发器,也就是报警条件有多重判断机制,当然,这个需要你去研究一下,这也是zabbix的精华之处,
5.支持多种监控方式,agentd,snmp,ipmi,jmx,逻辑图如下
6.提供api功能,二次开发方便,你可以选用zabbix来进行二次深度开发,结合cmdb资产管理系统,业务管理系统,从而使你的自动化运维系统达到新的高度。
7.当然zabbix还有很多其他功能,这里不一一介绍了。
很多人说zabbix不简单,其实是zabbix的设计理念有些超前,当你都研究到一定程度,你不得不佩服zabbix的团队是非常强悍的,这种工作机制也是相对先进的。
国内的大厂,好像都有一套自己的监控系统,自己设计,自己开发,其功能也能和zabbix一样,但是自己开发的监控软件,更顺手吧,能适合于自己的需求,但是一般企业用,特别是互联网公司,我是极力推荐zabbix
我最近在研究zabbix,和生产环境中的nagios+cacti相比较。

如@wenx所说,nagios最大的亮点是轻量灵活,且报警机制很强,如果你只是需要监控服务器/服务是否在运行,nagios足矣。

但是如果牵涉到画图方面,我通过这段时间的亲身体会,感觉nagios+cacti的结合是不如zabbix的all in one方式的。

nagios和cacti的结合需要NPC插件,牵涉到npc在cacti中的安装、配置、图表模板的对接,还要牵涉到多个数据库的创建、建表,ndo2db组件的调试(这东西的默认sql居然有错误,直接导入会出错:http://idaemon.net/post-234.html),总之非常繁琐,整个环境搭起来可能需要耗费不少时间。

而zabbix把报警、画图全包办了,自己就能搞定上面的一堆东西。另外zabbix的agentd在windows server下运行良好,甚至32/64位均有,不像nagios只能用一个半死不活的插件。

综上,zabbix和nagios不存在谁好谁坏的问题,只存在你的需求不同需要选择哪个更好的问题:
如果只为了报警,nagios吧,足够满足需求;
如果需要图表,zabbix吧,别用cacti了……

没有更好,只有更适合吧。
我一直在用 Nagios,Zabbix 很强大,很全面,但相对来说,Nagios 要更轻量、灵活,特别是它的插件机制,你可以用自己熟悉的语言实现几乎任何自己想要实现的监控。
Nagios 在图表方面相对较弱,如果只是希望实现监控及报警,Nagios 是个不错的选择,至于图表,你可以交给 cacti,或者直接用 rrdtool 实现。
nagios 做服务监控应该能满足大部分的需求了,并且其配置文件是文本格式的,可以程序生成,也可以纳入配置管理。

zabbix以及cacti等我一般做性能统计,但这些基于WEB界面的系统最不方便的地方是配置需要在界面操作,如果要由程序生成就不太合适了。不想做苦逼的运维,就不要用了。研究其功能后,自己来开发完全可行。

二者的设计思路都不同,Nagios是需要靠各种插件组合才好用的,而Zabbix是商业软件开源的,all in one的方式。个人觉得企业用Zabbix比较合适,个人学习专研包括二次开发Nagios可能更好。

Zabbix,Nagios和Zenoss分析比较

1.后端,何种实现,用了哪些技术,整体框架是怎么样的,理解的难易度,安装和配置,使用的难易度,数据存储技术

2.前端,同样.

目前为止,我主要研究了zabbix,nagios和zenoss三套系统.下面我一条条来分析.

.比较Server Configuration and Service Configuration

• zabbix

zabbix的服务器运行的配置是基于几个以cfg结尾的text格式的文件来进行的,在初始的实验性配置时,使用源码包中的默认配置文件就可以启动服务了.zabbix的服务中用到的配置数据则是用数据库后端来存储,我使用的是mysql的数据库,这个在实际生产环境中,就要考虑到备份的问题和可能的数据库的性能问题了.

•nagios

nagios的服务器运行配置,在使用的也是类似与zabbix一样的方式,不过他的配置文件就要多得多.特别是nagios的服务所用到的配置文件也是基于text格式的,其中用其特定的格式来进行定义的.这里就涉及到了对于这种配置语法和语言的学习问题, 不是很难,当然也不是那么容易.

•zenoss

zenoss由于是一体化的安装,所以我并没有看到太多,但我看到了它使用了内嵌的mysql服务器,所以我想它的数据应该是主要储存在了这个里面.

3.比较Front End

•zabbix

现在的Network Monitoring的软件,如果没有一个好的前端,来让SA或其他相关人员来查看,管理和使用的话,估计前途也不大.zabbix的web application是使用php来写的,他是构架于apache之上的,从我的观察和研究感觉,zabbix的web application不但是一个查看平台,它还是zabbix的service里的具体应用的配置前途,所以zabbix的web application会显得十分复杂, 在使用时也不是一日之功,有很多需要琢磨.

•nagios

nagios也是使用php来实现其web application的,但是从我的使用观察上看,很明显,nagios的web application的功能要比zabbix的功能要少.也就是这样,使得nagios的界面就相比来收要简单明了,比较容易让初学者接受. 但是nagios的数据获得是不用数据库系统的,它的web application只是一个外部框架,真正的功能实现都是使用CGI的native linux 应用程序. 这点是跟zabbix很不同的.

•zenoss

zenoss没有使用apache作为其web服务器,而是自己内嵌了一个web server来进行web 服务的. zenoss的web前端,相比之下,感觉如果没有一本手册,是很难下手的,也就是说它确实挺复杂的,不过我还使用不深,还需要研究

小公司 就用个 nagiso+cacti 就行了!
zabbix 属于大型分布式监控! 不适合你

虽然我没有实际部署过zabbix但是对于大规模监控的时候cacti还是局限性的。

cacti对于流量监控是没的说的,但是如果机房的数量比较多分布式监控,需要综合分析的时候cacti没法胜任了,所以用哪个比较好还是要看应用环境。

 

MRTG:MRTG是一款早起的使用perl开发的,通过SNMP协议实现管理工作站与设备代理进程间的通讯,以完成对设备的管理和运行状态的监视。MRTG安装配 置简单、 图形界面直观,因为广受当时网络管理人员的喜爱。

MRTG缺点:1、使用文本式的数据库、数据不能重复利用

2、只能按日、周、月、年来查看数据

3、只能画两个DS(一条线和一个块)

4、每次取数据都必须要绘制一次图,浪费系统资源

5、没有管理功能

RRDtool:有鉴于MRTG的缺点,MRTG的作者开发rrdtool来代替MRTG了,该软件是强大的绘图引擎,很多语言都可以调用rrdtool来绘图。

(round robin database):

官方地址: http://oss.oetiker.ch/rrdtool/

一些列由Tobi  Oetiker创建的数据库工具。他也被设计处理时间序列数据像带宽、温度、CPU负载等。这些数据被存储在一些列数据库中,因此系统存储足迹足以持续的留下

优点:1、rrdtool是一个性能优良的数据记录器,同时也是一个功能强大的绘图引擎。

2、 它使用rrd的数据存储格式,使用得数据可以重复使用;

3、在绘图方面,它可以定义任意时间段进行绘图,能绘出多个DS。

缺点:1、虽然提供了强大的数据存储及绘图功能,但rrdtool却没有提供类似于MRTG中集成的数据采集功能;

2、同时,它提供了过多的参数,以至于在命令行界面使用起来极为不便;

3、 此外,rrdtool也没有提供管理功能

cacti(仙人掌): http://www.cacti.net/

1、Cacti就是rrdtool的一个forefront,它内置了快速的获数据取工具、优秀的绘图模板以及许多设计精良的数据获取脚本,从而可以通过结合rrdtool强大的数据抓取、数据存储和绘图功能,轻松实现主机负载、网络流量等信息的走势图的绘制 。

2、cacti是用php语言实现的一个软件,它的运行需要网站服务器(如apache)及PHP环境的支持。同时,cacti还需要Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。

3、rrdtool的对主机负载、网络流量等信息的统计需要通过SNMP协议实现。经过SNMP抓取到的数据存储于由rrdtool生成的 rrd文件中,这些文件通常位于cacti的rra目录中。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的归档文件 (Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。

4、基于PHP、mysql、snmp(UDP:161)、rrdtool开发的一款持续监测的流量监测图形分析工具

cacti工作原理:

Cacti的实例应用

—网络设置

—主机系统

(1)网络接口流量(进与出的带宽)

(2)监控CPU的负载、内存等等

(3)监控磁盘的空间、进程数等等

—cacti常见的监测对象

(1)服务器资源:CPU、内存、磁盘、进程、连接数等

(2)服务器类型:WEB、Mail、FTP、数据库、中间件等

(3)网络接口:流量、转发速度、丢包率

(4)网络设备性能、配置文件(对比与备份)、路由数

(5)安全设备性能、连接数、攻击数

(6)设备运行状态:风扇、电源、温度

(7)机房运行环境:电流、电压、温湿度

nagios简介: 中文支持:田朝阳

Nagios是一款用于系统和网络监控的应用程序并遵循GPL协定。它可以在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息

Nagios最初被设计为在Linux系统之上运行,然而它同样可以在类Unix的系统之上运行 ,并且有 C 语言编译器,程序主题为ANSI C编制。

Nagios更进一步的特征包括:

1、监控网络服务(SMTP、POP3、HTTP、NNTP、PING 等);

2、监控主机资源(处理器负荷、磁盘利用率等);

3、简单地插件设计使得用户可以方便地扩展自己服务的检测方法;

4、并行服务检查机制;

5、具备定义网络分层结构的能力,用”parent”主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;

6、当服务或主机问题产生与解决时将告警发送给联系人(通过 EMail、短信、用户定义方式);

7、具备定义事件句柄功能,它可以在主机或服务的事件发生时获取更多问题定位;

8、自动的日志回滚;

9、可以支持并实现对主机的冗余监控;

10、可选的 WEB 界面用于查看当前的网络状态、通知和故障历史、日志文件等

组成:

Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、 NSClient++和NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器 端工作所必须的组件。而四个ADDON中

(1)NRPE:用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控

(2)NSCA:用来让被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到)

(3)NSClient++:用来监控 Windows主机时安装在Windows主机上的组件

(4)NDOUtils:则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现这些数据的快速检索和处理

这四个ADDON中,NRPE和NSClient++工作于客户端,NDOUtils工作于服务器端,而NSCA则需要同时安装在服务器端和客户端

NTOP简介:

一.    MRTG基于SNMP获取信息,对于端口的流量,MRTG能提供精确统计,但对于三层以上的信息则无从得知了。而这正是NTOP的强项。NTOP能够更加 直观地将网络使用量的情况和每个节点计算机的网络带宽使用详细情况显示出来。NTOP是一种网络嗅探器,嗅探器在协助监测网络数据传输、排除网络故障等方 面有着不可替代的作用。可以通过分析网络流量来确定网络上存在的各种问题,如瓶颈效应或性能下降;也可以用来判断是否有黑客正在攻击网络 系统。如果怀疑网络正在遭受攻击,通过嗅探器截获的数据包可以确定正在攻击系统的是什么类型的数据包,以及它们的源头,从而可以及时地做出响应,或者对网 络进行相应的调整,以保证网络运行的效率和安全。

二.   管理人员通过NTOP还可以很方便地确定出哪些通信量属于某个特定的网络协议、占主要通信量的是哪个主机、 各次通信的目标是哪个主机、数据包发送时间、各主机间数据包传递的间隔时间等。这些信息为网管员判断网络问题及优化网络性能,提供了十分宝贵的信息。

NTOP提供以下一些功能:

① 自动从网络中识别有用的信息;

② 将截获的数据包转换成易于识别的格式;

③ 对网络环境中的通信失败进行分析;

④ 探测网络环境下的通信瓶颈;

⑤ 记录网络通信时间和过程;

⑥ 自动识别客户端正在使用的操作系统;

⑦ 可以在命令行和Web两种方式下运行。

看出来ntop作为监控工具与前两者cacti和nagios的区别,ntop在监控方面,它的角度是从分析网络流量来确定网络上存在的各种问题,说白了就类似个抓包监控工具,只不过通过归纳绘图实现更多的功能

Top Down