监控面板管理

目录

功能概述

平台提供强大的面板管理功能,旨在替代传统的 Grafana 工具,为用户带来更全面灵活的监控体验。该功能汇聚平台内的各类监控数据,呈现统一的监控视图,显著提升您的配置效率。

主要功能

  • 支持为业务视图和平台视图配置自定义监控面板。
  • 支持在业务视图中查看平台视图中公开共享的面板,数据基于业务所属命名空间进行隔离。
  • 支持管理面板内的 panels,允许用户添加、删除、修改 panels,支持 panels 放大/缩小及拖拽移动。
  • 允许在面板中设置自定义变量,用于过滤查询数据。
  • 支持在面板中配置分组,用于管理 panels。分组可基于自定义变量重复展示。
  • 支持的 panel 类型包括:趋势图、阶梯折线图、柱状图、水平柱状图、柱状仪表图、仪表图、表格、统计图、XY 图、饼图、文本。
  • 支持一键导入 Grafana 面板。

优势

  • 支持用户自定义监控场景,不受预设模板限制,真正实现个性化监控体验。
  • 提供丰富的可视化选项,包括折线图、柱状图、饼图,以及灵活的布局和样式配置。
  • 与平台角色权限无缝集成,业务视图可定义自身监控面板,同时确保数据隔离。
  • 深度集成容器平台各项功能,支持即时访问容器、网络、存储等监控数据,为用户提供全面的性能观察和故障诊断。
  • 完全兼容 Grafana 面板 JSON,方便从 Grafana 迁移并继续使用。

使用场景

  • IT 运维管理:作为 IT 运维团队成员,您可以使用监控面板统一展示和管理容器平台的各类性能指标,如 CPU、内存、网络流量等。通过自定义监控报表和告警规则,及时发现并定位系统问题,提高运维效率。
  • 应用性能分析:对于应用开发和测试人员,监控面板提供多样化的可视化选项,直观展示应用运行状态和资源消耗。您可以定制针对不同应用场景的专用监控视图,深入分析应用性能瓶颈,提供优化依据。
  • 多集群管理:对于管理多个容器集群的用户,监控面板可汇聚不同集群的监控数据,帮助您一目了然掌握系统整体运行状况。
  • 故障诊断:当系统出现问题时,监控面板为您提供全面的性能数据和分析工具,快速定位问题根因。您可以根据告警信息迅速查看相关监控指标的波动,进行深入故障分析。

前置条件

目前监控面板仅支持查看平台内监控组件采集的监控数据。因此,在配置监控面板前,请做好以下准备:

  • 确保您要配置监控面板的集群已安装监控组件,具体为 ACP Monitor with PrometheusACP Monitor with VictoriaMetrics 插件。
  • 确保您希望在面板中展示的数据已被监控组件采集。

监控面板与监控组件的关系

  • 监控面板资源存储于 Kubernetes 集群中,您可通过顶部的 Cluster 标签页切换不同集群视图。
  • 监控面板依赖集群内的监控组件查询数据源,因此使用前请确保当前集群已成功安装监控组件且运行正常。
  • 监控面板默认请求对应集群的监控数据。如果您在集群中以代理模式安装了 VictoriaMetrics 插件,平台会为您请求存储集群查询该集群对应的数据,无需额外配置。

管理监控面板

面板是由一个或多个 panel 组成的集合,按一行或多行组织排列,提供清晰的相关信息视图。这些 panel 可从数据源查询原始数据,并转换为平台支持的一系列可视化效果。

创建监控面板

  1. 点击 创建面板,参考以下说明配置相关参数。
参数说明
文件夹面板所在的文件夹,您可以输入或选择已有文件夹。
标签监控面板的标签,切换时可通过顶部标签快速筛选已有面板。
设为主面板启用后,创建成功时将当前面板设为主面板;再次进入监控面板功能时,默认展示主面板数据。
变量创建面板时添加变量,供新增的 panels 作为指标参数引用,也可作为面板首页的过滤器使用。
  1. 添加完成后,点击 创建 完成面板创建。接下来,您需要 添加变量添加 panels添加分组,完成整体布局设计。

导入面板

