管理监控面板

功能简介

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

主要功能

  • 支持用于在业务视图和平台视图配置管理自定义的监控面板
  • 支持在业务视图查看平台视图配置的公开面板,其数据可根据业务所属命名空间进行数据隔离
  • 支持管理面板内的图表,可增、删、改面板内的图表,亦可放大缩小图表,通过拖拽的方式移动图表 位置
  • 面板内支持设置自定义变量,用于过滤查询图表内数据
  • 面板内支持配置分组,用于管理面板内的图表。分组支持根据自定义变量重复展示
  • 支持的 pannel 类型有:趋势图、阶梯折线图、柱状图、条形图、柱形测量图、环形测量图、表格、统计图、散点图、饼图、文本卡片
  • 支持 Grafana 面板一键导入功能

功能优势

  • 支持用户自定义监控场景,无需受限于预设的模板,真正实现个性化的监控体验
  • 提供丰富的可视化选项,包括折线图、柱状图、饼图等多种 pannel 类型,以及灵活的布局和样式调整功能
  • 与平台的角色权限打通,支持业务视图也能够自行定义监控面板,且能做到数据隔离
  • 与容器平台各项功能深度集成,可即时获取容器、网络、存储等方面的监控数据,为用户提供全方位的性能观察和故障诊断
  • 完全兼容 Grafana 面板 JSON,可以轻松地从 Grafana 迁移过来继续使用

使用场景

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

使用前提

监控面板目前仅支持查看平台安装的监控组件所采集的监控数据,因此在配置监控面板前,您需要事先做好以下准备工作:

  • 确保需要配置监控面板的集群已安装了监控组件,即 ACP Monitor with PrometheusACP Monitor with VictoriaMetrics 插件
  • 确保您所需要配置展示的数据已经被采集到了监控组件中

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

  • 监控面板资源存储在 Kubernetes 集群中,您可以通过切换顶部的 集群 选项卡来切换查看不同集群中的监控面板
  • 监控面板依赖集群中的监控组件作为数据源查询数据,因此使用监控面板前,您需要确保当前集群已成功安装监控组件,且运行正常
  • 监控面板会默认请求对应集群的监控数据,如果您在集群中安装的是 VictoriaMetrics 插件的代理模式,我们将请求存储集群,查询本集群的对应数据,无需您进行特殊配置

管理面板

面板是由一个或多个图表 组成的集合,这些图表 被组织和排列成一行或多行,可提供相关信息的一目了然的视图。这些图表 可以查询数据源中的原始数据并将其转换成平台支持的一系列可视化效果。

创建面板

  1. 单击 创建面板,参考以下说明,配置相关参数。
参数说明
文件夹面板所在文件夹,可输入或选择已有文件夹。
标签监控面板标签,在切换面板时可以通过顶部标签过滤的方式快速找到已创建的面板。
设置主面板若开启,将在创建完成时将本面板配置为主面板;再次进入监控面板功能时,将默认展示主面板数据。
变量在创建面板时添加变量,以便在添加的图表 中作为指标参数引用,在面板主页中也可以作为筛选项进行过滤。
  1. 添加完成后,单击 创建,即可完成面板的创建工作,接下来您需要 添加变量添加图表添加分组 以完成整个页面的布局设计。

导入面板

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

  • 目前仅支持导入 V8+ 版本的 Grafana JSON,较低版本的 Grafana JSON 将被禁止导入。

  • 面板导入后若其中图表 不在平台支持的范围内,可能会被展示为 不支持的 pannel 类型 但您可以通过修改图表 的设置以达到正常展示的目的。

  • 面板导入后您可以正常进行任意管理动作,与平台创建的面板并无差异。

