快速创建一个简单demo
注意
本节内容仅适用于 Grafana 11.5.2 + Infinity 3.4.1 环境,其他版本插件的配置方式可能有所不同。
# 一、配置 Data Source
首先,在 Grafana 的 Infinity 数据源中填写 Ambari-Metrics 的 API 地址。
这里我们以 Namenode JVM 堆内存使用量(jvm.JvmMetrics.MemHeapCommittedM
) 为例:
图:配置数据源 URL,确认 collector 地址
提示
如果不确定 AMS Collector 的位置,可以:
- 在 Ambari WebUI 查看 Metrics Collector 服务;
- 或者在节点上确认 6188 端口。
# 二、新建 Dashboard 与 Panel
新建一个 Dashboard,并在其中添加一个 Panel。
图:新建 Panel 并选择 Infinity 数据源
Step 1
进入 Dashboard 页面,点击 Add panel,并选择 Infinity
数据源。
Step 2
在 Query 配置界面:
- Type →
JSON
- Parser →
JSONata
(语法更灵活,适合表达式转换)
Step 3
继续配置:
- Source →
URL
(通过 AMS API 获取数据) - Format →
Time Series
(时序数据,Grafana 才能绘制曲线)
Step 4
填写 URL 示例:
/ws/v1/timeline/metrics?metricNames=jvm.JvmMetrics.MemHeapCommittedM&appId=namenode&startTime=${__from}&endTime=${__to}
1
${__from}
和 ${__to}
是 Grafana 的内置时间变量,会自动替换成面板的时间范围。
# 三、配置数据解析规则
# Rows 配置
图:Query 配置界面,定义Rows配置
metrics[0].metrics ~> $each(function($v, $k) {
{
"key": $k,
"value": $v
}
})
1
2
3
4
5
6
2
3
4
5
6
- 将 JSON 中的
metrics
对象转换为键值对数组; - 输出结果:
[{key: 时间戳, value: 数值}, …]
。
# Columns 配置
- key → time(类型:timestamp_epoch)
- value → 指标值(类型:number)
# 四、验证 API 数据
在浏览器或命令行直接调用 API,确认返回结果:
http://dev1:6188/ws/v1/timeline/metrics?appId=namenode&endTime=1755853294640&metricNames=jvm.JvmMetrics.MemHeapCommittedM&startTime=1755849694640
1
图:Ambari-Metrics API 返回的 JSON 数据结构
注意
- 时间戳是 毫秒级 Unix 时间戳,必须用
timestamp_epoch
; - 如果返回为空,请检查
appId
和metricNames
是否正确。
# 五、展示单一指标效果
配置完成后,Grafana Panel 能正确显示一个 JVM 堆内存指标的曲线:
图:最终效果,一个 JVM 堆内存指标的时序曲线
思考
同样的方法也可以应用于 CPU、内存、磁盘 IO、HDFS、YARN 等 AMS 指标。
# 六、完整 Panel JSON 配置
完整的配置请浏览
- 01
- [/metrics/metadata] — 元数据查询和使用 GET09-12
- 02
- [/metrics/metadata] — 请求完整链路解读09-12
- 03
- [/metrics/metadata] — 缓存数据装载 Phoenix09-12