常用开源监控系统分析推荐(必备知识)|附优质监控书籍资源

摘要:在互联网信息爆炸式快速发展的今天,各类复杂多样的平台系统相继涌出。如何选择最佳的监控产品以更好地维护这些平台和系统是每个 IT 人员都需面临的难题。本文将从开源监控产品的起源和发展,详细解析各个时代热门监控产品的优势和劣势,并结合各个监控产品的使用场景,帮你选择出最适合自己的开源监控产品。因篇幅和时间原因,下面介绍的资料和理解可能和实际情况有所偏差,欢迎大家留言或者加入微信群批评指正。
作者:Ethan Chen 云智慧解决方案架构师,拥有丰富的运维理论及实战经验。致力于将客户需求有效地转化为公司产品场景,让客户更有效率地理解公司产品并为其提供优质的技术支撑。
开源监控软件的前世今生
如下面谷歌趋势图所示(因有些单词有二义性,具体数值可忽略,只看趋势),与其他开源监控产品相比,2004 年的 Nagios 仍处在较高位置,但由于 Nagios 没有紧跟容器脚步、且配置复杂等缺点导致热度直线式下降。反观 Zabbix,从 2004 年至今,由于其监控的全面性,使得其热度一直处于平稳上升阶段。此外,基于 RRD 存储开发的 Ganglia 与 Cacti 由于产品自身的一些缺点,热度也在逐渐下降。下文我们将详细介绍各个产品的具体情况。

古代(2000-2010)
Zabbix(2004)
Zabbix 于 1998 年开发,2004 年正式 Release。较于其他开源监控产品,Zabbix 拥有强大的指标数据存储功能、画图功能,并且真正地做到了 All in One 全面监控,解决了运维人力和时间成本上的问题。
基于以上功能优点,以及大量完善的教程文档,Zabbix 在国内迅速传播发展。现如今,Zabbix 已经进入了 5.X 时代,前端界面的优化、ES 及 TimescaleDB 等时序数据库的支持,使得 Zabbix 又步入了一个的新的时代。

优势
丰富的插件。Zabbix 拥有丰富的 MiB 库资源以及模版等 850 多个插件;
易用性、依赖少。基于 PHP 与 MySQL 搭建,可用性比较强;
可进行一定颗粒度的权限控制;
文档完善。Zabbix 本身定位为企业级分布式监控系统,故拥有完善的文档,活跃的官方社区,且本身也更新得比较频繁,开发比较积极;
国内市场有相关的商业支持。
劣势
MySQL 数据量问题。当 MySQL 数据量比较大时,存储性能容易出现问题;
可视化问题。自身可视化灵活性较差,需用 Grafana 等进行弥补;
功能使用率低,80%的用户使用的仍为监控、看图、告警等基础功能,大部分高级功能未能被使用。
使用场景分析
监控基础设施。主机、网络设备监控等;
中小规模监控;
对于大型场景的监控来说仍需注意数据问题。
Nagios(2002)
Nagios 是一个主要用于监控系统运行状态和网络信息的监控系统。Nagios 能监控所指定的本地或远程主机以及服务,同时提供异常通知等功能。
Nagios 拥有 4000 多个插件,且在很早之前就开始拥有自己的官方插件社区。这里面包括很多应用级别的监控插件。此外,Nagios 的通知虽然简单但能覆盖所有场景,以及本身拥有强大的监控任务调度的能力。

优势
功能简单易用,主要的功能是主动检测。
劣势
功能过于单一,只能通过主动检测告知结果是否匹配,被动检测功能原生功能较弱;
配置复杂,配置修改主机、报警、阈值等时,在原生 Nagios 中只能通过修改配置文件来实现,操作较为复杂。
使用场景
小场景简单监控。对于一些网站、端口等可进行简单监控;
大型场景需要各种花式 Hack,需要借助很多第三方的插件进行效率的提升和分布式的扩展。
Centreon(2005)
Centreon 是一款开源的软件,主要用于对 Nagios 的一些功能增强。可通过页面管理 Nagios,通过第三方插件实现对网络,操作系统,应用程序的监控。

优势
界面友好
维护方便
统一管理
性能数据可追溯
劣势
修改配置需要重启或者重载 Nagios 主进程
MySQL 依然存在数据问题
文档资料较少
使用场景分析
适用于百台规模的中等监控
仍需要解决原生 Nagios 的一些弊端
Check_MK
Check_MK 是一款通用的 Nagios/Icinga 增强工具集。其插件有着相当成熟的检测机制和对硬件服务器的检测手段。非常适合对硬件服务器进行“体检”。

优势
界面友好
维护方便
统一管理
性能数据可追溯
劣势
增加变更需要重启 Nagios 主进程。
因后端存储使用 RRD,导致分布式扩展较为困难。
文档资料较少。
使用场景分析
适用于百台到千台以内中等规模监控
需要解决 Nagios 的一些弊端
Cacti(2001)
Cacti 是用 PHP 语言实现的一个监控软件,它的主要功能是用 SNMP 服务获取数据,然后用 RRD 储存和更新数据,当用户需要查看数据的时候用 RRD 生成图表呈现给用户。

优势
网络设备支持好
有权限控制
有汉化版
早期在 IDC 覆盖广
劣势
SNMP 依赖只适合特性场景
资料老旧
使用场景分析
简单的 IDC 托管
网络运维
Ganglia(2001)
Ganglia 是 UC Berkeley 发起的一个开源集群监视项目,设计用于测量数以千计的节点。主要是用来监控系统性能,如:CPU 、内存、硬盘利用率, I/O 负载、网络流量情况等。

