监控系统选型,这篇不可不读! (4)

Prometheus(普罗米修斯)是由前google员工2015年正式发布的开源监控系统,采用Go语言开发。它不仅有一个很酷的名字,同时它有Google与k8s的强力支持,开源社区异常火爆。

Prometheus 2016年加入云原生基金会,是继k8s后托管的第二个项目,未来前景被相当看好。它和Open-Falcon最大不同在于:数据采集是基于Pull模式的,而不是Push模式,并且架构非常简单。

先来了解下Prometheus的架构设计:

监控系统选型,这篇不可不读!

Prometheus Server:核心组件,用于收集、存储监控数据。它同时支持静态配置和通过Service Discovery动态发现来管理监控目标,并从监控目标中获取数据。此外,Prometheus Server 也是一个时序数据库,它将监控数据保存在本地磁盘中,并对外提供自定义的 PromQL 语言实现对数据的查询和分析。

Exporter:用来采集数据,作用类似于agent,区别在于Prometheus是基于Pull方式拉取采集数据的,因此,Exporter通过HTTP服务的形式将监控数据按照标准格式暴露给Prometheus Server,社区中已经有大量现成的Exporter可以直接使用,用户也可以使用各种语言的client library自定义实现。

Push gateway:主要用于瞬时任务的场景,防止Prometheus Server来pull数据之前此类Short-lived jobs就已经执行完毕了,因此job可以采用push的方式将监控数据主动汇报给Push gateway缓存起来进行中转。

Alert Manager:当告警产生时,Prometheus Server将告警信息推送给Alert Manager,由它发送告警信息给接收方。

Web UI:Prometheus内置了一个简单的web控制台,可以查询配置信息和指标等,而实际应用中我们通常会将Prometheus作为Grafana的数据源,创建仪表盘以及查看指标。

下面是Prometheus的优势:

轻量管理:架构简单,不依赖外部存储,单个服务器节点可直接工作,二进制文件启动即可,属于轻量级的Server,便于迁移和维护。

较强的处理能力:监控数据直接存储在Prometheus Server本地的时序数据库中,单个实例可以处理数百万的metrics。

灵活的数据模型:同Open-Falcon,引入了tag,属于多维数据模型,聚合统计更方便。

强大的查询语句:PromQL允许在同一个查询语句中,对多个metrics进行加法、连接和取分位值等操作。

很好地支持云环境:能自动发现容器,同时k8s和etcd等项目都提供了对Prometheus的原生支持,是目前容器监控最流行的方案。

下面是Prometheus的劣势:

功能不够完善:Prometheus从一开始的架构设计就是要做到简单,不提供集群化方案,长期的持久化存储和用户管理,而这些是企业变大后所必须的特性,目前要做到这些只能在Prometheus之上进行扩展。

网络规划变复杂:由于Prometheus采用的是Pull模型拉取数据,意味着所有被监控的endpoint必须是可达的,需要合理规划网络的安全配置。

03 监控系统的选型建议

通过上面的介绍,大家对主流的监控系统应该有了一定的认识。面对选型问题,我的建议是:

1、先明确清楚你的监控需求:要监控的对象有哪些?机器数量和监控指标有多少?需要具备什么样的告警功能?

2、监控是一项长期建设的事情,一开始就想做一个 All In One 的监控解决方案,我觉得没有必要。从成本角度考虑,在初期直接使用开源的监控方案即可,先解决有无问题。

3、从系统成熟度上看,Zabbix属于老牌的监控系统,资料多,功能全面且稳定,如果机器数量在几百台以内,不用太担心性能问题,另外,采用数据库分区、SSD硬盘、Proxy架构、Push采集模式都可以提高监控性能。

4、Zabbix在服务器监控方面占绝对优势,可以满足90%以上的监控场景,但是应用层的监控似乎并不擅长,比如要监控线程池的状态、某个内部接口的执行时间等,这种通常都要做侵入式埋点。相反,新一代的监控系统Open-Falcon和Prometheus在这一点做得很好。

5、从整体表现上来看,新一代监控系统也有明显的优势,比如:灵活的数据模型、更成熟的时序数据库、强大的告警功能,如果之前对zabbix这种传统监控没有技术积累,建议使用Open-Falcon或者Prometheus.

6、Open-Falcon的核心优势在于数据分片功能,能支撑更多的机器和监控项;Prometheus则是容器监控方面的标配,有Google和k8s加持。

7、Zabbix、Open-Falcon和Prometheus都支持和Grafana做快速集成,想要美观且强大的可视化体验,可以和Grafana进行组合。

8、用合适的监控系统解决相应的问题即可,可以多套监控同时使用,这种在企业初期很常见。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspxgp.html