将jsonnet用于grafana仪表板

时间:2020-10-07 03:11:24

标签: grafana prometheus-operator jsonnet

我正在尝试使用grafana仪表板的jsonnet(my-custom-grafana.jsonnet)。我尝试了以下代码。

local grafana = import 'grafonnet/grafana.libsonnet';
local dashboard = grafana.dashboard;
local row = grafana.row;
local prometheus = grafana.prometheus;
local template = grafana.template;
local graphPanel = grafana.graphPanel;local kp = (import 'kube-prometheus/kube-prometheus.libsonnet') + {
  _config+:: {
    namespace: 'monitoring',
  },
  grafana+:: {
    dashboards+:: {
      'cluster-autoscaler-dashboard.json': (import 'grafana-cluster-autoscaler.json'),
  },
  },
};{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +
{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +
{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +
{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }

然后我执行了

jsonnet -J vendor -m manifests "my-custom-grafana.jsonnet" | xargs -I{} sh -c 'cat {} | gojsontoyaml > {}.yaml' -- {}

在执行过程中我没有任何错误,但是我没有看到清单文件中的任何文件都通过此grafana仪表板更新进行了更新。我尝试了使用普罗米修斯规则的相同过程,并且发现manifests / prometheus-rules.yaml得到了更新,我能够部署yaml文件而不会出现问题。 但是使用grafana仪表板我不确定哪个文件会更新以及如何部署。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我通过删除-m清单来完成这项工作。

jsonnet -J vendor my-custom-grafana.jsonnet > grafana-test.json

但是,如果有人可以验证以下步骤,那就太好了。

  1. 自定义grafana仪表板(例如:集群自动缩放器仪表板)已添加到jsonnet文件中。 PFA my-custom-grafana.jsonnet。 注意:import'grafana-cluster-autoscaler.json'-> Configmap“数据”键的值

  2. 下面的命令被执行以编译jsonnet,

 jsonnet -J vendor my-custom-grafana.jsonnet > grafana-test.json
  1. 将json转换为yaml,
cat grafana-test.json|gojsontoyaml > grafana-test.yaml
  1. yaml文件包含所有资源,例如部署,服务,命名空间等。 由于我们拥有Prometheus运营商,因此已经部署了所有资源。 此外,“ grafana-dashboardDefinitions”包含自我们启用以来由grafana部署的所有仪表板 “ defaultDashboardsEnabled:true”

  2. 因此,我仅从grafana-test.yaml中提取了与“ grafana-dashboard-cluster-autoscaler-dashboard”相关的ConfigMap并进行了部署。

Cluster Autoscaler仪表板现已在grafana中提供。