最近开始接触Linux运维,安装了Nagios,zabbix和ganglia三种监控工具并使用了一周后总结出一些优缺点,这里贴出来以供参考
Nagios是一款开源的企业级监控系统,能够实现对系统CPU、磁盘、网络等方面参数的基本系统监控,以及SMTP,POP3,HTTP,NNTP等各种基本的服务类型。另外通过安装插件和编写监控脚本,用户可以实现应用监控,并针对大量的监控主机和多个对象部署层次化监控架构。
Nagios本身不提供监控功能,所有的监控功能都要考插件实现,需要在被监控机上安装agent插件
Nagios的功能
添加设备 |
通过修改监控节点的配置文件 |
自动发现设备 |
不能,需要添加新插件 |
发现接口 |
通过修改配置文件 |
数据库 |
不支持SQL数据库 |
服务端口 |
通过插件支持TCP和UDP协议 |
发现应用 |
通过ssh 或插件 |
是否支持NRPE |
支持 |
SNMP协议版本 |
支持V1,2,3 |
Nagios的优缺点
优点 |
缺点 |
稳定的系统管理代码 |
没有自动发现的功能,需要修改配置文件 |
可以监控很多协议,邮件和短信通知 |
只能在终端进行配置,不方便扩展,可读性比较差 |
使用命令加载配置文件,不用打扰Nagios的运行 |
没有简单的方法接收解释SNMP陷阱 |
良好的文档库 |
没有MIB编译器或浏览器 |
出错的服务器,应用和设置会自动重启,自动日志滚动 |
时间控制台功能弱,插件易用性差 |
配置灵活,可以自定义shell脚本,通过分布式监控模式 |
对性能和流量等指标的处理比较差 |
没有历史数据,只能实时报警,出错后难以追查故障原因 |
Nagios的界面比较清爽,功能主要靠插件实现,所以安装比较容易,可以根据自己的需求定制插件的安装,但在被监听端要进行配置,而且出错后没有历史记录可以查看很难找到出错原因,所以不推荐使用
Zabbix的主要特点:
优点:
l 安装与配置简单,学习成本低- 支持多语言(包括中文)
l 自动发现服务器与网络设备
l 分布式监视以及WEB集中管理功能
l 可以无agent监视
l 用户安全认证和柔软的授权方式
l 通过WEB界面设置或查看监视结果
l smtp等报警通知功能
l 支持多平台的企业级分布式开源监控软件
l 安装部署简单,多种数据采集插件灵活集成
l 功能强大,可实现复杂多条件告警,
l 自带画图功能,得到的数据可以绘成图形
l 提供多种API接口,支持调用脚本
l 出现问题时可自动远程执行命令(需对agent设置执行权限)
缺点:
l 项目批量修改不方便
l 社区虽然成熟,但是中文资料相对较少,服务支持有限;
l 入门容易,能实现基础的监控,但是深层次需求需要非常熟悉Zabbix并进行大量的二次定制开发,难度较大;
l 系统级别报警设置相对比较多,如果不筛选的话报警邮件会很多;并且自定义的项目报警需要自己设置,过程比较繁琐;
l 缺少数据汇总功能,如无法查看一组服务器平均值,需进行二次开发;
l 数据报表需要特殊二次开发定义;
Ganglia
简介
ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量和监控数以千计的节点。
主要是用来监控系统性能,如:cpu 、内存、硬盘使用率, I/O负载、网络流量情况等。
ganglia采用多层次的结构模式,使得 ganglia 可以实现良好的扩展。
gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。
ganglia 监控套件主要包括三个主要部分:
— gmond
— gmetad
— web接口,通常被称为ganglia-web。
(1) gmond :运行在每一个需要监测的节点上,收集监测统计,发送和接收在同一个组播或单播通道上的统计信息。
如果作为发送者(mute=no),会收集基本指标,比如系统负载(load_one),CPU利用率。
如果作为接收者(deaf=no),会聚合所有从别的主机上发来的指标,并把它们都保存在内存缓冲区中。
(2)gmetad:运行在server端,它会定期检查gmond,从那里拉取数据,并将他们的指标存储在RRD存储引擎中。也可以查询多个集群并聚合指标。
(3) ganglia-web :一般安装在有gmetad运行的机器上,以便读取RRD文件。
浏览web页面时调用PHP脚本,从RRDTool数据库中抓取信息,动态的生成各类性能监控图表。
用户群:适用于大型服务器集群用户。
(1)优点:
1. 适合监控系统性能,通过曲线很容易见到每个节点的工作状态
2. 可以自定义监控项,监控展示有表格和图像两种,支持手机版
3. 部署方便,通过不同的分层管理上万台机器,无需逐个添加配置,有利于后期的大规模扩张。
4. Ganglia的强大在于:ganglia服务端能够通过一台客户端收集到同一个网段的所有客户端的数据,ganglia集群服务端能够通过一台服务端收集到它下属的所有客户端数据。这个体系设计表示一台服务器能够通过不同的分层能够管理上万台机器。这个功能是其他mrtg,nagios,cacti所不能比拟。
5.Ganglia相比zabbix的优势在于客户端收集agent(gmond)所带来的系统开销非常低,不会影响相关服务的性能。
6. Ganglia的扩展插件非常好写,无论用何种语言(shell,php,pyton)都可以写,只要把最终结果传给gmetric就可以,这样在web上就可以看到对应的数据。
(2)缺点:
1. 没有内置的消息通知系统
2. 没有报警机制,出现问题不能够及时报警