Grafana(6): 使用数据源实现扩展函数支持
Grafana(6): 使用数据源实现扩展函数支持
建议点击 查看原文 查看最新内容。
原文链接: https://typonotes.com/posts/2023/06/29/grafana-function-extends-support/
Grafana 只提供了 Grafana 变量内置语法 。 例如
|
|
但并没有提供额外的 function/函数 功能。 这也直接导致了在界面配置的时候, 可能无法与很多第三方组件进行交互。
举个例子
举个例子, 我使用了 Aliyun SLS 服务作为日志分析和监控工作。
但是在配置跳转链接的时候, 其中 查询字段 使用了 base64 编码。 encode=base64&queryString=X25hbWVzcGFjZV86a3ViZS1zeXN0ZW0g
https://sls.console.aliyun.com/lognext/project/<project_name>/logsearch/<logstore_name>?encode=base64&queryString=X25hbWVzcGFjZV86a3ViZS1zeXN0ZW0g&queryTimeType=99&startTime=1688008005&endTime=1688008905
经过验证: 删除 encode=base64
直接使用 明文 queryString=_namespace_:kube-system
也是可以查询的。
但是当 查询条件过多 的时候就容易因为 特殊字符 和 空白符 造成异常。
使用 数据源 提供函数支持
天无绝人之路, 我们可以通过使用 数据源 的方式扩展出 函数/功能(甚至更多)。
接下来, 我们继续以 base64
编码为案例, 进行扩展。
这里, 我选择的是 Postgres 数据库提供支持。 关于数据源配置, 可以参考 Grafana: (1) DataSource 数据源管理
从图中 (1) 可以看到, 我们原来的字段 _namespace_: kube-system
通过 PgSQL 函数处理, 成为了一串 base64 的编码数据, X25hbWVzcGFjZV86IGt1YmUtc3lzdGVt
。
在 Query 的输入框内, 可以使用 变量。
|
|
Grafana 在处理时会先变量替换成 真实值, 再交给 PgSQL 处理。
通过 扩展 数据源的方式, 可以对变量进行任何 函数/其他方式 的处理。 处理方法的限制就是数据源的限制。 理论上 所支持的函数数量 是 无上限 的, 因为出了内置数据源类型外, 用户还可以开发定制 自己的数据源, 也就是 处理引擎。
扩展变量的约束
通过之前的处理, 我们可以想办法对任何变量进行任何形式的处理。
但是同时带来了另外一个问题需要解决, 这些变量从某种意义上来说, 是 内置 的, 用户不可见 的。
如果操作界面呈现出 过多的 变量, 其一, 会给用户操作带来额外的负担; 其二, 对以后的维护也是一种累赘。
因此, 在变量管理方面, 我做了一点 额外 的工作。
- (2) 变量命令: 增加 前缀
ro_
, 表示 只读, 用户不可选择。 - (3) 变量可见性: 在可见性方便, 选择 Hide Variable, 直接隐藏全部, 直接在 Grafana 配置模版使用。 用户根本不可见。
- 在变量管理界面, 通过排序将变量按照依赖关系进行 面包屑 排序。 将 隐藏变量 全部放在最后。
- 原文链接:https://typonotes.com/posts/2023/06/29/grafana-function-extends-support/
- 本文为原创文章,转载注明出处。
- 欢迎 扫码关注公众号
Go与云原生
或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。