我们的需求是这样的,将Grafana部署到k8s中,去监控K8s的容器和集群信息,当然想要能监控到数据还得需要部署node-exporter和prometheus,Grafana只是可视化作用,而prometheus主做查询方面的部署供Grafana使用,也就是说我们使用Grafana主要是为了查询语句,将查询语句得到以后再去查找prometheus的数据,这样的一个过程。可能单独这样说没有懂,接下来就讲一下怎么使用Grafana api使用把。

首先使用Grafana api需要 apikey 认证,访问Grafana系统可以获取key。

1.进入界面找到如下图所示api keys

2.点击右上角绿色按钮 add api key ,填写字段属性,主要的Role角色,选择viewer的化有些接口访问不了,选择admin所有的接口都能访问,Time to live 是时间期限,写1d就是一天的意思,1m:一个月,1y代表一年,不填写代表没有期限

3.点击add按钮以后会返回一个token,将这个token保存,如果弄没了是不能再次查看的。复制标红的token

4.然后查看Grafana 官方api,都是英文但是感觉说的还是挺明白的!我给的链接就是仪表盘相关的接口,因为它的界面全是仪表盘,所以一般都应该是要请求这个接口把

https://grafana.com/docs/http_api/dashboard/

5.根据官方描述获取仪表盘是要根据某个uid获取的。

6.postman测试一下请求接口访问k8s容器组资源的uid

7. 你仔细看返回的json数据,全都是下图图表结构的内容,是没有数据的

8.那么数据在哪里呢,也可以这样,假设你需要Memory Working Set(上图第一个79%那里)这个面板的数据,那么在那个面板

点击edit,可以查看到公式一样的查询语句,那个查询语句就代表要查询Memory Working Set的这个值。然后edit进入如下界面

界面上标红的就是查询语句通过这个语句就可以查到想要的值,那么这个查询语句也是需要传参的,图里边有instance选择和namespace选择框,那么查询语句里有instance就需要替换,替换原则可以自己查找规律,对照图里边f12开发者模式query参数传递就可以了,

那么你肯定要问了我怎么才能知道参数呢,其实都在访问仪表盘返回的数据里,对应的获取数据都会有参数,按照规则进行替换就可,如图下这个数据

然后接下来咱们将刚才介绍的参数用postman查询一下,这回访问的就是prometheus的系统查询数据了,这个不需要任何权限就可以访问

接下来,如果想要用java调取,那么就可以用httpclient去传参调用就行了,不过推荐使用okhttp,因为okhttp访问真的快,而且还有同步异步,还是很好的插件的,以上就是全部内容,希望可以帮助你!

 

 

 

 

 

 

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