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