本文根据dbaplus社群第期线上分享整理而成。
一、简介
Kubernetes自从年开源以来便以不可阻挡之势成为容器领域调度和编排的领头羊,Kubernetes是GoogleBorg系统的开源实现,于此对应Prometheus则是GoogleBorgMon的开源实现。Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库。从字面上理解,Prometheus由两个部分组成,一个是监控报警系统,另一个是自带的时序数据库(TSDB)。
年,由Google发起的Linux基金会旗下的原生云基金会(CloudNativeComputingFoundation)将Prometheus纳入其第二大开源项目。Prometheus在开源社区也十分活跃,在GitHub上拥有两万多Star,并且系统每隔一两周就会有一个小版本的更新。
二、各种监控工具对比
其实,在Prometheus之前市面已经出现了很多的监控系统,如Zabbix、Open-Falcon、Nagios等。那么Prometheus和这些监控系统有啥异同呢?我们先简单回顾一下这些监控系统。
1、ZabbixZabbix是由AlexeiVladishev开源的分布式监控系统,支持多种采集方式和采集客户端,同时支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库中,然后对其进行分析整理,如果符合告警规则,则触发相应的告警。
Zabbix核心组件主要是Agent和Server,其中Agent主要负责采集数据并通过主动或者被动的方式采集数据发送到Server/Proxy,除此之外,为了扩展监控项,Agent还支持执行自定义脚本。Server主要负责接收Agent发送的监控信息,并进行汇总存储,触发告警等。
ZabbixServer将收集的监控数据存储到ZabbixDatabase中。ZabbixDatabase支持常用的关系型数据库,如果MySQL、PostgreSQL、Oracle等,默认是MySQL,并提供ZabbixWeb页面(PHP编写)数据查询。
Zabbix由于使用了关系型数据存储时序数据,所以在监控大规模集群时常常在数据存储方面捉襟见肘。所以从Zabbix4.2版本后开始支持TimescaleDB时序数据库,不过目前成熟度还不高。
2、Open-FalconOpen-Falcon是小米开源的企业级监控工具,用Go语言开发而成,包括小米、滴滴、美团等在内的互联网公司都在使用它,是一款灵活、可扩展并且高性能的监控方案,主要组件包括了:
1)Falcon-agent是用Go语言开发的Daemon程序,运行在每台Linux服务器上,用于采集主机上的各种指标数据,主要包括CPU、内存、磁盘、文件系统、内核参数、Socket连接等,目前已经支持多项监控指标。并且,Agent支持用户自定义的监控脚本。
2)Hearthbeatserver简称HBS心跳服务,每个Agent都会周期性地通过RPC方式将自己的状态上报给HBS,主要包括主机名、主机IP、Agent版本和插件版本,Agent还会从HBS获取自己需要执行的采集任务和自定义插件。
3)Transfer负责接收Agent发送的监控数据,并对数据进行整理,在过滤后通过一致性Hash算法发送到Judge或者Graph。
4)Graph是基于RRD的数据上报、归档、存储组件。Graph在收到数据以后,会以rrdtool的数据归档方式来存储,同时提供RPC方式的监控查询接口。
5)Judge告警模块,Transfer转发到Judge的数据会触发用户设定的告警规则,如果满足,则会触发邮件、