平台支持直接导入 Grafana JSON,将其转换为监控面板进行展示。

  • 目前仅支持 Grafana JSON V8+ 版本,低版本将禁止导入。
  • 导入的面板中若存在平台不支持的 panel 类型,可能显示为 不支持的 panel 类型,但您可修改面板设置实现正常展示。
  • 导入后,您可像使用平台创建的 panels 一样进行管理操作,无差异。

添加变量

  1. 在变量表单区域,点击 添加

    参数说明
    类型目前仅支持 Query 类型变量,允许基于时序特征维度过滤数据。可指定查询表达式动态计算生成查询结果。
    显示过滤器面板首页下拉过滤器的默认显示值,支持显示名称和值、仅值或不显示(隐藏过滤框)。
    查询设置使用 Query 类型变量允许基于时序特征维度过滤数据。定义查询设置时,除使用 PromQL 查询时序外,平台还提供部分常用变量和函数。参考 常用函数和变量
    正则表达式通过正则表达式过滤变量查询返回内容中的期望值,使变量的每个选项名称更符合预期。可在 变量值预览 中预览过滤结果是否符合预期。
    选择设置- 多选:面板首页顶部过滤器选择时,允许同时选择多个选项。您需在 panels 的查询表达式中引用该变量,查看对应变量值的数据。
    - 全部:勾选后,过滤选项中将启用包含 全部 的选项,可选择所有变量数据。
  2. 点击 确定 添加一个或多个变量。

添加 panels

提示:您可点击 panel 右下角自定义大小;点击 panel 任意位置可调整 panels 顺序。

  1. 点击 添加 panel,参考以下说明配置相关参数。
  • panel 预览:区域动态展示所添加指标对应的数据情况。

  • 添加指标:配置 panel 标题和监控指标。

  • 添加方式:支持使用内置指标或使用原生自定义指标,两者取并集同时生效。

    • 内置指标:选择平台内置的常用指标和图例参数,展示当前 panel 下的数据情况。
      • 注意:添加到 panel 的所有指标必须单位统一,不能在一个 panel 中添加多单位指标。
    • 原生:自定义指标单位、指标表达式和图例参数。指标表达式遵循 PromQL 语法,详情请参考 PromQL 官方文档
  • 图例参数:控制 panel 中曲线对应的名称,可使用文本或模板:

    • 规则:输入值必须为 {{.xxxx}} 格式,如 {{.hostname}} 将替换为表达式返回的 hostname 标签对应值。
    • 提示:若输入格式错误,panel 中曲线对应名称将按原格式显示。
  • 即时开关:开启时通过 Prometheus Query 接口查询即时值并排序,适用于统计图和仪表图;关闭时使用 query_range 方式计算,查询特定时间段内的一系列数据。

  • panel 设置:支持选择不同 panel 类型展示指标数据。详情请参考 管理 panels

  1. 点击 保存 完成添加 panels。

  2. 您可在面板内添加一个或多个 panels。

  3. 添加完成后,您可通过以下操作确保 panels 显示和大小符合预期:

    • 点击 panel 右下角自定义大小。
    • 点击 panel 任意位置调整 panels 顺序。
  4. 调整完成后,点击面板页面的 保存 按钮保存修改。

添加分组

分组是面板内的逻辑划分,可将 panels 归类管理。

  1. 点击 添加 panel 下拉菜单 > 添加分组,参考以下说明配置相关参数。
  • 分组:分组名称。
  • 重复:支持禁用重复或选择当前 panels 的变量。
    • 禁用重复:不选择变量,使用默认创建的分组。
    • 参数变量:选择当前 panels 创建的变量,监控面板将为变量的每个对应值生成一行相同的子分组。子分组不支持修改、删除或移动 panels。
  1. 添加分组后,您可对分组执行以下操作以管理面板显示:

    • 分组可折叠或展开,隐藏面板部分内容。折叠的分组内 panels 不会发送查询。
    • 将 panel 移入分组,使该 panel 由该分组管理。分组管理其与下一个分组之间的所有 panels。
    • 分组折叠时,也可整体移动该分组管理的所有 panels。
    • 分组折叠与展开也属于面板调整,若希望下次打开面板时保持该状态,请点击 保存

切换面板

将已创建的自定义监控面板设为主面板,重新进入监控面板功能时默认展示主面板数据。

  1. 在左侧导航栏点击 运营中心 > 监控 > 监控面板

  2. 默认进入主监控面板,点击 切换面板

  3. 可通过标签筛选或名称搜索查找面板,通过 主面板 开关切换主面板。

