如何获取数以千计的Prometheus指标并转换成Grafana查询语句

51次阅读
没有评论

共计 1353 个字符,预计需要花费 4 分钟才能阅读完成。

实验环境

  • Prometheus:2.20.0
  • Python:3.7.7
  • Requests:2.24.0

首先要安装依赖,

sudo pip3 install requests==2.24.0

现状

你是否面临着如下这种数以千计的 Prometheus 业务指标要添加到 Grafana 图表里面做监控数据可视化

如何获取数以千计的 Prometheus 指标并转换成 Grafana 查询语句

闲言少叙

直接上拉取 Prometheus 指标的接口的 python 脚本,自己跑一下,

#!/usr/bin/env python3
# coding = 'utf-8'

import requests

# 记得替换成你们自己的, 不要忘记端口, 末尾不要斜杠
host_url = "http://demo.robustperception.io:9090"
prometheus_api = "/api/v1/label/__name__/values"
data = requests.get(host_url + prometheus_api).json()
f = open("metrics.txt",'w')
for m in data['data']:
    f.write(m + '\n')
f.close()

小声说一下, 上面的 Prometheus 指标接口我一开始是不知道的,不得已写了个 selenium+chromedriver 的 python 动态爬虫把所有业务指标爬了下来,本篇博客就不展示这个爬虫代码了,如果 `/api/v1/label/__name__/values` 这个接口在新版本的 Prometheus 中不存在了,你又急需这些指标可以在本站页脚找到博主的邮箱联系我临时花几分钟帮你写一个爬虫,我写这种爬虫是轻车熟路,另外小小提示一下,如果只用 requests 库的话是不行的,以及直接用 driver.page_source 获取 html 源码的话也是会有 bug 的,总之日后上面直接调接口的方法失败了,请直接联系我花点钱给你写个爬虫。

紧接着上生成 Grafana 查询语句的 bash 脚本,如下,

#!/bin/bash
set -x
# 考虑到业务的复杂性,这里必须传入你的业务应用名称,# 以便每个业务均生成一个单独的文件好让你把添加大量
# Grafana 图表这种繁复的任务拆分给不同的人去做
APP_NAME=$1
results=`cat metrics.txt |grep $APP_NAME`
for result in $results;do
    # 注意这里的 grep 后面的这个 timer 是指你们含有 quantile 变量的 Grafana 查询语句
    # 对应的 Prometheus 指标的名称以什么结尾, 请自行修改
    result_check=`echo $result |grep 'timer$'`
    if [-z $result_check];then
        echo $result"{application=\"\$application\",instance=\"\$instance\"}" >> $APP_NAME.txt
    else
        echo $result"{application=\"\$application\",instance=\"\$instance\",quantile=\"\"}" >> $APP_NAME.txt
    fi
done

注意这是 shell 脚本哦,多余的我就不多说了,都在脚本注释里面,我们来直接看最终效果吧,如下:

如何获取数以千计的 Prometheus 指标并转换成 Grafana 查询语句

 

 

 

 

正文完
 
sharp097
版权声明:本站原创文章,由 sharp097 2020-09-05发表,共计1353字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)