Prometheus连接多个指标

初识PromSQL

PromSQL看起来简短整洁,通俗易懂。乍一看很简单,但是当真正使用它的时候,就会发现Prometheus的语句苍白无力,微不足道。在网上关于PromSQL的博客,问答较少,官网上的教程不是很好看懂,而且大多都是在编程的基础上实验。下面根据公司使用Prometheus的情况就我自身理解来谈谈指标之间的聚合。

一、Prometheus二进制操作符

参考网上文章,PromSQL有15个二进制操作符,可以根据操作类型分为三组:

  1. 算术 + - * / ^ %

  2. 比较< > <= >= == !=

  3. 逻辑and unless or

对于不同类型的操作数,可以看一下具体的例子。

rabbitmq_queue_messages_ready  + rabbitmq_queue_messages_unacked 
rabbitmq_queue_messages_ready + rabbitmq_queue_messages_unacknowledged > 0

一对一匹配One to one

example 1:

在这里插入图片描述

一对多和多对一匹配

一对一的匹配是最直接的匹配。大多数的时候,on或则ignoring有助于返回一些想要的内容,这里的缺陷是。某些查询结果可能只显示一对一的基数。例如,碰巧查询在选定的时间范围内显示了一对一的数据关系,但通常可以是一对多。或则多对一。

Prometheus支持多对一和一对多的匹配。但必须通过向查询添加group_left或group_right修饰来指定。否则可能返回错误。

multiple matches for labels: many-to-one matching must be explicit (group_left/group_right)

除非使用逻辑运算符 and unless or,否则Prometheus总是认为二元运算的至少一边具有1的技术,如果在查询的执行过程中,Prometheus在one端发现冲突(标签冲突)查询将失败,并出现一下错误:

found duplicate series for the match group <keys/values> on the <left|right> hand-side of the operation: <op>;
many-to-many matching not allowed: matching labels must be unique on one side

即使一方没有冲突,指定了group_leftgroup_right,查询仍然失败,报错:

multiple matches for labels: grouping labels must ensure unique matches

会报这个错误是因为prometheus对于多方面的每一个元素,应该只能从一个方面找到一个元素,否则,查询结果将变得不清晰
one to one匹配
在这里插入图片描述
many to one匹配

在这里插入图片描述
many to many

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### 使用 Prometheus 监控 Docker 容器的关键指标 为了实现对 Docker 容器的有效监控,通常需要借助 cAdvisor 工具以及 Prometheus 的集成能力。以下是具体的实施方法: #### 1. 部署 cAdvisor cAdvisor 是 Google 开源的一个容器资源监控和性能分析工具,能够自动发现主机上的所有容器并采集其资源使用情况[^5]。 安装 cAdvisor 可以通过以下命令完成: ```bash docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:rw \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest ``` 启动完成后,访问 `http://<your-server-ip>:8080` 即可查看当前服务器上运行的所有容器及其资源使用情况。 #### 2. 配置 Prometheus 抓取数据 Prometheus 支持从多个 Exporter 中抓取数据,其中也包括来自 cAdvisor 提供的数据接口。在 Prometheus 的配置文件 (`prometheus.yml`) 中添加如下内容即可让 Prometheus 去定期拉取 cAdvisor 数据: ```yaml scrape_configs: - job_name: 'cadvisor' static_configs: - targets: ['localhost:8080'] ``` 保存修改后的配置文件后重启 Prometheus 实例使其生效。 #### 3. 查看关键指标 一旦成功设置好上述组件之间的连接关系,则可以在 Prometheus UI 或者 Grafana 上查询到关于各个容器的重要指标信息,比如 CPU 利用率、内存占用量、网络吞吐等等[^4]。一些常用的 PromQL 查询语句如下所示: - 获取某个特定容器的平均CPU利用率百分比:`avg(rate(container_cpu_usage_seconds_total{image!="",container_label_com_docker_swarm_service_name=~".+"}[1m])) * 100 by (container_label_com_docker_swarm_service_name)` - 统计每秒写入磁盘字节数总和:`sum(rate(container_fs_writes_bytes_total[1m])) by(instance)` #### 4. 接入可视化平台(Grafana) 对于更直观地展示这些数据而言,推荐将 Prometheus 连接到 Grafana 并导入官方提供的现成模板dashboard来进行进一步定制化显示效果[^3]。例如可以尝试这个链接中的Dashboard ID创建对应视图 https://grafana.com/grafana/dashboards/10619-docker-host-container-overview/ --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Energet!c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值