添加变量

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

    参数说明
    类型当前仅支持 Query 类型的变量,它允许您根据时间序列的特征维度对数据进行过滤。并通过指定查询表达式动态计算和生成查询结果。
    展示筛选项用于展示面板主页上的下拉筛选项的默认值,支持显示名称和值、值,或不展示,不展示时将隐藏筛选框。
    查询设置使用 Query 类型的变量可以让您根据时间序列的特征维度对数据进行过滤。在定义查询设置时,平台还提供了一些常用的变量和函数,参考 常用函数以及变量
    正则表达式使用正则表达式,您可以从变量查询返回的内容中过滤出需要的值。使变量中包含的每个选项的名称更符合预期,您可以在 变量值预览 中实时查看过滤后的值是否符合预期。
    选择设置- 多选:在面板主页的顶部筛选项中被选择时,允许同时选择多个选项。您需要在图表 的查询表达式中引用该变量,才可以在图表 中查看变量值对应的数据。
    - 全部:勾选后将在筛选项中启用一个包含 全部 的选项,用于全选变量数据。
  2. 单击 确定,可添加一个或多个变量。

添加图表

为当前创建的监控面板添加多个图表,用于展示不同资源的数据信息。

提示:鼠标单击图表 右下角可自定义拖动图表 大小;单击图表 任意位置拖动可自定义图表 排列顺序。

  1. 单击 添加 pannel,参考以下说明,配置相关参数。
  • pannel 预览:在 pannel 预览区域将实时展示已添加的指标对应的数据信息。

  • 添加指标:在该区域配置 pannel 标题和监控指标等参数。

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

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

    • 规则:输入值必须为 {{.xxxx}} 格式,例如 {{.hostname}} 将替换为表达式返回值的主机名标签对应的值。
    • 提示:当输入了错误格式的图例参数时,pannels 中曲线对应名称将按照原始格式展示。
  • Instant 开关:当 Instant 开关开启时,将通过 Prometheus 的 Query 接口查询瞬时值并排序,如统计图、测量图;若关闭,则使用 query_range 方式计算,即查询某个时间段内的一系列数据。

  • pannel 设置:支持选择不同的 pannel 类型以可视化展示指标的数据信息,请参阅管理图表

  1. 单击 保存,完成添加图表。

  2. 您可以在面板内添加一个或多个图表。

  3. 添加图表 完成后,您可以使用这两项操作以确保图表 的展示和大小能满足您的预期。

    • 单击 pannel 右下角自定义拖动 pannel 大小。

    • 单击 pannel 任意位置拖动可自定义 pannel 排列顺序。

  4. 调整完成后,点击面板页面的 保存 按钮以保存您本次的修改。

添加分组

分组是仪表盘中的逻辑分隔线,可将图表 组合在一起。

  1. 单击 添加 pannel 的下拉菜单 > 添加分组,参考以下说明,配置相关参数。
  • 分组:分组的名称。
  • 重复:支持禁用重复或选择当前图表 的变量
    • 禁用重复:不选择变量,使用默认创建的分组。
    • 参数变量:选择当前图表 中创建的变量,监控面板会根据变量的值,为每个分组生成一行相同的子分组,每个子分组都将使用变量值进行展示。子分组不支持修改、删除、移动图表。
  1. 添加完成分组后,您可以对分组进行以下操作,以达到管理面板内图表 展示的目的。

    • 分组可以收起或展开,以便隐藏仪表盘的部分内容。被收起分组内的图表 不会发出查询。

    • 移动图表 到分组下,即可使得该 pannel 受该分组的管理。分组会管理它到下一个分组间的所有图表。

    • 分组折叠时,可以连带分组管理的所有图表 一起移动位置。

    • 分组的折叠与收起也是对面板的一次调整,若您希望下次打开此面版时分组需要保持这个状态,请单击 保存 按钮。

切换面板

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

  1. 在左侧导航栏中,单击 运维中心 > 监控 > 监控面板

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

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

其他操作

您可以在面板页面单击右侧的操作按钮,按需对面板进行操作。

操作说明
YMAL打开面板实际存储在 Kubernetes 集群中的 CR 资源代码,可以通过修改 YAML 中的参数直接修改面板内的所有内容。
导出表达式可以以 CSV 形式导出当前面板所使用的指标和对应的查询表达式
复制复制当前面板,按需编辑图表 后可保存为新面板。
设置修改当前面板的基础信息,如修改标签,添加更多的变量等。
删除删除当前监控面板。

