prometheus理论概念(一)

prometheus理论概述

1.prometheus特点

  • 多维数据模型:由度量名称和键值对标识的时间序列数据
  • PromQL:一种灵活的查询语言,可以利用多维数据完成复杂的监控数据查询
  • 不依赖分布式存储,单个服务器节点可直接工作
  • 基于HTTP的pull方式采集时间序列数据
  • 推送时间序列数据通过pushgateway组件支持,pushgateway的原理类似于zabbix-proxy
  • 通过服务发现或静态配置发现模板
  • 多种图形模式展现图形

2.prometheus组成及架构

prometheus架构原理:

  • 核心组件有prometheus sever、pushgateway、service discovert、alertmanager、UI。

  • 其中一些小的监控任务统一将监控数据推送给pushgateway,由pushgateway进行收集,最终由prometheus server去pushgateway上拉取数据。

    像一些持久化的监控任务,如主机的系统监控,这些都由exporters进行收集,最后prometheus通过pull方式进行拉取监控数据。

  • prometheus server内置了TSDB数据库,用来存时序数据,在生成环境中就要依靠第三方时序数据库进行存放数据。

  • 像k8s、docker这些无法持续性监控的服务,这时就得需要service discover自动发现机制来探测k8s中的容器服务器,最终实现全方位监控。

  • 对于监控图形我们可以采用grafana来出图

  • 监控告警采用alertmanager通过微信、钉钉、email进行报警

核心组件:

  • prometheus server:收集指标和存储时间序列数据,并提供查询接口
  • clentlibrary:客户端库
  • pushgateway:短期存储指标数据,主要用于临时性任务
  • exporters:采集已有的第三方服务监控指标并暴露metrics
  • alertmanager:告警
  • web ui:简单的web控制台

Prometheus architecture

3.prometheus数据模型

prometheus将所有数据存储为时间序列格式,具有相同度量名称以及标签属于同一个指标,prometheus的度量名称其实就是指的是监控项的名称,标签用于记录监控数据

每个时间序列都由度量标准名称和一组标签来组成

时间序列格式:

<metric name>{<label name>=<value>,...}

示例:

api_http_request_total{method="POST",handler="/messages"}

其中
	api_http_request_total这个是度量名称
	method、handler是标签名称
	POST、/messages都是标签值
	
	多个标签以逗号分隔

4.prometheus指标类型

  • counter:递增的计数器
    • 递增计数器呈现出来的图形就是不断上升的

在这里插入图片描述

  • gauge:可以任意变化的数值
    • 可以动态的更新数值,检测硬件使用率常用

在这里插入图片描述

  • Histogram:对一段时间范围内数据进行采样,并对所有数值求和与统计数量
  • Summary:与Histogram类似

Histogram、Summary的图形,一段范围内的数据采集

在这里插入图片描述

5.prometheus作业和实例

实例:可以抓取的目标成为实例,实例就对应配置文件中targets

作业:具有相同目标的实例集合称为作业,作业就是配置文章中的job_name

猜你喜欢

转载自blog.csdn.net/weixin_44953658/article/details/113366768