stable/prometheus-operator - 添加持久的 grafana 仪表板

Posted

技术标签:

【中文标题】stable/prometheus-operator - 添加持久的 grafana 仪表板【英文标题】:stable/prometheus-operator - adding persistent grafana dashboards 【发布时间】:2019-12-10 19:38:40 【问题描述】:

我正在尝试将新仪表板添加到下面的舵图

https://github.com/helm/charts/tree/master/stable/prometheus-operator

文档不是很清楚。

我已向名称空间添加了一个配置映射,如下所示 -

apiVersion: v1
kind: ConfigMap
metadata:
  name: sample-grafana-dashboard
  namespace: monitoring
  labels:
     grafana_dashboard: "1"
data:
  etcd-dashboard.json: |-
JSON

根据文档,这应该只是“拾取”并添加,但事实并非如此。 https://github.com/helm/charts/tree/master/stable/grafana#configuration

我的 values.yaml 中的 sidecar 选项看起来像 -

grafana:
  enabled: true

  ## Deploy default dashboards.
  ##
  defaultDashboardsEnabled: true

  adminPassword: password

  ingress:
    ## If true, Grafana Ingress will be created
    ##
    enabled: false

    ## Annotations for Grafana Ingress
    ##
    annotations: 
      # kubernetes.io/ingress.class: nginx
      # kubernetes.io/tls-acme: "true"

    ## Labels to be added to the Ingress
    ##
    labels: 

    ## Hostnames.
    ## Must be provided if Ingress is enable.
    ##
    # hosts:
    #   - grafana.domain.com
    hosts: []

    ## Path for grafana ingress
    path: /

    ## TLS configuration for grafana Ingress
    ## Secret must be manually created in the namespace
    ##
    tls: []
    # - secretName: grafana-general-tls
    #   hosts:
    #   - grafana.example.com
  #dashboardsConfigMaps:
    #sidecarProvider: sample-grafana-dashboard
  sidecar:
    dashboards:
      enabled: true
      label: grafana_dashboard

我也尝试将其添加到 value.yml

dashboardsConfigMaps:
   - sample-grafana-dashboard

哪个,不起作用。

有没有人有任何经验将您自己的仪表板添加到此掌舵图表中,因为我真的束手无策。

【问题讨论】:

请添加您的 helm 命令 helm install stable/prometheus-operator --name prometheus-operator -f values.yml --namespace monitoring 是您的sidecar 块在grafana 下吗? 是的,已编辑主帖,以便您查看。根据文档,如果它被标记为 grafana_dashboard,它应该只拾取配置映射 - 似乎没有发生。 好的,现在神奇地开始工作了 【参考方案1】:

总结一下: 对于sidecar,您只需将一个选项设置为true - grafana.sidecar.dashboards.enabled

    安装 prometheus-operator 女巫侧卡已启用:

helm install stable/prometheus-operator --name prometheus-operator --set grafana.sidecar.dashboards.enabled=true --namespace monitoring

    添加新仪表板,例如 MongoDB_Overview:
wget https://raw.githubusercontent.com/percona/grafana-dashboards/master/dashboards/MongoDB_Overview.json
kubectl -n monitoring create cm grafana-mongodb-overview --from-file=MongoDB_Overview.json
    现在是棘手的部分,您必须为您的 configmap,默认设​​置grafana.sidecar.dashboards.label 转至grafana_dashboard,所以:
kubectl -n monitoring label cm grafana-mongodb-overview grafana_dashboard=mongodb-overview

现在你应该在 grafana 中找到你新添加的仪表板,而且每个带有标签 grafana_dashboard 的 confimap 都将作为仪表板处理。

仪表板是持久且安全的,存储在 configmap 中。

更新:

2021 年 1 月

Prometheus operator chart 从 stable repo 迁移到 Prometheus Community Kubernetes Helm Charts 并发布了 helm v3:

    创建命名空间:
kubectl create namespace monitoring
    从 helm chart 安装 prometheus-operator:
