You need to enable JavaScript to run this app.
导航
在容器服务集群中部署 Grafana 并接入工作区
最近更新时间:2024.06.19 17:30:35首次发布时间:2022.07.13 17:51:21

Grafana 是一个跨平台的开源的度量分析和可视化工具,支持将采集的数据进行可视化查询和展示。本文为您介绍如何在集群中搭建 Grafana 并对接工作区。

背景信息

您可以在容器服务 VKE 集群中使用开源镜像或部署脚本搭建 Grafana,两者的主要区别如下。

部署方式认证方式数据接入说明
开源镜像BasicAuth未接入工作区,需要手动接入。支持灵活的版本选择,建议在大多数场景下使用。
部署脚本BasicAuth、火山引擎 AK/SK已接入工作区。支持灵活的认证方式,当需要使用 AK/SK 认证时首选。

前提条件

  • 已创建托管 Prometheus 工作区,并开启 BasicAuth 认证,详情请参见 创建工作区
  • 已创建容器服务集群,并绑定托管 Prometheus 工作区,详情请参见 容器服务接入
  • 已通过 kubectl 连接目标集群。详情请参见 连接集群
  • 使用脚本部署 Grafana 时,需要使用本地环境(Linux/Mac)中的 wget、echo、curl 和 sed 工具,请保证您的系统中已经正确安装上述命令行工具。

操作步骤

说明

本文仅简单介绍了在容器服务集群中部署 Grafana 的方法,未涉及高可用性配置。如有高可用性需求,需要使用外部的数据库(MySQL 或 Postgres)代替 Grafana 自带的嵌入式 sqlite3 数据库。详情请参见 官方文档

步骤一:使用开源镜像搭建 Grafana

  1. 登录 容器服务控制台
  2. 在顶部导航栏,选择您业务所在地域。
  3. 在左侧导航栏单击 集群,单击目标集群名称,进入集群控制台。
  4. 在左侧导航栏中,选择 工作负载 > 对象浏览器。 单击 使用 Yaml 创建,创建存储类。
    • 在 类型 下拉菜单中选择 自定义
    • 在 Yaml 配置框内输入 Yaml 配置。
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-essd
parameters:
  ChargeType: PostPaid
  type: ESSD_PL0     # 云盘类型,云盘的名称必须大写
  zone: cn-beijing-a # 云盘可用区
provisioner: ebs.csi.volcengine.com
reclaimPolicy: Delete # 回收策略
volumeBindingMode: Immediate  # 存储卷绑定模式
  1. 在左侧导航栏中,选择 工作负载 > 对象浏览器。 单击 使用 Yaml 创建,创建存储卷声明。
    • 在 类型 下拉菜单中选择 自定义
    • 在 Yaml 配置框内输入 Yaml 配置。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-pvc
  namespace: volcano-metrics
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi # 存储容量
  storageClassName: ebs-essd  # 已创建的存储类名称
  volumeMode: Filesystem
  1. 在左侧导航栏中,选择 工作负载 > 无状态负载,单击 使用 Yaml 创建,创建 Grafana 工作负载。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: grafana-demo # Grafana 实例名称
  namespace: volcano-metrics # Grafana 实例名称所在的命名空间
spec: 
  replicas: 1 # Grafana 实例的副本数。由于本例中使用 PVC 来实现持久化配置,因此这里只能是单副本
  selector: 
    matchLabels: 
      app: grafana
  template: 
    metadata: 
      labels: 
        app: grafana
    spec:
      securityContext:
        fsGroup: 472
        supplementalGroups:
          - 0
      containers:
      - name: grafana # 容器名称
        image: grafana/grafana:latest # 使用 Docker Hub 中的开源镜像和最新版本
        ports:
        - containerPort: 3000 # 容器开放的端口号
        resources:
          requests:  # 指定最小资源需求
            cpu: "250m"      
            memory: "750Mi"
          limits:  # 指定资源上限
            cpu: "1"      
            memory: "2Gi"
        volumeMounts: # 挂载存储卷
        - name: grafana-pv
          mountPath: /var/lib/grafana
      volumes:
        - name: grafana-pv # 添加存储卷
          persistentVolumeClaim:
            claimName: grafana-pvc 
  1. 在左侧导航栏中,选择 服务与路由 > 服务,单击 使用 Yaml 创建,创建 Grafana 服务。
apiVersion: v1
kind: Service
metadata:
  name: grafana # 服务的名称
  namespace: volcano-metrics # 服务所在的命名空间
spec:
  selector:
    app: grafana # 通过标签选择器将服务与后端容器组(Pod)绑定
  ports:
  - name: rule # 端口映射规则名称
    protocol: TCP # 服务协议
    port: 3000 # 服务端口
    targetPort: 3000 # 容器端口,即工作负载对外开放的端口
  type: ClusterIP # 服务的类型

步骤二:接入工作区数据源

  1. 执行以下命令,配置 Grafana 端口映射。
kubectl port-forward service/grafana 3000:3000 -n volcano-metrics
  1. 在本地环境(Linux/Mac)中打开浏览器,在地址栏中输入 localhost:3000,进入 Grafana 登录界面,使用默认用户名admin和密码admin登录。
  2. 在左侧导航栏中,选择 Connection > Data Sources
    alt
  3. 单击 Add data source,创建新的数据源。
    alt
  4. 在 Add data source 页面中,单击 Prometheus
    alt
  5. 在 HTTP 配置项中,URL 字段处,粘贴工作区的 Query URL 地址。
    alt
  6. 在 Auth 配置项中,开启 Basic auth 认证,并在 Basic Auth Details 配置项中,配置工作区认证使用的用户名和密码。
    alt
  7. 单击页面底部的 Save & Test,系统显示 Successfully queried the Prometheus API,表示工作区已经正确接入 Grafana。
    alt

