菜单
文档breadcrumb arrow Grafana 文档breadcrumb arrow 设置breadcrumb arrow 安装 Grafanabreadcrumb arrow 使用 Helm Charts 部署 Grafana
开源

使用 Helm Charts 部署 Grafana

本主题包含使用 Helm Charts 在 Kubernetes 上安装和运行 Grafana 的说明。

Helm 是一个用于管理 Kubernetes 应用程序的开源命令行工具。它是 CNCF Landscape 中的一个毕业项目。

注意

Grafana 开源社区提供了用于在 Kubernetes 上运行 Grafana 的 Helm Charts。请注意,代码不提供任何保证。如果遇到任何问题,可以向官方 GitHub 仓库报告。

观看此视频了解如何使用 Helm Charts 安装 Grafana

开始之前

要使用 Helm 安装 Grafana,请确保已完成以下事项

  • 在您的机器上安装 Kubernetes 服务器。有关安装 Kubernetes 的信息,请参阅 安装 Kubernetes
  • 安装 Helm 的最新稳定版本。有关安装 Helm 的信息,请参阅 安装 Helm

使用 Helm 安装 Grafana

使用 Helm 安装 Grafana 时,您将完成以下任务

  1. 设置 Grafana Helm 仓库,它提供了一个安装 Grafana 的空间。

  2. 使用 Helm 部署 Grafana,这将把 Grafana 安装到命名空间中。

  3. 访问 Grafana,提供登录 Grafana 的步骤。

设置 Grafana Helm 仓库

为了设置 Grafana Helm 仓库以便在您的机器上下载正确的 Grafana Helm charts,请完成以下步骤

  1. 要添加 Grafana 仓库,请使用以下命令语法

    helm repo add <DESIRED-NAME> <HELM-REPO-URL>

    以下示例添加 `grafana` Helm 仓库。

    bash
    helm repo add grafana https://grafana.github.io/helm-charts
  2. 运行以下命令验证仓库是否已添加

    bash
    helm repo list

    添加仓库后,您应该会看到类似以下的输出

    bash
    NAME    URL
    grafana https://grafana.github.io/helm-charts
  3. 运行以下命令更新仓库以下载最新的 Grafana Helm charts

    bash
    helm repo update

部署 Grafana Helm charts

设置好 Grafana Helm 仓库后,您就可以开始在 Kubernetes 集群上部署它了。

部署 Grafana Helm charts 时,请使用单独的命名空间,而不是依赖默认命名空间。默认命名空间可能已经运行着其他应用程序,这可能导致冲突和其他潜在问题。

