Grafana 面板 JSON 到 Jsonnet?

hen*_*dry 5 grafana jsonnet

我能够生成面板 JSON 来配置 Grafana 仪表板,如下所示:

jsonnet -J ~/grafana/grafonnet-lib mydash.jsonnet > mydash.json
Run Code Online (Sandbox Code Playgroud)

不过,我喜欢在 Grafana 本身中操作和编辑生成的仪表板。

我绝对感到困惑和沮丧的是,一旦我通过调整 Grafana 的设置等方式在 Grafana 中进行了 UI 更改……如何将其返回Jsonnet 中?现在对我来说这是一次超级尴尬的开发经历。我导出面板 JSON 并在单独的窗口中打开源 Jsonnet,并认真尝试移植我的更改。

当您在 JSON 中可能遇到以下情况时,这尤其令人痛苦:

      "sparkline": {
              "fillColor": "rgba(31, 118, 189, 0.18)",
              "full": true,
              "lineColor": "rgb(31, 120, 193)",
              "show": true
      },
Run Code Online (Sandbox Code Playgroud)

您需要手动转换为 Jsonnet/Graffonet-lib:

sparklineShow=true,
sparklineFull=true,
colorBackground=true,
Run Code Online (Sandbox Code Playgroud)

我是否缺少技巧或工作流程?

Ste*_*han 3

您必须编辑 mydash.jsonnet 并在其中添加所需的属性。据我所知,目前还没有自动方法可以从 grafana-json 转换回 grafonnet。有时找到合适的属性有点痛苦。

您正在寻找的属性在这里: https: //github.com/grafana/grafonnet-lib/blob/master/grafonnet/singlestat.libsonnet#L44

像这样的东西应该有效:

本地grafana =导入'grafonnet/grafana.libsonnet';


grafana.仪表板.new(
  “迷你图示例”
)
.addPanel(
  grafana.singlestat.new(
    '正常运行时间',
    格式='s',
    跨度=4,
    valueName='当前',
    SparklineFillColor='rgba(31, 118, 189, 0.18)',
    迷你图全=真,
    SparklineLineColor='rgb(31, 120, 193)',
    火花线显示=真,
  )
  .addTarget(
    grafana.prometheus.target(
      '时间()',
    )
  ), 网格位置={
    x:0,
    y:0,
    宽:24,
    小时:3,
  }
)