无法通过grafana helm图表导入grafana json文件

无法通过grafana helm图表导入grafana json文件,grafana,kubernetes-helm,Grafana,Kubernetes Helm,我正在将helm chart stable/grafana 4.3.0部署到k8s集群上。我正在使用头盔3。从以前的grafana安装中,我导出了仪表板的json,并将其保存为my-dashboard.json。我想让helm负责上传这个文件,所以在my values.yaml中 dashboardProviders: dashboardproviders.yaml: apiVersion: 1 providers: - name: 'default' orgId:

我正在将helm chart stable/grafana 4.3.0部署到k8s集群上。我正在使用头盔3。从以前的grafana安装中,我导出了仪表板的json,并将其保存为my-dashboard.json。我想让helm负责上传这个文件,所以在my values.yaml中

dashboardProviders:
 dashboardproviders.yaml:
   apiVersion: 1
   providers:
   - name: 'default'
     orgId: 1
     folder: ''
     type: file
     disableDeletion: false
     editable: true
     options:
       path: /var/lib/grafana/dashboards
dashboards:
  default:
    my-dashboard:
      file: my-dashboard.json
    prometheus-stats:
      gnetId: 2
      revision: 2
      datasource: Prometheus
我已经将我的普罗米修斯数据源(来自普罗米修斯头盔图表)定义为

datasources:
 datasources.yaml:
   apiVersion: 1
   datasources:
   - name: Prometheus
     type: prometheus
     url: http://my-prometheus-release-server.default.svc.cluster.local
     access: proxy
     isDefault: true
我已经验证了数据源是否正常工作

如果我运行
helm升级我的grafana release stable/grafana--values values.yaml,那么在pod上的日志中它会重复:

t=2020-01-17T21:33:35+0000 lvl=eror msg=“未能从”logger=provisioning.dashboard type=file name=default file=/var/lib/grafana/dashboards/default/my-dashboard.json error=EOF加载仪表板


看到
EOF
让我觉得文件没有上传。我将my-dashboard.json保存在与values.yaml相同的文件夹中,并从该文件夹运行helm命令。我需要把它存放在别的地方吗?我已经搜索了所有文档,但不清楚它是如何上传的。

你把
我的dashboard.json文件放在哪里了?
它应该与
值处于同一级别。yaml

同时检查
grafana仪表板默认值
configmap,它应该包含仪表板。

您将
my dashboard.json文件放在哪里了?
它应该与
值处于同一级别。yaml

还要检查
grafana仪表板默认值
configmap,它应该包含仪表板。

我找到了另一种处理方法

我正在使用Terraform来实现这一点,并将values.yaml作为模板文件。这是values.yaml now中的相关部分:

dashboards:
  default:
    dashbaord1:
      json: |
        ${my-dashboard-1}
    dashboard2:
      json: |
        ${my-dashboard-2}
templatefile块如下所示:

resource "helm_release" "grafana" {
  name       = "grafana-release"
  repository = data.helm_repository.stable.metadata[0].name
  chart      = "grafana"
  version    = "4.3.0"

  values = [
    "${templatefile(
      "${path.module}/values.yaml.tpl",
      {
        my-dashboard-1         = "${indent(8, data.template_file.my-dashboard-1.rendered)}}",
        my-dashboard-2 = "${indent(8, data.template_file.my-dashboard-2.rendered)}}"
      }
    )}"
  ]
}
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-grafana-dashboard
  labels:
     grafana_dashboard: "1"
data:
  my-dashboard.json: |
    {
        "annotations": {
        "list": [
            {
       .....JSON.....
     }

缩进的
非常重要

我找到了另一种处理方法

我正在使用Terraform来实现这一点,并将values.yaml作为模板文件。这是values.yaml now中的相关部分:

dashboards:
  default:
    dashbaord1:
      json: |
        ${my-dashboard-1}
    dashboard2:
      json: |
        ${my-dashboard-2}
templatefile块如下所示:

resource "helm_release" "grafana" {
  name       = "grafana-release"
  repository = data.helm_repository.stable.metadata[0].name
  chart      = "grafana"
  version    = "4.3.0"

  values = [
    "${templatefile(
      "${path.module}/values.yaml.tpl",
      {
        my-dashboard-1         = "${indent(8, data.template_file.my-dashboard-1.rendered)}}",
        my-dashboard-2 = "${indent(8, data.template_file.my-dashboard-2.rendered)}}"
      }
    )}"
  ]
}
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-grafana-dashboard
  labels:
     grafana_dashboard: "1"
data:
  my-dashboard.json: |
    {
        "annotations": {
        "list": [
            {
       .....JSON.....
     }

缩进的
非常重要

对于在这个问题上绊倒的人: 如果您使用grafana helm chart或prometheus operator helm chart安装grafana,添加grafana仪表板的简单方法是在values.yml中设置
sidecar.dashboards.enabled:true
(我建议查看文档了解更多信息)

然后,您可以添加具有以下简单配置映射的仪表板:

resource "helm_release" "grafana" {
  name       = "grafana-release"
  repository = data.helm_repository.stable.metadata[0].name
  chart      = "grafana"
  version    = "4.3.0"

  values = [
    "${templatefile(
      "${path.module}/values.yaml.tpl",
      {
        my-dashboard-1         = "${indent(8, data.template_file.my-dashboard-1.rendered)}}",
        my-dashboard-2 = "${indent(8, data.template_file.my-dashboard-2.rendered)}}"
      }
    )}"
  ]
}
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-grafana-dashboard
  labels:
     grafana_dashboard: "1"
data:
  my-dashboard.json: |
    {
        "annotations": {
        "list": [
            {
       .....JSON.....
     }

对于任何在这一点上绊倒的人: 如果您使用grafana helm chart或prometheus operator helm chart安装grafana,添加grafana仪表板的简单方法是在values.yml中设置
sidecar.dashboards.enabled:true
(我建议查看文档了解更多信息)

然后,您可以添加具有以下简单配置映射的仪表板:

resource "helm_release" "grafana" {
  name       = "grafana-release"
  repository = data.helm_repository.stable.metadata[0].name
  chart      = "grafana"
  version    = "4.3.0"

  values = [
    "${templatefile(
      "${path.module}/values.yaml.tpl",
      {
        my-dashboard-1         = "${indent(8, data.template_file.my-dashboard-1.rendered)}}",
        my-dashboard-2 = "${indent(8, data.template_file.my-dashboard-2.rendered)}}"
      }
    )}"
  ]
}
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-grafana-dashboard
  labels:
     grafana_dashboard: "1"
data:
  my-dashboard.json: |
    {
        "annotations": {
        "list": [
            {
       .....JSON.....
     }

它与values.yaml处于同一级别。仔细阅读并查看图表源代码后,看起来它实际上需要位于图表存储库级别。我找到了另一种处理方法。它与values.yaml处于同一级别。仔细阅读并查看图表源代码后,看起来它实际上需要位于图表存储库级别。我找到了另一种处理方法。