在 Kubernetes 中创建新的命名空间,可以更好地组织、分配和管理集群资源。更多信息请参阅 命名空间

  1. 要创建命名空间,请运行以下命令

    bash
    kubectl create namespace monitoring

    您将看到类似以下的输出,这意味着命名空间已成功创建

    bash
    namespace/monitoring created
  2. 使用以下命令搜索官方 `grafana/grafana` 仓库

    helm search repo <repo-name/package-name>

    例如,以下命令提供 Grafana Helm Charts 列表,您将从中安装最新版本的 Grafana chart。

    bash
    helm search repo grafana/grafana
  3. 运行以下命令将 Grafana Helm Chart 部署到您的命名空间中。

    bash
    helm install my-grafana grafana/grafana --namespace monitoring

    其中

    • helm install: 通过在 Kubernetes 集群上部署来安装 chart
    • my-grafana: 您提供的逻辑 chart 名称
    • grafana/grafana: 要安装的仓库和包名称
    • --namespace: 您希望部署 chart 的 Kubernetes 命名空间(例如 monitoring
  4. 要验证部署状态,请运行以下命令并检查 STATUS 列中是否显示 deployed

    bash
    helm list -n monitoring

    您应该会看到类似以下的输出

    bash
    NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART          APP VERSION
    my-grafana      monitoring      1               2024-01-13 23:06:42.737989554 +0000 UTC deployed        grafana-6.59.0 10.1.0
  5. 要检查命名空间中所有对象的整体状态,请运行以下命令

    bash
    kubectl get all -n monitoring

    如果在 STATUS 列中遇到错误或警告,请检查日志并参阅本文档的故障排除部分。

访问 Grafana

本节介绍通过网页浏览器访问 Grafana 所需完成的步骤。

  1. 运行以下 helm get notes 命令

    bash
    helm get notes my-grafana -n monitoring

    此命令将打印出 chart 说明。您将看到 NOTES 输出,其中提供了完整的说明,包括

    • 如何解码 Grafana 管理员账户的登录密码
    • 通过网页浏览器访问 Grafana 服务
  2. 要获取 Grafana 管理员密码,请运行以下命令

    bash
    kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

    它将给您一个解码后的 base64 字符串输出,这是管理员账户的密码。

  3. 将解码后的密码保存到您机器上的文件中。

  4. 要通过网页浏览器访问 Grafana 服务,请运行以下命令

    bash
    export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=my-grafana" -o jsonpath="{.items[0].metadata.name}")

    上述命令将导出一个名为 POD_NAME 的 shell 变量,该变量将保存已部署 pod 的完整名称。

  5. 运行以下端口转发命令将 Grafana pod 转发到监听端口 3000

    bash
    kubectl --namespace monitoring port-forward $POD_NAME 3000

    有关端口转发的更多信息,请参阅 使用端口转发访问集群中的应用程序

  6. 在浏览器中导航到 127.0.0.1:3000

  7. Grafana 登录页面出现。

  8. 要登录,用户名输入 admin

  9. 密码请粘贴您之前解码后保存到文件中的内容。

自定义 Grafana 默认配置

Helm 是一个流行的 Kubernetes 包管理器。它将 Kubernetes 资源清单打包以便在不同环境中重复使用。这些清单使用模板语言编写,允许您通过 values.yaml 文件或使用 Helm 内联提供配置值,以替换清单中应包含这些配置的占位符。

values.yaml 文件允许您通过为各种参数指定值(如镜像版本、资源限制、服务配置等)来自定义 chart 的配置。

通过修改 values.yaml 文件中的值,您可以使用 `helm install` 或 `upgrade` 命令根据您的特定要求调整 Helm chart 的部署。有关配置 Helm 的更多信息,请参阅 值文件

下载 values.yaml 文件

为了进行任何配置更改,请从 Grafana Helm Charts 仓库下载 values.yaml 文件

https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml

注意

根据您的用例需求,您可以使用包含配置更改的单个 YAML 文件,或者创建多个 YAML 文件。

默认情况下,持久存储是禁用的,这意味着 Grafana 使用临时存储,所有数据将存储在容器的文件系统中。如果容器停止、重启或崩溃,这些数据将丢失。

强烈建议您在 Grafana Helm charts 中启用持久存储,以确保您的数据在容器重启或故障时不会丢失。

在 Grafana Helm charts 中启用持久存储可确保在生产环境中运行 Grafana 的可靠解决方案。

要在 Grafana Helm charts 中启用持久存储,请完成以下步骤

  1. 在您喜欢的编辑器中打开 values.yaml 文件。

  2. 编辑值并在 persistence 部分下,将 enable 标志从 false 更改为 true

    yaml
    .......
    ............
    ......
    persistence:
      type: pvc
      enabled: true
      # storageClassName: default
    .......
    ............
    ......
  3. 运行以下 `helm upgrade` 命令并指定 values.yaml 文件以使更改生效

    bash
    helm upgrade my-grafana grafana/grafana -f values.yaml -n monitoring

PVC 现在将存储您的所有数据,例如面板、数据源等。

安装插件(例如 Zabbix 应用、时钟面板等)

您可以从官方和社区插件页面在 Grafana 中安装插件。这些插件允许您添加新的可视化类型、数据源和应用程序,以帮助您更好地可视化您的数据。

Grafana 目前支持三种类型的插件:面板、数据源和应用。有关管理插件的更多信息,请参阅 插件管理

要在 Grafana Helm Charts 中安装插件,请完成以下步骤

  1. 在您喜欢的编辑器中打开 values.yaml 文件。

  2. 找到 plugins: 这一行,并在该部分下定义您要安装的插件。

    yaml
    .......
    ............
    ......
    plugins:
    # here we are installing two plugins, make sure to keep the indentation correct as written here.
    
    - alexanderzobnin-zabbix-app
    - grafana-clock-panel
    .......
    ............
    ......
  3. 保存更改并使用 `helm upgrade` 命令安装这些插件

    bash
    helm upgrade my-grafana grafana/grafana -f values.yaml -n monitoring
  4. 在浏览器中导航到 127.0.0.1:3000

  5. Grafana 登录页面出现时,使用管理员凭据登录。

  6. 导航到 UI -> 管理 -> 插件

  7. 搜索上述插件,它们应该被标记为已安装。

配置私有 CA(证书颁发机构)

在许多企业网络中,TLS 证书由私有证书颁发机构颁发,并且默认不受信任(使用提供的操作系统信任链)。

如果您的 Grafana 实例需要与暴露由这些私有 CA 颁发的证书的服务交互,则需要确保 Grafana 信任根证书。

您可能需要配置此项,如果

  • 您的插件需要连接到其他自托管系统。例如,如果您安装了 Grafana Enterprise Metrics、Logs 或 Traces (GEM, GEL, GET) 插件,并且您的 GEM (或 GEL/GET) 集群正在使用私有证书。
  • 希望连接到使用私有证书在 HTTPS 上监听的数据源。
  • 正在使用后端数据库进行持久化,或使用私有证书进行传输中加密的缓存服务。

在某些情况下,您可以在 Grafana 内部指定自签名证书(例如在某些数据源中),或选择跳过 TLS 证书验证(除非绝对必要,否则不推荐)。

一个简单的解决方案,应该适用于您的整个实例(插件、数据源和后端连接),就是将您的自签名 CA 证书添加到您的 Kubernetes 部署中。

  1. 创建包含证书的 ConfigMap,并将其部署到您的 Kubernetes 集群

    yaml
    # grafana-ca-configmap.yaml
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: grafana-ca-cert
    data:
      ca.pem: |
        -----BEGIN CERTIFICATE-----
        (rest of the CA cert)
        -----END CERTIFICATE-----
    bash
    kubectl apply --filename grafana-ca-configmap.yaml --namespace monitoring
  2. 在您喜欢的编辑器中打开 Helm `values.yaml` 文件。

  3. 找到 extraConfigmapMounts: 这一行,并在该部分下,指定您要挂载的额外 ConfigMap。

    yaml
    .......
    ............
    ......
    extraConfigmapMounts:
       - name: ca-certs-configmap
         mountPath: /etc/ssl/certs/ca.pem
         subPath: ca.pem
         configMap: grafana-ca-cert
         readOnly: true
    .......
    ............
    ......
  4. 保存更改并使用 `helm upgrade` 命令更新您的 Grafana 部署并挂载新的 ConfigMap

    bash
    helm upgrade my-grafana grafana/grafana --values values.yaml --namespace monitoring

故障排除

故障排除

收集日志

在排查任何问题时,查看 Grafana 服务器日志非常重要。

要查看 Grafana 日志,请运行以下命令

bash
# dump Pod logs for a Deployment (single-container case)

kubectl logs --namespace=monitoring deploy/my-grafana

如果部署中有多个容器正在运行,请运行以下命令仅获取 Grafana 部署的日志

bash
# dump Pod logs for a Deployment (multi-container case)

kubectl logs --namespace=monitoring deploy/grafana -c my-grafana

有关访问 Kubernetes 应用程序日志的更多信息,请参阅 PodsDeployments

增加日志级别

默认情况下,Grafana 的日志级别设置为 `info`,但您可以将其提高到 `debug` 模式以获取诊断和排除问题所需的信息。有关 Grafana 日志级别的更多信息,请参阅 配置日志

要将日志级别提高到 `debug` 模式,请使用以下步骤

  1. 在您喜欢的编辑器中打开 values.yaml 文件,搜索字符串 `grafana.ini`,您会在其中找到关于日志模式的部分。

  2. mode: console 行下方添加 level: debug

    yaml
    # This is the values.yaml file
       .....
    .......
    ....
    grafana.ini:
    paths:
       data: /var/lib/grafana/
       .....
    .......
    ....
       mode: console
       level: debug

    确保保持相同的缩进级别,否则将无法工作。

  3. 现在要应用此更改,请运行以下 `helm upgrade` 命令

    bash
    helm upgrade my-grafana grafana/grafana -f values.yaml -n monitoring
  4. 要验证它,请使用提供的 IP:Port 在浏览器中访问 Grafana UI。Grafana 登录页面出现。

  5. 要登录 Grafana,用户名输入 admin,密码粘贴您之前解码后保存到文件中的内容。导航到 服务器管理 > 设置,然后搜索 log。您应该看到级别已设为 debug 模式。

重置 Grafana 管理员密钥(登录凭据)

默认情况下,超级管理员账户的登录凭据通过 `secrets` 生成。然而,这可以轻松更改。要实现此目的,请使用以下步骤

  1. 编辑 values.yaml 文件并搜索字符串 `adminPassword`。您可以在此处定义新密码

    yaml
    # Administrator credentials when not using an existing secret (see below)
    adminUser: admin
    adminPassword: admin
  2. 然后按如下方式使用 `helm upgrade` 命令

    bash
    helm upgrade my-grafana grafana/grafana -f values.yaml -n monitoring

    此命令现在将把您的超级管理员登录凭据(用户名和密码)都设为 admin

  3. 要验证它,请登录 Grafana,用户名和密码都输入 admin。您应该能够以超级管理员身份登录。

卸载 Grafana 部署

要卸载 Grafana 部署,请运行以下命令

helm uninstall <RELEASE-NAME> <NAMESPACE-NAME>

bash
helm uninstall my-grafana -n monitoring

这将删除给定命名空间 monitoring 中的所有对象。

如果您想删除命名空间 monitoring,请运行以下命令

bash
kubectl delete namespace monitoring