目的
通过脚本对 grafana 进行访问获取相应数据
创建 key
由于不希望该 api key 权限过大, 因此当前创建 key 只可以用于当前创建的 ORG
在创建 KEY 时, 如果只授权 view , 因此很多 admin 专用 API 无法使用
参考下面方法创建 api token key
注意, api key 只会在创建时显示一次,你需要对其进行保存方便以后使用
创建一个新 key
假设,当我设定 api key 为 abcd123 如下图输入
grafana 会生成一个 api token 如下图显示
你需要复制下面 key 中提示信息, 因为这个 token 只会显示一次
eyJrIjoieXI3WUEycXhYR1VxMlNOSlhQdFcyWnBpZ2Npc3lUSm8iLCJuIjoiYWJjZDEyMyIsImlkIjo3fQ==
使用方法
查询当前 api key 对应组织
curl http://api_key:eyJrIjoieXI3WUEycXhYR1VxMlNOSlhQdFcyWnBpZ2Npc3lUSm8iLCJuIjoiYWJjZDEyMyIsImlkIjo3fQ==@grafana.xxxxx.com/api/org
{
"id":7, <- 当前对应的组织 ID 号
"name":"ceph", <- 当前具有权限访问的组织名称
"address":{
"address1":"",
"address2":"",
"city":"",
"zipCode":"",
"state":"",
"country":""
}
}
查询当前组织具有哪些可用的 data source 注意, 只有 admin 才可以返回信息, viewer 无法查询
curl http://api_key:eyJrIjoiR2VUa0JMM2lVZndsQk9wY0ZObjZBd1NsOVFFd0UxMUwiLCJuIjoiYWJjZDEyMyIsImlkIjo3fQ==@grafana.xxx.com/api/datasources/7
{
"id":7,
"orgId":7,
"name":"Prometheus", <- 可用的 datasource
"type":"prometheus",
"typeLogoUrl":"",
"access":"proxy",
"url":"http://x.x.x.x:6201", <- datasource 源
"password":"",
"user":"",
"database":"",
"basicAuth":false,
"basicAuthUser":"",
"basicAuthPassword":"",
"withCredentials":false,
"isDefault":true,
"jsonData":{
"httpMethod":"GET",
"keepCookies":[
]
},
"secureJsonFields":{
},
"version":2,
"readOnly":false
}
注意:
不建议从当前 grafana 中直接获取监控数据
监控源属于 Prometheus, 建议通过访问 Prometheus api 进行数据获取
tsdb 查询方法
curl -X POST -H "Content-Type: application/json" -d '{"start": "5m-ago", "metric":"load.1min","host":"shost4"}' "http://TSDB.xxxx.com/api/tsd/host"
Prometheus
curl http://prometheus.xxx.com:6201/api/v1/query?query=ceph_mon_up
{
"status":"success",
"data":{
"resultType":"vector",
"result":[
{
"metric":{
"__name__":"ceph_mon_up",
"fsid":"540236d7xxxxxxxxa4faed",
"location":"gz"
},
"value":[
1590996218,
"3"]
},
{
"metric":{
"__name__":"ceph_mon_up",
"fsid":"e9a5xxxxxxxxc0311ed83f0",
"location":"gz"
},
"value":[
1590996218,
"3"]
}]
}
}