0

我正在为 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 仪表板更新进行了更新。我尝试了使用 prometheus 规则的相同过程,我发现 manifests/prometheus-rules.yaml 得到了更新,我能够部署 yaml 文件没有问题。但是对于 grafana 仪表板,我不确定哪个文件得到更新以及如何部署它。有人可以帮忙吗?

4

1 回答 1

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 "data" 键的值

  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 中可用。

于 2020-10-07T23:56:22.733 回答