管理图表

平台提供了多种可视化方式,以支持不同的使用场景,本章节将主要介绍这些图表 类型,配置选项和使用方法。

pannel 说明

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

pannel 配置说明

通用参数

参数说明
基本信息根据所选的指标数据选择合适的 pannel 类型,并添加标题和描述;您可添加一个或多个链接地址,添加后,可在标题右侧选择对应链接名称快速跳转。
标准设置原生指标数据使用的单位。另外,环形测量图和柱形测量图也支持配置 总值 字段,在图中将按照 当前值/总值 的百分比显示。
TooltipsTooltips 是鼠标悬浮至图表 时,鼠标右侧实时数据的显示开关,并支持选择排序。
阈值参数配置图表 阈值开关,开启后,阈值将在图表 中以所选颜色的形式展示,可设定阈值大小。
设置值的计算方式,例如最新值,最小值。该配置项仅适用于统计图、环形测量图。
值映射将指定数值或数值范围进行重新定义,例如将数值 100 定义为满负荷。该配置项仅适用于统计图、表格、环形测量图。

pannel 特殊参数

pannel 类型参数说明
趋势图图形样式您可以选择线图或面积图作为展示样式;线图更侧重于反映指标的走势变化,面积图则更关注总量及部分占比的变化情况。可根据您的实际需要选择使用。
环形测量图环形测量图设置
展示方向:当您单个 pannel 内需要查看多个指标时,可设置这些指标是横向排列或是纵向排列。
单位重定义:您可以为每个指标独立设置它的单位;如不设置则平台会使用 标准设置 中的单位进行展示。
饼图饼图设置
最多展示块数:您可以通过设置此参数来减少饼图的块数,以减轻一些占比较低但数量较多的分类对您的干扰,超出的块数会合并展示为 其他
标签展示字段:您可以设置饼图的标签中所展示的字段。
饼图图形样式您可以选择饼图或环形图作为展示样式。
表格表格设置
隐藏列:您可以通过设置此参数来减少表格的列数,从而聚焦部分主要列信息。
列对齐:您可以通过此项设置修改列中的数据对齐方式。
显示名称与单位:您可以通过此项设置修改列的列名和所用单位。
文本卡片图形样式
样式:您可以选择使用富文本编辑框或 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 (管理视图创建均在此 ns)
spec:
  body: # 所有信息字段
    titleZh: 更新显示名称 # 内置字段中文显示名称(中文语言下创建为此字段)
    title: english_display_name # 内置字段英文显示名称(英文语言下创建为此字段)内置面板可设置中英文翻译
    templating: # 自定义变量
      list:
        - hide: 0 # 0 表示不隐藏,1 表示只隐藏标签,2 表示隐藏标签和值
          label: 集群 # 内置变量显示名称 
          name: cluster # 内置变量名称(唯一)
          options: # 可定义下拉选项,如 query 能请求到,则使用请求的数据,反之使用 options。可设置默认值。
            - selected: false # 是否默认选择
              text: global
              value: global
          type: custom # 自定义变量类型;当前仅支持内置(custom)和查询(query)
 
        - allValue: "" # 选择所有时传递的是 options 选项下的值
          current: null # 变量当前值;未设置则为 list 第一个
          definition: query_result(kube_namespace_labels) # query 请求数据的表达式
          hide: 0 # 0 表示不隐藏,1 表示只隐藏标签,2 表示隐藏标签和值
          includeAll: true # 是否全选
          label: ns # 内置变量显示名称
          multi: true # 是否多选
          name: ns # 变量名称(唯一)
          options: [] 
          query: ""
          regex: /.*namespace=\"(.*?)\".*/ # 截取变量值的正则表达式
          sort: 2 # 排序:1 - 升序,2 - 降序
          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 # 查询模式
        legendFormat: "" # 图例
        range: true # 查询默认范围
        refId: 指标1 # 唯一标识
    gridPos: # 面板位置
        h: 8 # 高度
        w: 12 # 宽度(宽度为 24 栅格)
        x: 0 # 横坐标
        y: 0 # 纵坐标
    panels: # pannel 数据
      title: pannel 标题tab # pannel 名称
      type: table # pannel 类型
      id: a2239830-492f-4d27-98f3-cb7ecb77c56f # 唯一标识
      links: # 链接
        - targetBlank: true # 新标签页打开
          title: "1" # 名称
          url: "1" # URL 地址
      transformations: # 数据转换
        - id: "organize" # 类型
          options:
            excludeByName: # 隐藏字段
              cluster_cpu_utilization: true
            indexByName: # 排序
                cluster_cpu_utilization: 0,
                Time: 1
            renameByName: # 重命名
              Time: ""
              cluster_cpu_utilization: "222"
        - id: "merge" # 合并数据
          options:
      fieldConfig: # 定义 pannel 属性和外观
        defaults: # 默认配置
          custom: # 自定义属性
            align: "left" # 对齐方式
            cellOptions: # 阈值配置
              type: color-text # 阈值颜色设置
            spanNulls: false # 是否连接空值
            drawStyle: line # pannel 类型
            fillOpacity: 20 # 填充不透明度
            thresholdsStyle: # 阈值展示形式
              mode: line # 线条展示形式
            lineInterpolation: 'stepBefore' # 折线图配置
          decimals: 3 # 小数点
          min: 0 # 最小值
          max: 1 # 最大值
          unit: "%" # 单位
          mappings: # 映射配置
            - 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 # 匹配情况
                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 # 显示名称覆盖
                value: "1" # 覆盖的显示名称
              - id: unit # 单位覆盖
                value: GB/s # 单位值
              - id: noValue # 无值展示
                value: 无值展示
      options:
        orientation: horizontal # 控制图表 布局方向
        legend: # 图例配置
          calcs: # 计算方式
            - latest # 仅支持最新值
          placement: right # 图例位置
          placementRightTop: "" # 右上侧配置
          showLegend: true # 是否展示图例
        tooltip: # 工具提示
          mode: multi # 多选模式
          sort: asc # 排序
        reduceOptions: # 计算方式
          calcs: # 计算方式
            - latest
          limit: 3 # 限制块数
        textMode: 'value' # 显示样式
        colorMode: 'value' # 颜色模式
        displayLabels: ['name','value', 'percent'] # 饼图标签展示字段
        pieType: "pie" # 饼图类型
        mode: 'html' # 文本类型
        content: '<div>xxx</div>' # 文本内容
        footer:
          enablePagination: true # 是否开启分页