优势
数据集中,部署分布式
适合大规模部署
对集群热点观测性支持较好
劣势
无告警
集群内 UDP 广播问题多
使用场景分析
大数据应用
集群较多,关注整体资源使用率
近代(2010-2015)
监控宝( 2010)
监控宝是云智慧推出的新一代用户体验监控工具,从全球节点主动模拟真实用户访问,提供网站性能监控、API 监控等服务,持续监测应用程序、网站、网络和数字化服务的可用性和性能,提前诊断,实时告警,帮助客户提升网络应用效能。

优势
全球分布式监测网络。200+ 分布式监测节点覆盖全球 112 个城市以及主要运营商网络,网络规模持续扩大中。
主动监测。监测节点按照预设规则模拟真实用户发起主动监测,实时掌控网络性能,聚焦用户体验。
立体化覆盖。HTTP/HTTPS/TCP/UDP/TR/DNS/PING 等多种协议类型,全面问诊网络、业务健康。
面向业务。通过包含多步请求的事物监控实现业务流程的监测,保障业务的稳定性和可用性。
持续监控。24/7 小时全天候监测网站和网络性能,多渠道服务支持,减少可能发生的中断。
快照+MTR。先进的问题诊断与分析机制,问题发生之前和问题恢复之后的数据尽在掌握,快速定位故障。
灵活告警。短信、邮件、微信、语音、API 等多种告警方式,确保告警能够被即时送达。
专业的分析报告。提供综合排名、竞品分析、同比/环比、日/周报等多维度的数据报告,满足专业化定制需求。
使用场景分析
网络链路质量监控与评估。通过采集不同地区、不同运营商链路的时延、丢包、网络抖动情况,从时间、地域、运营商等维度综合分析网络链路质量及可用率,快速发现和准确定位网络问题,便于及时进行链路调整,保障全网用户的体验。
CDN 监控。通过海量的分布式节点模仿真实用户访问,监控 CDN 性能,评估 CDN 的加速情况,确保最佳的用户体验,可用于 CDN 选型评估、CDN 加速效果评估、CDN 故障排查与定位等使用场景。
API 接口监测。通过监控 API 接口的响应时间、可用性和正确性并及时告警来保证 API 服务的可靠性,可用于 API 接口性能优化、第三方 API 接口监控等使用场景。
Graphite(2008)
Graphite 是一个开源实时的、显示时间序列度量数据的图形系统,通过其后端接收度量数据,然后以实时方式查询、转换、组合这些度量数据。

优势
指标点分概念引入
Grafana 支持较早的协议之一
统计函数支持(140+)
劣势
指标无 Label 支持
使用场景分析
在做好数据归并时可用于大规模场景
现代(2015-2021)
Prometheus(2016 )
Prometheus 是由 SoundCloud 开源的监控告警解决方案。存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合。

优势
时序型存储、查询效率高。
支持集群模式,扩展性强。
CNCF 项目,社区活跃。
劣势
一些 Exporter 采集的指标众多,需进行适当裁剪。
自定义采集脚本需要脚本开发能力(Golang、Python),相比 Shell 脚本来说学习成本更高一些。
使用场景分析
对于云计算、容器化场景更适合
夜莺(2018)
夜莺是一套分布式高可用的运维监控系统,前身是国内大名鼎鼎的 open-falcon。基于一些国内特殊的运维场景和习惯,在运维圈中有着不俗的场景理解和用户体验。

优势
社区活跃,有 open-falcon 群众基础。
产品设计灵活,人性化。
v4 版本自带小型 CMDB 和自动化。
v5 版本全面拥抱开源体系(Prometheus Telegraf)。
劣势
v5 刚发布,仍然需要一定的时间积累
后端存储的选型多样,需要根据场景进行选择
缺少日志类和 Tracing 类的监控场景
使用场景分析
所有指标类的监控
未来(2022-)
云原生的出现导致在 k8s 环境下的可观测性难度极具增加,因此出现了 eBPF 等新技术,但无奈市场上大部分的客户 Linux 内核还不足以支持相关的技术。但可以看到的是 DataDog skywalking 云杉等目前都在向 eBPF 进行布局。
除了增强程序自身的可观测性之外,可以预见在不久的将来,随着 Linux 内核的不断的完善以及客户环境逐渐的成熟。在运维角度可以发力的可观测性的选择一定会越来越多。也希望各位运维的同仁们时刻关注我们的公众号,关注前沿的可观测性的信息。最后给大家介绍一些相关书籍:
优质监控书籍推荐

【Nagios 系统监控实践(原书第 2 版)】https://book.douban.com/subject/25843798/
【Cacti 实战】https://book.douban.com/subject/26422185/
【Ganglia 系统监控】https://book.douban.com/subject/25706442/
【Graphite 监控】https://book.douban.com/subject/35217612/
【监控的艺术:云原生时代的监控框架】https://book.douban.com/subject/35115699/
【监控运维实践:原则与策略】https://book.douban.com/subject/35258085/
【Prometheus 云原生监控: 运维与开发实战】https://book.douban.com/subject/35239877/
更多福利
近日,云智慧开源了 集轻量级、聚合型、智能运维为一体的综合运维管理平台 OMP(Operation Management Platform) ,具备 纳管、部署、监控、巡检、自愈、备份、恢复 等功能,可为用户提供便捷的运维能力和业务管理,在提高运维人员等工作效率的同时,极大提升了业务的连续性和安全性。点击下方地址链接,欢迎大家给 OMP 点赞送 star,了解更多相关内容~
GitHub 地址: https://github.com/CloudWise-OpenSource/OMP
Gitee 地址:https://gitee.com/CloudWise/OMP
评论