2019-09-27
监控系统是运维人员的眼睛,监控是为了发现潜在问题并能及时告警,是故障诊断和分析的基础平台。在发生事故之前就能预警,最大限度降低系统故障率,是监控系统的终极目标和价值体现。本文旨在帮助大家详细了解监控系统,并提供三大开源的监控解决方案。
监控系统
监控粒度、监控指标完整性、监控实时性是评价监控系统的三要素。从分层体系可以把监控系统分为三个层次:
硬件层:硬件是指服务器物理机本身,或者网络设备、安全设备等等,这类监控一般使用厂商提供的接口来实现,比如IPMI(智能平台管理接口)、SNMP,物理设备出厂一般会提供此接口。一般情况下,通过IPMI可以直接获取设备的运行状态信息,包括服务器各部分的温湿度、硬盘状态、风扇转速等信息。硬件监控的目的是物理设备出现故障时可以第一时间发现并更换配件,在物理机层面保证高可用。
系统层:操作系统,或者称为基础监控,包括设备的CPU、Mem利用率、磁盘空间使用情况、进程的CPU负载、网络吞吐量等操作系统层面的指标,监控这些指标的意义在于保证操作系统的健康运行,并在出现告警后第一时间排除故障,操作系统是应用系统的基础,系统级故障往往很致命,直接关系到应用系统是否能够正常运行,严重的系统级故障甚至无法恢复,我们要在系统出现故障前了解系统的运行状况,时刻保持系统的健康运行。
业务层:业务系统的健康一般能吸引企业最直接的关注,而业务系统出现故障对应用的影响也最直接,对业务系统的监控是理所当然的,业务系统的监控指标并不像硬件、操作系统那样具有普遍性。常规架构的前台-后台,我们一般关注Java内存分配、Nginx活动连接数和进程信息。特殊架构的业务系统需要根据业务人员关注重点来调整监控指标。
三大开源运维监控系统
Cacti平台
Cacti是一套基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。
优点:
1. 适合监控系统性能,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用;
2. 支持浏览器方式访问,但不能监控节点硬件技术指标;
3. 适合大型集群环境;
4. 部署方便,不用逐台机器添加配置;
5. 一台服务器能够通过不同的分层管理上万台机器;
6. 可以自定义监控项,监控展示有表格和图像两种,支持手机版。
缺点:
1. 没有内置的消息通知系统;
2. 没有报警机制,出现问题不能够及时报警。
Nagios监控
Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机、路由器等网络设备,以及打印机、复印机等外设。在系统或服务状态异常时发出邮件或短信报警,第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
优点:
1. 自动化运维,出错的服务器、应用和设备会自动重启;
2. 配置灵活,监控项目很多,可以自定义shell脚本,通过分布式监控模式,非常适合大型网络;
3. 自动日志滚动;
4. 支持以冗余方式进行主机监控;
5. 在服务事件和主机事件之间良好的相关性;
6. 命令重新加载配置文件无需打扰Nagios的运行;
7. 报警设置多样性。
缺点:
1. 很弱的事件控制台;
2. 对性能、流量等指标的处理不给力;
3. 看不到历史数据,只能看到报警事件,很难追查故障原因;
4. 配置复杂,初学者投入的时间、精力比较大;
5. 插件的易用性不好。
Zabbix企业级监控平台
Zabbix是一款开源的企业级监控平台,基于CS 架构。可用于监视各种网络服务、服务器和网络设备等状态。它具有高可用性,分布式监控手段,对分布于不同网段的设备提供了proxy方式来监控,对于部署的友好程度显而易见;支持虚拟人工神经网络平台和监控方法,真正的开源,没有附加的组件,基于Zabbix目前已经有一些商业公司提供自有的监控方案来满足企业的需求,在商业生态方面Zabbix的无疑是做的最好的。
优点:
1. 支持多平台的企业级分布式开源监控软件;
2. 安装部署简单,管理方便;
3. 功能强大、监控灵活,可实现复杂多条件告警;
4. 多种数据采集插件,灵活集成;
5. 自带画图功能,得到的数据可以绘成图形;
6. 同时支持调用脚本,很方便;
7. 提供多种API接口,定制化最高的监控软件;
8. 出现问题时可自动远程执行命令(需对agent设置执行权限)。
缺点:
1. 项目批量修改不方便;
2. 社区虽然成熟,但是中文资料相对较少,服务支持有限;
3. 入门容易,能实现基础的监控,但是深层次需求需要非常熟悉Zabbix并进行大量的二次定制开发,难度较大;
4. 系统级别报警设置相对比较多,如果不筛选的话报警邮件会很多;并且自定义的项目报警需要自己设置,过程比较繁琐;
5. 缺少数据汇总功能,如无法查看一组服务器平均值,需进行二次开发;
6. 数据报表需要特殊二次开发定义。
总结
Cacti在一些需要展示的场景中更适合,因为Cacti真的可以绘制出很理想的图形,但在告警方面比较薄弱。
Nagios有完善的报警机制,能够对数据状态进行实时转换,并完成报警。但Nagios仅关注状态转换,并完成报警。受监控设备数影响,如果监控的设备过多,会导致Nagios不能够很好的监控,最多能够监控100-300台设备之间。适合中小型企业使用。
Zabbix结合了Cacti和Nagios的优点,完善的告警机制和图形化的展示,可采用分布式的监控手段,对更多的设备进行监控。Zabbix是企业级的监控平台,配置稍微复杂,需要专业人员部署。
据统计数据,Zabbix的市场份额明显比Nagios和Cacti的高出很多,这也与其学习曲线有关,如果不需要监控很复杂的指标,Zabbix是自带这些功能的,而且全web操作,对技术人员要求很低,但是如果要实现比较复杂的监控指标,学习成本就会大大增加,初学者根据自身情况,并结合公司业务选择一款适合自己的才是最好的。
没有最好的工具,只有用的最好的人。
文章部分引用于https://blog.csdn.net/varyall/article/details/82722911
上一篇 :美国银行再爆用户信息泄露事件
下一篇 :日志分析与安全防护