如何为数据源创建grafana configmap?

dwl*_*ian 5 grafana kubernetes prometheus prometheus-operator

我正在尝试使用 Kube-Prometheus-Stack helm chart https://github.com/prometheus-community/helm-charts/tree/main/charts/kube- 中的 Grafana 实例为 Grafana 数据源创建一个配置映射普罗米修斯堆栈

我知道仪表板,您可以使用此答案中列出的命令从 json 文件创建配置映射stable/prometheus-operator - 添加持久性 grafana 仪表板

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
Run Code Online (Sandbox Code Playgroud)

可以为 grafana 数据源做类似的事情吗?我目前有一个 datasource.yaml,其中包含以下几行:

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
Run Code Online (Sandbox Code Playgroud)

但是,我无法使用它导入数据源,即使它创建了一个配置映射。

小智 7

要通过 grafana 服务器组件加载数据,您需要在元数据字段中进行设置grafana_datasource: "1"

对于配置映射:

apiVersion: v1
kind: ConfigMap
metadata:
  name: example-grafana-datasource
  labels:
     grafana_datasource: "1"
     namespace: monitoring
data:
  datasource.yaml: |-
    apiVersion: 1
    datasources:
    - access: proxy
      basicAuth: false
      editable: false
      isDefault: false
      jsonData:
        authType: credentials
        defaultRegion: us-west-2
      name: CloudWatch
      type: cloudwatch
Run Code Online (Sandbox Code Playgroud)

对于具有相同标签的秘密

apiVersion: v1
kind: Secret
metadata:
  name: influx-grafana-datasource
  labels:
     grafana_datasource: "1"
     namespace: monitoring
type: Opaque
stringData:
  influxdatasource.yaml: |-
    # config file version
    apiVersion: 1
    datasources:
      - name: influxdb
        type: influxdb
        access: proxy
        database: metrics_db
        user: metrics_read_user
        url: http://influx.example.com:8086/
        jsonData:
          timeInterval: "15s"
        secureJsonData:
          password: yourinfluxpassword
Run Code Online (Sandbox Code Playgroud)


Fel*_*ipe 5

我有一个ConfigMapfor grafana withe prometheus 数据源,可以抓取 Flink 任务管理器。该文件(https://github.com/felipegutierrez/explore-flink/blob/master/k8s/grafana-configuration-configmap.yaml)太大,无法粘贴到此处,但主要部分如下。

\n
apiVersion: v1\nkind: ConfigMap\nmetadata:\n\xc2\xa0 name: grafana-config\n\xc2\xa0 namespace: kafka\n\xc2\xa0 labels:\n\xc2\xa0\xc2\xa0\xc2\xa0 app: flink\ndata:\n\xc2\xa0 grafana.ini: |+ ...\n\xc2\xa0 dashboards.yml: |+\n    apiVersion: 1\n database\n    deleteDatasources:\n      - name: Prometheus\n        orgId: 1\n    datasources:\n      - name: Prometheus\n        type: prometheus\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 access: proxy\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 orgId: 1\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 url: http://prometheus-service:9090\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 password:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 user:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 database:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 basicAuth: false\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 basicAuthUser:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 basicAuthPassword:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 withCredentials:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 isDefault: true\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 jsonData:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 graphiteVersion: "1.1"\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 tlsAuth: false\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 tlsAuthWithCACert: false\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 secureJsonData:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 tlsCACert: "..."\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 tlsClientCert: "..."\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 tlsClientKey: "..."\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 version: 1\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 editable: true\n\xc2\xa0 dashboard.json: |+\n\xc2\xa0\xc2\xa0\xc2\xa0 {...}\n
Run Code Online (Sandbox Code Playgroud)\n

完成ConfigMap设置后,您可以在 grafana pod 中调用它,如下所示:

\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n\xc2\xa0 name: grafana-deployment\n\xc2\xa0 namespace: kafka\nspec:\n\xc2\xa0 replicas: 1\n\xc2\xa0 selector:\n\xc2\xa0\xc2\xa0\xc2\xa0 matchLabels:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 app: flink\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 component: grafana\n\xc2\xa0 template:\n\xc2\xa0\xc2\xa0\xc2\xa0 metadata:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 labels:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 app: flink\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 component: grafana\n\xc2\xa0\xc2\xa0\xc2\xa0 spec:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 volumes:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 - name: grafana-config-volume\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 configMap:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 name: grafana-config\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 items:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 - key: grafana.ini\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 path: grafana.ini\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 - key: datasource.yml\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 path: provisioning/datasources/datasource.yml\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 - key: dashboards.yml\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 path: provisioning/dashboards/dashboards.yml\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 - key: dashboard.json\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 path: dashboard.json\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 containers:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 - name: grafana\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 image: grafana/grafana\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 imagePullPolicy: IfNotPresent # Always\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 ports:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 - containerPort: 3000\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 name: http\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 volumeMounts:\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 - name: grafana-config-volume\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 mountPath: /etc/grafana/\n
Run Code Online (Sandbox Code Playgroud)\n

完整的示例工作在这里:https://github.com/felipegutierrez/explore-flink/blob/master/k8s/grafana-deployment.yaml

\n