步骤三:创建大盘

  1. 在左侧导航栏中,选择 Dashboards
    alt
  2. 单击 New,创建或导入观测大盘。
    alt

步骤四:查看大盘

  1. 在左侧导航栏中,选择 Dashboards
  2. 单击进入已经创建的大盘,可以查看到正确的监控信息。
    alt

其他

使用部署脚本部署 Grafana

默认规格

使用脚本部署 Grafana 时,默认的实例规格如下表所示。

实例名称默认 CPU 请求值默认内存请求值默认 CPU 上限值默认内存上限值
grafana0.2 Core512 MiB1 Core1 GiB

部署 Grafana(默认配置)

注意

使用脚本部署的 Grafana 不支持修改或添加认证方式,请您部署前明确使用 AK/SK 认证或者 Baisc Auth 认证。如果部署后需要修改认证方式,需要首先删除已部署的 Grafana,并使用新的认证方式重新部署。详情请参见 使用部署脚本删除 Grafana

您可以使用部署脚本,快速部署 Grafana。当采用默认配置部署时,操作步骤如下:

  1. 在本地环境中下载脚本,详情请参见 获取脚本
  2. 使用 kubectl 正确连接集群。
  3. 执行以下命令,部署 Grafana。
./install.sh install-grafana \
--region cn-beijing \ # 托管 Prometheus 工作区所在地域
--namespace volcano-metrics \ # 部署 Grafana 的命名空间
--query-url http://query.prometheus-cn-beijing.ivolces.com/workspaces/xxx \ # 托管 Prometheus 工作区的 Query URL 地址
--access-key TDOSNQG*** \ # 火山引擎账号的 AK
--secret-key YvT3ing*** # 火山引擎账号的 SK

说明

本文以 AK/SK 认证为示例,如果您需要使用 Basic Auth 认证,需要将--access-key--secret-key参数修改为--basic-auth-username--basic-auth-password,详情请参见 部署脚本使用帮助

部署 Grafana(挂载 PVC)

您可以在 Grafana 中挂载 PVC ,实现永久存储。操作步骤如下:

  1. 在本地环境中下载脚本,详情请参见 获取脚本
  2. 使用 kubectl 正确连接集群。
  3. 执行以下命令,部署 Grafana 并挂载 PVC。
./install.sh install-grafana \
--region cn-beijing \ # 托管 Prometheus 工作区所在地域
--namespace volcano-metrics \ # 部署 Grafana 的命名空间
--query-url http://query.prometheus-cn-beijing.ivolces.com/workspaces/xxx \ # 托管 Prometheus 工作区的 Query URL 地址
--access-key TDOSNQG*** \ # 火山引擎账号的 AK
--secret-key YvT3ing*** # 火山引擎账号的 SK
--storage-class ebs-ssd \ # 挂载存储卷(SC)的类型
--grafana-pvc-capacity 20Gi # 挂载存储卷声明(PVC)的大小

说明

本文以 AK/SK 认证为示例,如果您需要使用 Basic Auth 认证,需要将--access-key--secret-key参数修改为--basic-auth-username--basic-auth-password,详情请参见 部署脚本使用帮助

使用部署脚本删除 Grafana

当 Grafana 的配置错误或不符合要求时,可以使用脚本删除已部署的 Grafana。

  1. 使用 kubectl 正确连接集群。
  2. 执行以下命令,删除已部署的 Grafana。
./install.sh uninstall-grafana \
--region cn-beijing # 托管 Prometheus 工作区所在地域

部署脚本使用帮助

您可以通过安装脚本的 --help 参数,查看脚本中所有的预定义字段和含义。

./install.sh install-grafana --help

安装脚本中不同字段的含义和示例如下。

$ ./install.sh install-grafana --help
install grafana

Usage: install.sh install-grafana [flag...]

Flag:
  {{flag}} {{current val if exist}}
  --query-url http://query.prometheus-cn-beijing.com/workspace/xxx
  --basic-auth-username username-demo
  --basic-auth-password password-demo
  --access-key TDOSNQG***
  --secret-key YvT3ing***
  --region cn-beijing
  --exec-script-env local
  --rendering-only
  --namespace volcano-metrics
  --storage-class ebs-ssd
  --grafana-pvc-capacity 20Gi
参数说明
--query-url工作区的 Query 地址,详情请参见 获取 Remote Write 和 Query 地址
--basic-auth-username工作区 Basic Auth 认证模式下的认证用户名。
--basic-auth-password工作区 Basic Auth 认证模式下的认证密码。
--access-key工作区 AK/SK 认证模式下使用的 AccessKey ID。
--secret-key工作区 AK/SK 认证模式下使用的 AccessKey Secret。
--region工作区所在地域,例如:cn-beijing。

--exec-script-env

部署脚本执行环境,包括:

  • local: 本地环境。表示您在本地环境中执行该脚本。
  • public-cloud-vpc:VPC 环境。表示您在 VPC 环境中执行该脚本。
--rendering-only仅查看 Grafana 安装清单,不实际安装。
--namespace部署 Grafana 的命名空间。如果您未配置该参数,则缺省部署在 volcano-metrics 命名空间中。
--storage-classGrafana 挂载的 PVC 类型。
--grafana-pvc-capacityGrafana 挂载的 PVC 容量大小。整数形式,单位为 Gi。例如:20Gi 表示挂载的存储大小为 20GB。