其他操作

您可点击面板页面右侧操作按钮,根据需要对面板执行操作。

操作说明
YAML打开存储于 Kubernetes 集群中的面板实际 CR 资源代码,您可通过编辑 YAML 中参数修改面板所有内容。
导出表达式可导出当前面板使用的指标及对应查询表达式,格式为 CSV。
复制复制当前面板,您可根据需要编辑 panels 并保存为新面板。
设置修改当前面板的基本信息,如更改标签和添加更多变量。
删除删除当前监控面板。

管理 panels

平台提供多种可视化方式,支持不同使用场景。本章主要介绍这些 panel 类型、配置选项及使用方法。

panel 说明

序号panel 名称说明建议使用场景
1趋势图通过一条或多条折线展示数据随时间的变化趋势。展示随时间变化的趋势,如 CPU 利用率、内存使用量等变化。
2阶梯折线图基于折线图,通过水平和垂直线段连接数据点,形成阶梯状结构。适合展示离散事件的时间戳,如告警数量。
3柱状图使用垂直矩形柱表示数据大小,柱高代表数值。柱状图直观对比数值差异,有助发现规律和异常,适合关注数值变化的场景,如 Pod 数量、节点数量等。
4水平柱状图类似柱状图,但使用水平矩形柱表示数据。当数据维度较多时,水平柱状图能更好利用空间布局,提高可读性。
5仪表图使用半圆或环形表示指标当前值及其占比。直观反映关键监控指标当前状态,如系统 CPU 利用率、内存使用率。建议结合告警阈值颜色变化指示异常。
6柱状仪表图使用垂直矩形柱展示指标当前值及其占比。直观反映关键指标当前状态,如目标完成进度、系统负载。存在多类别同一指标时,柱状仪表图更推荐,如可用磁盘空间或利用率。
7饼图使用扇形展示部分与整体的比例关系。适合展示整体数据在不同维度的组成,如一段时间内 4XX、3XX、2XX 响应码比例。
8表格以行列形式组织数据,便于查看和对比具体数值。适合展示结构化多维数据,如节点详细信息、Pod 详细信息等。
9统计图展示单个关键指标的当前值,通常需要文字说明。适合展示重要监控指标的实时数值,如 Pod 数量、节点数量、当前告警数等。
10散点图使用笛卡尔坐标系绘制一系列数据点,反映两个变量间的相关性。适合分析两个指标间关系,通过数据点分布发现线性相关、聚类等规律,帮助挖掘指标间关联。
11文本卡片以卡片形式展示关键信息文本,通常包含标题和简要说明。适合展示文本信息,如 panel 描述、故障排查说明等。

panel 配置说明

通用参数

参数说明
基本信息根据所选指标数据选择合适的 panel 类型,添加标题和描述;可添加一个或多个链接,点击标题旁对应链接名称可快速访问。
标准设置原生指标数据使用的单位。此外,仪表图和柱状仪表图还支持配置 总值 字段,图表中将显示为 当前值/总值 的百分比。
提示信息鼠标悬停 panel 时实时数据的显示开关,支持选择排序。
阈值参数配置 panel 的阈值开关,启用后面板中以选定颜色显示阈值,支持阈值大小调整。
数值设置数值的计算方式,如最新值或最小值。该配置仅适用于统计图和仪表图。
数值映射重新定义指定数值或数值区间,如定义 100 为满载。该配置仅适用于统计图、表格和仪表图。

panel 特殊参数

panel 类型参数说明
趋势图图形样式可选择折线图或面积图作为展示样式;折线图更侧重反映指标趋势变化,面积图更关注总量和部分占比变化。根据实际需求选择。
仪表图仪表图设置
显示方向:需要在单图中查看多个指标时,可设置指标是横向还是纵向排列。
单位重定义:可为每个指标设置独立单位,未设置时平台显示 标准设置 中的单位。
饼图饼图设置
最大切片数:可设置减少饼图切片数,降低低比例但数量多类别的干扰。超出部分合并显示为 其他
标签显示字段:可设置饼图标签中显示的字段。
饼图图形样式可选择饼图或甜甜圈图作为展示样式。
表格表格设置
隐藏列:可减少表格列数,聚焦部分主要列信息。
列对齐:可修改列内数据对齐方式。
显示名称和单位:可通过该参数修改列名和单位。
文本卡片图形样式
样式:可选择在富文本编辑框或 HTML 中编辑文本卡片内容。

