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 仪表板的主要内容,如果未能解决你的问题,请参考以下文章