文章目录
Prometheus 系统监控
Prometheus 是一套开源的系统监控告警框架,作为 CNCF 中重要的一员,活跃度仅次于 kubernetes,广泛用于 kubernetes 集群的监控系统中。
prometheus 架构如下:
Prometheus server 会定期从配置的 target 或者 pushGateway (收集短生存期的jobs) 通过 http 主动拉取 metrics 存储到本地,并根据定义的规则保存到时间序列中,并向 alertmaanger 推送告警。
PromQL 是内置的查询工具,通过 API 或者其他可视化工具,如 Grafana, 查询存储在时序数据库中的样本,进行分析展示。
采集对象可以通过服务发现或者直接静态配置 job 指定。有些 jobs 存活的时间很多,无法等 prometheus 定期去拉取数据,通过将数据主动推给 pushGateway 保存,prometheus 在到 pushGateway 拉取。’
Prometheus 按照设定的规则向 Alertmanager 发送告警, Alertmanager 负责告警去重,分组,并送至正确的接受者(email,posGenie 等) 或者屏蔽。
数据模型
Prometheus 以 metric(指标)的形式保存所有采集的监控数据到内置的时序数据库中,同一 metric、label 的数据和时间戳形成时序数据流 : <metric name>{<label name>=<label value>, ...}
。
metric_name 和 label 符合 :[a-zA-Z_:][a-zA-Z0-9_:]*
收集指标 metric 的类型一般分为:
- counter: 累加,比如总请求数,错误数等,随时间持续增加的样本;
- gauge: 测量值,反映实时的一个状态,如温湿度值,cpu使用率,其数值可上下波动;
- histogram: 直方图,如请求时间统计,对数据进行分区间统计,默认分布区间 buckets 为 {0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10},可以自定定义覆盖。每一个区间就像一个个 bucket(桶),histogram 将收到的样本计入配置的桶内,供后续分析。
# 包含 mertic:
metric_name_bucket{
le="上边界"} # 小于等于的样本数
metric_name_bucket{
le="+Inf"