插件的后端运行在 Grafana 服务器上,由 Grafana 作为子进程启动。所有对 MoleSignal 的请求都从 Grafana 服务器发出,带着数据源的 Token;浏览器从不直接访问 MoleSignal。Grafana Cloud 通过 Private data source connect 访问内网中的 MoleSignal。
前提条件
为 Grafana 创建 Token
- 打开 身份与访问 → 服务账号,点击 创建服务账号。
- 名称 填
grafana,角色 选 Viewer。 - 点击 创建账号和 Token,复制 Token。它 365 天后过期,且只显示一次。
安装插件
用 Grafana CLI 安装发布包,或者把它解压到 Grafana 的插件目录,Linux 安装包和 Docker 镜像中为/var/lib/grafana/plugins:
grafana.ini 中,或用环境变量 GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=molesignal-datasource,允许 Grafana 加载它,然后重启 Grafana:
添加数据源
- 在 Grafana 中打开 Connections → Data sources,点击 Add new data source,选择 MoleSignal。
- 填写 MoleSignal 的 URL,例如
https://molesignal.example.com,粘贴 API Token。 - 点击 Save & test。
streams.read 和 streams.query,统计各类型数据流的数量,并检查 MoleSignal 能否读懂字段查询。
查询类型
PromQL
range 查询每个步长读取一个点。步长取面板的间隔,不小于 最小步长,每条序列不超过 11,000 步。图例 为每条序列命名,{{label}} 代表某个标签的值。Exemplar 画出序列的 exemplar,每个都能打开对应的链路。MoleSignal 实现的是 PromQL 的子集。
字段查询
日志、链路搜索 和 RED 使用 MoleSignal 日志 和 链路 页面的字段查询,同一个查询在两处含义相同:
添加条件 一行用 字段、运算符 和 值 组成一个比较,并用
AND 加入查询。RED 读取 入口 Span(服务接收请求的地方)或 所有 Span。
SQL
SQL 读取任意数据流。数据流 指定规划语句时使用的数据流,为空时使用FROM 后面的表。格式 可选 表格、时间序列 或 日志。以下宏按面板的时间窗口展开:
$__interval、$__rate_interval 和 $__range 在 PromQL 和 SQL 中都可以使用,告警规则中也可以。
Explore
变量与临时过滤
查询变量列出以下之一:
选中多个值的变量按各语言读取列表的方式写入:PromQL 中为
(a|b),供 =~ 使用;SQL 中为 'a', 'b',供 IN (...) 使用;链路字段查询中为 'a', 'b',供 in (...) 使用。
临时过滤(ad hoc filter)在 PromQL 中作为每个选择器的标签匹配条件,在字段查询中作为 AND 条件。它的字段和取值来自数据源的 日志数据流。
注解
注解查询在仪表盘的面板上标出一种 来源:告警
Grafana 告警规则通过插件后端执行 PromQL 和 SQL 查询。MoleSignal 的告警功能更完整,包括实时规则、事件、值班和升级。Grafana 中触发的告警仍可以作为外部告警推送到 MoleSignal。仪表盘
数据源的 Dashboards 标签页可以导入两个仪表盘:限制
Grafana 的 Logs、Traces、Metrics Drilldown 应用只读取 Loki、Tempo 和 Prometheus,因此不会打开这个数据源。