如何将Grafana的数据集合到自己前端项目的数据驾驶舱中

Posted 他好像一条狗啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Grafana的数据集合到自己前端项目的数据驾驶舱中相关的知识,希望对你有一定的参考价值。

  Grafana是可以提供API Keys给你可以让你直接使用从Grafana获取来的数据来搭配其他图形工具来实现数据监控图的。虽然它本身也可以显示数据,但是有时候数据很全面且分散在不同页面,而有些运维同学只需要某些重要的数据,不能一下子直观看清,所以某些重要常用的数据可以单独摘选出来,不常用的可以在打Grafana查看。

   先在Grafana中打开设置->API Keys->填写Key name,角色权限根据需求,图中设置为admin,过期时间根据需求,图中设置不填默认无过期时间,然后就会弹出一个弹窗,先别急着关掉!!!

   弹窗里会给你一段curl,这段话的意思就是向http地址发了一个头部带有Authorization(token)的请求。先把这段话保存下来,关闭弹窗之后没地方查看。这里面有两个有用的信息,一是http地址,二是token。http地址你可以设置为前端代理转发的后端地址,而token是你发起向Grafana后端发起请求的时候所需要的头部凭证,否则会授权失败,获取不到数据。

  之后你就可以模拟Grafana前端的查询数据,向Grafana后端发起请求。需要注意的是Grafana基本搭配的是Elasticsearch数据源,请求体中携带的语句是查询语句,对Elasticsearch语句有点了解是最好的,不清楚也可以f12打开控制台network,然后点一个数据发请求看它原本的请求体里的Elasticsearch语句是怎么写的。这里还需要注意以下几点:

    1.查询语句中有包含“\\”等符号需要考虑是否能够会被转义的问题,因为字符串中的“\\”本身就代表转义,对于有意义的“\\n”会解释为换行符,对于“\\uXXXX”会解释为Unicode对应的字符,对于没有意义的“\\0101”则会省略“\\”解释为0101。所以为了解决这个问题,得用“\\\\”来替代“\\”,这样原本字符串就会消耗掉一层“\\”,变成正常的查询语句。

    2.批量请求查询语句如果非常长,建议先用一个数组分段保存起来,然后用换行符(\\n)拼接起来,否则一长串直接敲击回车键换行vscode会报错。

let bulkRequestBodyArray=[
  "语句1",
  "语句2",
  "语句3",
  "语句4",
];
let params=bulkRequestBodyArray.join("\\n");
params=params+\'\\n\';  // 批量请求查询语句必须以“\\n”终止

//下面这种方法也行
let bulkRequestBodyArray=[
  "语句1\\n",
  "语句2\\n",
  "语句3\\n",
  "语句4\\n",
];
let params=bulkRequestBodyArray.join("");

Elasticsearch官网对批量请求语句写法的要求

    3.查询语句中有携带grafana的时间戳的,可以拼接自己所需要的时间。

    4.每个请求都需要携带token请求头,建议将之前获取的token配置为默认的请求头参数,此处以axios为例:axios.defaults.headers.common[\'Authorization\'] =\'Bearer XXXXXXXXXXXXX\';

  获取到数据,就可以搭配vcharts或Echarts来构建自己需要的监控图了。

以上是关于如何将Grafana的数据集合到自己前端项目的数据驾驶舱中的主要内容,如果未能解决你的问题,请参考以下文章

在自己的应用里集成grafana

grafana使用小节

如何将 Reactjs 日志和指标推送到 Grafana

如何将 TabControl 的项目绑定到 wpf 中的可观察集合?

grafana使用中遇到的一些坑

Grafana中mysql作为数据源的配置方法