通过 CLI 创建监控面板

  1. 新建名为 example-dashboard.yaml 的 YAML 配置文件。

  2. 在 YAML 文件中添加 MonitorDashboard 资源并提交。以下示例创建名为 demo-v2-dashboard1 的监控面板:

    kind: MonitorDashboard
    apiVersion: ait.alauda.io/v1alpha2
    metadata:
      annotations:
        cpaas.io/dashboard.version: '3'
        cpaas.io/description: '{"zh":"描述信息","en":""}' # 描述字段
        cpaas.io/operator: admin
      labels:
        cpaas.io/dashboard.folder: demo-v2-folder1 # 文件夹
        cpaas.io/dashboard.is.home.dashboard: 'False' # 是否为主面板?
      name: demo-v2-dashboard1 # 名称
      namespace: cpaas-system # 命名空间(所有管理视图创建均在此 ns)
    spec:
      body: # 所有信息字段
        titleZh: 更新显示名称 # 中文显示名称内置字段(该字段在中文语言下创建)
        title: english_display_name # 英文显示名称内置字段(该字段在英文语言下创建)内置面板可设置双语翻译。
        templating: # 自定义变量
          list:
            - hide: 0 # 0 表示不隐藏;1 表示仅隐藏标签;2 表示标签和值均隐藏
              label: 集群 # 内置变量显示名称(标签根据语言设置为对应名称,如英文为 cluster)
              name: cluster # 内置变量名称(唯一)
              options: # 定义下拉选项;若查询获取数据则使用请求数据,否则使用 options。可设置默认值(一般仅用于设置默认值)
                - selected: false # 是否默认选中
                  text: global
                  value: global
              type: custom # 自定义变量类型;目前仅支持内置(custom)和查询(query)(导入 Grafana 会支持常量自定义区间(导入后会变为自定义变量,不支持自动))
    
            - allValue: '' # 选择全部,传递格式为 xxx|xxx|xxx 的 options;可设置 allValue 进行转换(Grafana 获取当前变量所有数据为 xxx|xxx|xxx,调整后保持一致)
              current: null # 变量当前值;未设置时默认列表第一个
              definition: query_result(kube_namespace_labels) # 查询表达式
              hide: 0 # 0 表示不隐藏;1 表示仅隐藏标签;2 表示标签和值均隐藏
              includeAll: true # 是否选择全部
              label: ns # 内置变量显示名称
              multi: true # 是否允许多选
              name: ns # 变量名称(唯一)
              options: []
              query: ''
              regex: /.*namespace=\"(.*?)\".*/ # 变量值提取正则表达式
              sort: 2 # 排序:1 - 升序字母;2 - 降序字母(暂仅支持这两种);3 - 升序数字;4 - 降序数字
              type: query # 自定义变量类型
        time: # 面板时间
          from: now-30m # 开始时间
          to: now # 结束时间
        repeat: '' # 行重复配置;选择自定义变量
        collapsed: 'false' # 行折叠或展开配置
        description: '123' # 描述(标题后悬浮提示)
        targets: # 数据源
          - indicator: cluster.node.ready # 指标
            expr: sum (cpaas_pod_number{cluster=\"\"}>0) # PromQL 表达式
            instant: false # 查询模式 true 表示查询某一时刻数据
            legendFormat: '' # 图例
            range: true # 查询数据时默认查询区间
            refId: 指标1 # 数据源显示名称唯一标识
        gridPos: # 面板位置信息布局
          h: 8 # 高度
          w: 12 # 宽度(宽度对应 24 格)
          x: 0 # 横向位置
          y: 0 # 纵向位置
        panels: # panel 数据
          title: 图表标题tab # panel 名称
          type: table # panel 类型;目前支持 timeseries、barchart、stat、gauge、table、bargauge、row、text、pie(阶梯图、散点图、柱状图通过 drawStyle 属性配置)
          id: a2239830-492f-4d27-98f3-cb7ecb77c56f # 唯一标识
          links: # 链接
            - targetBlank: true # 新标签页打开
              title: '1' # 名称
              url: '1' # URL 地址
          transformations: # 数据转换
            - id: 'organize' # 类型 organize;用于排序、调整顺序、显示字段、是否显示
              options:
                excludeByName: # 隐藏字段
                  cluster_cpu_utilization: true
                indexByName: # 排序
                  cluster_cpu_utilization: 0,
                  Time: 1
                renameByName: # 重命名
                  Time: ''
                  cluster_cpu_utilization: '222'
            - id: 'merge' # 合并数据
              options:
          fieldConfig: # 定义 panel 属性和外观
            defaults: # 默认配置
              custom: # 自定义图形属性
                align: 'left' # 表格对齐方式:left、center、right
                cellOptions: # 表格阈值配置
                  type: color-text # 仅支持文本阈值颜色设置
                spanNulls: false # true 连接 null 值;false 不连接;数字 == 0 按 0 连接 null 值
                drawStyle: line # panel 类型:line,bars 为柱状图,points 为点图
                fillOpacity: 20 # drawStyle 为 area 时存在(目前不支持配置,area 默认为 20)
                thresholdsStyle: # 配置阈值显示方式(目前仅支持线)
                  mode: line # 阈值显示格式(area 目前不支持)
                lineInterpolation: 'stepBefore' # 阶梯图配置;默认仅支持 stepBefore(后续支持 stepAfter)
              decimals: 3 # 小数点位数
              min: 0 # 最小值(目前不支持页面配置,仅支持已适配导入)
              max: 1 # 最大值(页面配置仅 stat gauge barGauge pie 适用)
              unit: '%' # 单位
              mappings: # 数值映射配置(目前仅支持 value 和 range 类型;数据上支持特殊类型)
                - options: # 数值映射规则
                    '1': # 对应数值
                      index: 0
                      text: 'Running' # 数值为 1 时显示 Running
                  type: value # 数值映射类型
                - options: # 区间映射规则
                    from: 2 # 区间起始值
                    to: 3 # 区间结束值
                    result: # 映射结果
                      index: 1
                      text: 'Error' # 2~3 区间显示 Error
                  type: range # 区间映射类型
                - type: special # 特殊场景映射类型
                  options:
                    match: null # nan null null+nan empty true false
                    result:
                      text: xxx
                      index: 2
              thresholds: # 阈值配置
                mode: absolute # 阈值配置模式,绝对值模式(目前仅支持绝对值和百分比模式;百分比模式暂不支持)
                steps: # 阈值步骤
                  - color: '#a7772f' # 阈值颜色
                    value: '2' # 阈值数值
                  - color: '#007AF5' # 默认值无值即为 Base
            overrides: # 覆盖配置
              - matcher:
                  id: byName # 按字段名匹配
                  options: node # 对应名称
                properties: # 覆盖配置;id 目前仅支持 displayName unit
                  - id: displayName # 显示名称覆盖
                    value: '1' # 覆盖显示名称
                  - id: unit # 单位覆盖
                    value: GB/s # 单位值
                  - id: noValue # 无值显示
                    value: 无值显示
          options:
            orientation: horizontal # 控制 panels 布局方向;适用于 gauge 和 barGauge(stat 后续支持)
            legend: # 图例配置
              calcs: # 计算方式(仅图例位置为右侧时显示)
                - latest # 目前仅支持最新值
              placement: right # 图例位置(右侧或底部,默认底部)
              placementRightTop: '' # 右上角配置
              showLegend: true # 是否显示图例
            tooltip: # 提示信息
              mode: multi # 模式双选(仅支持多模式)鼠标悬停时显示所有数据
              sort: asc # 排序:asc 或 desc
            reduceOptions: # 数值计算方式(用于聚合数据)
              calcs: # 计算方式(最新、最小、最大、平均、求和)
                - latest
              limit: 3 # 饼图限制切片数
            textMode: 'value' # 统计图配置;定义指标值显示样式;选项有 auto、value、value_and_name、name、none(页面配置暂不支持,导入支持)
            colorMode: 'value' # 统计图配置;定义指标值显示颜色模式;选项有 none、value、background(默认 value;配置不支持,导入适配)
            displayLabels: ['name', 'value', 'percent'] # 饼图标签显示字段
            pieType: 'pie' # 饼图类型;选项 pie 和 donut
            mode: 'html' # 文本图类型模式;选项 html 和 richText
            content: '<div>xxx</div>' # 文本图类型内容
            footer:
              enablePagination: true # 表格启用分页

常用函数和变量

常用函数

定义查询设置时,除使用 PromQL 设置查询外,平台还提供以下常用函数供您自定义查询设置参考。

函数名作用
label_names()返回 Prometheus 中所有标签,如 label_names()。
label_values(label)返回 Prometheus 中所有监控指标中该标签名可选的所有值,如 label_values(job)。
label_values(metric, label)返回 Prometheus 中指定指标中该标签名可选的所有值,如 label_values(up, job)。
metrics(metric)返回满足指标字段定义的正则表达式的所有指标名,如 metrics(cpaas_active)。
query_result(query)返回指定 Prometheus 查询的查询结果,如 query_result(up)。

常用变量

定义查询设置时,您可将常用函数组合成变量,快速定义自定义变量。以下为部分常用变量定义,供您参考:

变量名查询函数正则表达式
clusterlabel_values(cpaas_cluster_info,cluster)-
nodelabel_values(node_load1, instance)/(.*?):.*/
namespacequery_result(kube_namespace_labels)/.*namespace=\"(.*?)\".*/
deploymentlabel_values(kube_deployment_spec_replicas{namespace="$namespace"}, deployment)-
daemonsetlabel_values(kube_daemonset_status_number_ready{namespace="$namespace"}, daemonset)-
statefulsetlabel_values(kube_statefulset_replicas{namespace="$namespace"}, statefulset)-
podlabel_values(kube_pod_info{namespace=~"$namespace"}, pod)-
vmclusterlabel_values(up, vmcluster)-
daemonsetlabel_values(kube_daemonset_status_number_ready{namespace="$namespace"}, daemonset)-

变量使用示例一

使用 query_result(query) 函数查询值:node_load5,并提取 IP。

  1. 查询设置 中填写 query_result(node_load5)

  2. 变量值预览 区域,预览示例为 node_load5{container="node-exporter",endpoint="metrics",host_ip="192.168.178.182",instance="192.168.178.182:9100"}

  3. 正则表达式 中填写 /.*instance="(.*?):.*/ 过滤值。

  4. 变量值预览 区域,预览示例为 192.168.176.163

变量使用示例二

  1. 添加第一个变量:namespace,使用 query_result(query) 函数查询值:kube_namespace_labels,并提取 namespace。

    • 查询设置query_result(kube_namespace_labels)
    • 变量值预览kube_namespace_labels{container="exporter-kube-state", endpoint="kube-state-metrics", instance="12.3.188.121:8080", job="kube-state", label_cpaas_io_project="cpaas-system", namespace="cert-manager", pod="kube-prometheus-exporter-kube-state-55bb6bc67f-lpgtx", project="cpaas-system", service="kube-prometheus-exporter-kube-state"}
    • 正则表达式/.+namespace=\"(.*?)\".*/
    • 变量值预览 区域,预览示例包含多个 namespace,如 argocdcpaas-system 等。
  2. 添加第二个变量:deployment,引用之前创建的变量:

    • 查询设置kube_deployment_spec_replicas{namespace=~"$namespace"}
    • 正则表达式/.+deployment="(.*?)",.*/
  3. 在当前面板添加 panel,引用之前添加的变量,例如:

    • 指标名称:计算组件下 Pod 内存使用
    • 键值对:kindDeploymentname$deploymentnamespace$namespace
  4. 添加 panels 并保存后,您可在面板首页查看对应 panel 信息。

使用内置指标注意事项

WARNING

以下指标使用自定义变量 namespacenamekind,不支持 多选 和选择 全部

  • namespace 仅支持选择具体命名空间;
  • name 仅支持三种计算组件类型:deploymentdaemonsetstatefulset
  • kind 仅支持指定以下类型之一:DeploymentDaemonSetStatefulSet
  • workload.cpu.utilization

  • workload.memory.utilization

  • workload.network.receive.bytes.rate

  • workload.network.transmit.bytes.rate

  • workload.gpu.utilization

  • workload.gpu.memory.utilization

  • workload.vgpu.utilization

  • workload.vgpu.memory.utilization