Python调用Prometheus监控数据并计算

Prometheus是什么

Prometheus是一套开源监控系统和告警为一体,由go语言(golang)开发,是监控+报警+时间序列数 据库的组合。适合监控docker容器。因为kubernetes(k8s)的流行带动其发展。

Prometheus的主要特点

  • 多维度数据模型,由指标名称和键/值对标识的时间序列数据。
  • 作为一个时间序列数据库,其采集的数据会以文件的形式存储在本地中。
  • 灵活的查询语言,PromQL(Prometheus Query Language)函数式查询语言。
  • 不依赖分布式存储,单个服务器节点是自治的。
  • 以HTTP方式,通过pull模型拉取时间序列数据。
  • 也可以通过中间网关支持push模型。
  • 通过服务发现或者静态配置,来发现目标服务对象。
  • 支持多种多样的图表和界面展示。

Prometheus原理架构图

Prometheus基础概念

什么是时间序列数据

时间序列数据(TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。

应用的场景很多,如:

  • 无人驾驶运行中记录的经度,纬度,速度,方向,旁边物体距离等。
  • 某一个地区的各车辆的行驶轨迹数据。
  • 传统证券行业实时交易数据。
  • 实时运维监控数据等。

时间序列数据特点:

  • 性能好、存储成本低

什么是targets(目标)

Prometheus 是一个监控平台,它通过抓取监控目标(targets)上的指标 HTTP 端点来从这些目标收集指标。

安装完Prometheus Server端之后,第一个targets就是它本身。

具体可以参考官方文档

什么是metrics(指标)

Prometheus存在多种不同的监控指标(Metrics),在不同的场景下应该要选择不同的Metrics。

Prometheus的merics类型有四种,分别为Counter、Gauge、Summary、Histogram。

  • Counter:只增不减的计数器
  • Gauge:可增可减的仪表盘

  • Histogram:分析数据分布情况

  • Summary:使用较少

简单了解即可,暂不需要深入理解。

通过浏览器访问http://被监控端IP:9100(被监控端口)/metrics

就可以查到node_exporter在被监控端收集的监控信息

什么是PromQL(函数式查询语言)

Prometheus内置了一个强大的数据查询语言PromQL。 通过PromQL可以实现对监控数据的查询、聚合。

同时PromQL也被应用于数据可视化(如Grafana)以及告警当中。

通过PromQL可以轻松回答以下问题:

  • 在过去一段时间中95%应用延迟时间的分布范围?
  • 预测在4小时后,磁盘空间占用大致会是什么情况?
  • CPU占用率前5位的服务有哪些?(过滤)

具体查询细节可以参考官方。

如何监控远程Linux主机

安装Prometheus组件其实很简单,下载包--解压--后台启动运行即可,不做具体演示。

在远程linux主机(被监控端)上安装node_exporter组件,可看下载地址

下载解压后,里面就一个启动命令node_exporter,直接启动即可。

nohup /usr/local/node_exporter/node_exporter >/dev/null 2>&1 &
lsof -i:9100

nohup:如果直接启动node_exporter的话,终端关闭进程也会随之关闭,这个命令帮你解决问题。

Prometheus HTTP API

Prometheus 所有稳定的 HTTP API 都在 /api/v1 路径下。当我们有数据查询需求时,可以通过查询 API 请求监控数据,提交数据可以使用 remote write 协议或者 Pushgateway 的方式。

支持的 API

API 说明 需要认证 方法
/api/v1/query 查询接口 GET/POST
/api/v1/query_range 范围查询 GET/POST
/api/v1/series series 查询 GET/POST
/api/v1/labels labels 查询 GET/POST
/api/v1/label//values label value 查询 GET
/api/v1/prom/write remote write 数据提交 remote write
Pushgateway pushgateway 数据提交 SDK

认证方法

默认开启认证,因此所有的接口都需要认证,且所有的认证方式都支持 Bearer Token和 Basic Auth。

调用接口的时候,我们需要携带Basic Auth请求头的认证,否则会出现401。

Bearer Token

Bearer Token 随着实例产生而生成,可以通过控制台进行查询。了解 Bearer Token 更多信息,请参见 Bearer Authentication

Basic Auth

Basic Auth 兼容原生 Prometheus Query 的认证方式,用户名为用户的 APPID,密码为 bearer token(实例产生时生成),可以通过控制台进行查询。了解 Basic Auth 更多信息,请参见 Basic Authentication

数据返回格式

所有 API 的响应数据格式都为 JSON。每一次成功的请求会返回 2xx 状态码。

无效的请求会返回一个包含错误对象的 JSON 格式数据,同时也将包含一个如下表格的状态码:

状态码 含义
401 认证失败
400 当参数缺失或错误时返回无效的请求状态码
422 当一个无效的表达式无法被指定时 (RFC4918)
503<
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值