helm install prometheus-operator prometheus-community/kube-prometheus-stack --namespace monitoring
    以添加 Mongodb 仪表盘为例
wget https://raw.githubusercontent.com/percona/grafana-dashboards/master/dashboards/MongoDB_Overview.json
kubectl -n monitoring create cm grafana-mongodb-overview --from-file=MongoDB_Overview.json
    最后,为仪表板添加标签:
kubectl -n monitoring label cm grafana-mongodb-overview grafana_dashboard=mongodb-overview

【讨论】:

这应该是选择的答案^ 仪表板配置图是否必须驻留在相同的命名空间(监控)中才能让 Grafana 获取它?如果是这样,是否可以将 Grafana 配置为扫描其他命名空间以获取仪表板配置映射? 1.自 2021 年 1 月起,grafana.sidecar.dashboards.enabled=true 默认激活。可以通过helm show values prometheus-community/kube-prometheus-stack | less查看,搜索grafana 2。grafana sidecar需要多长时间才能拿到添加的ConfigMap?我等了几分钟 - 新的仪表板没有出现。然后我杀死了吊舱,我的仪表板出现了。您是否应该手动重新启动 grafana pod 以显示新的仪表板?【参考方案2】:

你必须:

将仪表板 json 定义为 configmap(正如您所做的那样,但请参阅下文以获得更简单的方法) 定义一个提供者:告诉在哪里加载仪表板 将两者映射在一起

来自 values.yml:

  dashboardsConfigMaps:
    application: application
  dashboardProviders:
    dashboardproviders.yaml:
      apiVersion: 1
      providers:
        - name: application
          orgId: 1
          folder: "Application Metrics"
          type: file
          disableDeletion: true
          editable: false
          options:
            path: /var/lib/grafana/dashboards/application

现在应用程序配置映射应该在 pod 的这个目录中创建文件,并且正如已经讨论的那样,sidecar 应该将它们加载到应用程序指标文件夹中,在 GUI 中可以看到。

这可能会以书面形式回答您的问题,但只要您的仪表板使用 kustonmise 不太大,这意味着您可以将 json 放在磁盘上,而无需将 json 包含在另一个文件中:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
# May choose to enable this if need to refer to configmaps outside of kustomize
generatorOptions:
  disableNameSuffixHash: true

namespace: monitoring

configMapGenerator:
- name: application
  files:
    - grafana-dashboards/application/api01.json
    - grafana-dashboards/application/api02.json

为了完整起见,您还可以从 url 或 Grafana 站点加载仪表板,尽管我不相信在同一文件夹中混合方法有效。

所以:

  dashboards:
    kafka:
      kafka01:
        url: https://raw.githubusercontent.com/kudobuilder/operators/master/repository/kafka/docs/latest/resources/grafana-dashboard.json
        folder: "KUDO Kafka"
        datasource: Prometheus
    nginx:
      nginx1:
        gnetId: 9614
        datasource: Prometheus
  dashboardProviders:
    dashboardproviders.yaml:
      apiVersion: 1
      providers:
        - name: kafka
          orgId: 1
          folder: "KUDO Kafka"
          type: file
          disableDeletion: true
          editable: false
          options:
            path: /var/lib/grafana/dashboards/kafka
        - name: nginx
          orgId: 1
          folder: Nginx
          type: file
          disableDeletion: true
          editable: false
          options:
            path: /var/lib/grafana/dashboards/nginx

创建两个新文件夹,每个文件夹都包含一个仪表板,来自外部资源,或者您将其指向您的 git 存储库,您将仪表板提交与部署分离。

【讨论】:

dashboardsConfigMaps: 是否支持通配符?例如:dashboardsConfigMaps: application: *-application 【参考方案3】:

如果您不更改掌舵图中的设置。 grafana 的默认用户/密码是: 用户:管理员 密码:prom-operator

【讨论】:

感谢您的建议,但 OP 正在寻找一种通过 Helm 版本静态添加 Dashboard 的方法。

以上是关于stable/prometheus-operator - 添加持久的 grafana 仪表板的主要内容,如果未能解决你的问题,请参考以下文章