prom设计

指标

指标定义

分为指标名称和标签

<metric name>(<label name>=<label value>, ...)
指标分类

1.counter:只增不减,如访问量
2.gauge:可增可减,如内存使用量
3.summary:通过采样分位图统计,了解某个时间段的分布情况
4.histogram:反映某个区间内的样本个数。

数据采集

prometheus只要采用pull的方式来提取数据与push的区别主要是主动与被动。
push与pull的区别:
1.push实时性相对较好,采集数据后立即上报。但是本地不会保存数据,agent本身是无状态的,master需要维护各个agent的状态,并且每个agent要配置master的地址。
2.pull实时性差,周期性采集数据。agent要保留数据存储功能,master只负责提取因此可以做到无状态,agent不用感知master的存在。

获取采集对象
1.静态文件配置:
"targets":["10.10.10.10:8080"]

如上代码表示监控对象的地址是10.10.10.10,端口号是8080,prometheus会周期的调用这个监控对象。但是如果想要监控应对服务发生偏移、变更、更换地址以及端口,就需要动态发现的方式来获取监控对象。

2.动态发现:

相比较之下更适合在云环境下使用。因为晕的理念就是按需供给,资源是动态分配的,并且生命周期比物理机器短。
目前支持以下系统获取监控对象:
1.容器管理平台:kubernetes、marathon
2.各种云管平台:EC2、Azure、OpenStack
3.各种服务组件:DNS、ZooKeeper、Consul
监控对象自动发现流程(以kubernetes为例):
1.需要在prometheus里配置kubernetes API的地址和认证凭据。这样prometheus就可以连接到kubernetes的API来获取信息。
2.prometheus的服务发现组件会一直监听kubernetes集群的变化,或随着新主机的加入、创建容器等及时获得信息。

3.数据采集

prometheus采用统一的Restfule API的方式获取数据,具体来说就是利用HTTP的GET请求或metrics数据接口获取监控数据,为了高效的采集数据,prometheus对每个采集点启动了一个线程去定时采集数据。
prometheus支持文本数据格式,每个exporter都将监控数据输出成文本数据格式。

发布了69 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42307828/article/details/94670523