当前位置: 首页 > 科技观察

Prometheus介绍及数据类型

时间:2023-03-13 13:58:24 科技观察

运维监控系统介绍Prometheus是SoundCloud开源的监控告警解决方案,特别适用于容器化监控。架构图Prometheus的特点是多维数据模型,包括带有key/value标识标签的时间序列数据;PromQL,一种灵活的查询语言,内置的函数可以让我们快速计算并得到我们想要的结果;不依赖分布式存储,默认为本地存储,也可以选择远程读写;通过http请求拉取(pull)exporter数据;通过网关(gateway)推送(push)数据;配置可以通过服务发现或者静态配置来发现监控目标;各种Graphics和dashboard的支持方式,尤其是grafana的支持,让我们可以快速完成漂亮的图表。数据格式prometheus存储时间序列数据:即按照相同的时间序列(同名同标签),在时间维度上存储一组连续的数据。时间序列由一个名称(Metric)和一组键/值标签定义,相同的名称和标签属于同一个时间序列。指标名称:表示要记录的数据的名称和数据类型,如http_request_total。时间序列的名称由ASCII字符、数字、下划线和冒号组成。它必须满足正则表达式[a-zA-Z:][a-zA-Z0-9:]*,并且它的名字要有语义,一般表示一个可以衡量的metric,比如http_requests_total,可以表示总数http请求的数量。Label:用来表示一类资源。比如同一个cluster可以使用同一个label,通过label可以得到整个cluster的同一个指标。指标值:按照一定的时间序列在时间维度上采集的数据称为样本。实际时间序列,每个序列包含一个float64值和一个毫秒级别的unix时间戳Prometheus四种指标类型1.计数器(计算器):单调递增的指标,即只增不减,除非监控系统发生重置。2.Gauge(仪表板):可以任意变化的指标,可以增加也可以减少。3.直方图(histogram):采样一段时间内的数据并统计到一个可配置的桶中,然后通过指定的区间过滤样本,或者统计样本总数,最后将数据显示为直方图,其值样本分布在多个桶中,命名为_bucket{le=""}。为了更容易理解,这个值表示索引值小于或等于上边界的所有样本大小的所有样本值的总和,命名为_sum。样本总数,命名为_count。该值与_bucket{le="+Inf"}相同。4.Summary(总结):类似于Histogram,用于表示一段时间内的数据采样结果(通常是请求持续时间或响应大小等),但它直接存储的是分位数(由客户端计算,然后显示),而不是通过区间φ-quantiles(0≤φ≤1)的情况计算样本值的分位数分布,命名为{quantile="<φ>"}所有样本值的大小之和,名为_sumHistogram和Summary的异同,它们都包含_sum和_count指标。Histogram需要通过_bucket计算分位数,而Summary直接存储分位数值。总结一下prometheus的数据格式规范,可以使用PromQL语句快速查询,尤其是结合grafana,分分钟完成一张图表。