常用函数以及变量

常用函数

在定义查询设置时,除了使用 PromQL 查询时间序列进行查询设置外,平台还提供了一些常用的函数,您可以参考如下函数自定义查询设置。

函数作用
label_names()返回 Prometheus 中所有的 labels,例如:label_names()
label_values(label)返回 Prometheus 中所有监控指标中,标签名为 label 的所有可选值,例如:label_values(job)
label_values(metric, label)返回 Prometheus 中所有监控指标 metric 中,标签名为 label 的所有可选值,例如:label_values(up, job)
metrics(metric)返回所有指标名称满足 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=\"(.*?)\".*/

    • 变量值预览 区域,预览示例包含 argocdcpaas-system 等多个命名空间。

  2. 添加第二个变量:deployment,并引用刚刚创建的变量:

    • 查询设置kube_deployment_spec_replicas{namespace=~"$namespace"}

    • 正则表达式/.+deployment="(.*?)",.*/

  3. 在该面板下添加一个 pannel,并引用之前添加的变量。例如:

    • 指标名称为:计算组件下容器组的内存使用率

    • 键值对:kindDeploymentname$deploymentnamespace$namespace

  4. 添加图表 并保存后,即可在面板主页中查看对应 pannel 信息。

使用内置指标时的注意事项

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