监控面板管理

目录

功能概述

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

主要功能

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

优势

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

使用场景

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

前置条件

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

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

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

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

管理监控面板

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

创建监控面板

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

导入面板

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

  • 目前仅支持 Grafana JSON V8+ 版本,低版本禁止导入。
  • 导入面板中若存在平台不支持的 pannels,可能显示为 不支持的 pannel 类型,但可修改 pannel 设置实现正常展示。
  • 导入后可正常进行各项管理操作,与平台创建的 pannels 无异。

添加变量

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

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

添加 pannels

向当前创建的监控面板添加多个 pannels,用于展示不同资源的数据。

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

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

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

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

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

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

  • pannel 设置:支持选择不同 pannel 类型可视化指标数据。详见 管理 pannels

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

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

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

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

添加分组

分组是面板内的逻辑分隔符,可将 pannels 归类管理。

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

    • 分组可折叠或展开,隐藏面板部分内容。折叠的分组内 pannels 不发送查询。

    • 将 pannel 移入分组,使该 pannel 由该分组管理。分组管理该分组与下一分组之间的所有 pannels。

    • 分组折叠时,也可整体移动该分组管理的所有 pannels。

    • 分组的折叠与展开也属于面板调整,若希望下次打开面板时保持该状态,请点击 保存

切换面板

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

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

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

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

其他操作

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

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

管理 pannels

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

pannel 描述

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

pannel 配置说明

通用参数

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

pannel 特殊参数

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

通过 CLI 创建监控面板

  1. 新建 YAML 配置文件,命名为 example-dashboard.yaml
  2. 在 YAML 文件中添加 MonitorDashboard 资源并提交。以下示例创建名为 demo-v2-dashborad1 的监控面板:
kind: MonitorDashboard
apiVersion: ait.alauda.io/v1alpha2
metadata:
  annotations:
    cpaas.io/dashboard.version: "3"
    cpaas.io/description: '{"zh":"描述信息","en":""}' # Description field
    cpaas.io/operator: admin
  labels:
    cpaas.io/dashboard.folder: demo-v2-folder1 # Folder
    cpaas.io/dashboard.is.home.dashboard: "False" # Is it the main dashboard?
  name: demo-v2-dashborad1 # Name
  namespace: cpaas-system  # Namespace (all management view creations will occur in this ns)
spec:
  body: # All information fields
    titleZh: 更新显示名称 # Built-in field for Chinese display name (this field is created under the Chinese language)
    title: english_display_name # Built-in field for English display name (this field is created under the English language) Built-in dashboards can set bilingual translations.
    templating: # Custom variables
      list:
        - hide: 0 # 0 means not hidden; 1 means only the label is hidden; 2 means both label and value are hidden
          label: 集群 # Built-in variable display name (label is set to the appropriate name based on the language, e.g., cluster in English)
          name: cluster # Built-in variable name (unique)
          options: # Define dropdown options; if a query retrieves data, it will use requested data; otherwise, it will use options. A default value can be set (generally only used for setting default values)
            - selected: false # Whether to default select
              text: global
              value: global
          type: custom # Custom variable type; currently, only built-in (custom) and query are supported (Importing Grafana will support constant custom interval (after import, it will be changed to a custom variable and will not support auto))
 
        - allValue: "" # Select all, passing options with the format xxx|xxx|xxx; can set allValue for conversion (Grafana retrieves all data for the current variable as xxx|xxx|xxx, adjustments will ensure consistency)
          current: null # Current value of the variable; if not set, defaults to the first in the list
          definition: query_result(kube_namespace_labels) # Query expression for data retrieval
          hide: 0 # 0 means not hidden; 1 means only the label is hidden; 2 means both label and value are hidden
          includeAll: true # Whether to select all
          label: ns # Built-in variable display name
          multi: true # Whether multiple selections are allowed
          name: ns # Variable name (unique)
          options: [] 
          query: ""
          regex: /.*namespace=\"(.*?)\".*/ # Regex expression for extracting variable values
          sort: 2 # Sorting: 1 - ascending alphabetical order; 2 - descending alphabetical order (only these two support temporarily); 3 - ascending numerical order; 4 - descending numerical order
          type: query # Custom variable type
    time: # Dashboard time
      from: now-30m # Start time
      to: now # End time
    repeat: '' # Row repeat configuration; chooses custom variable
    collapsed: 'false' # Row collapsed or expanded configuration
    description: "123" # Description (tooltip after title)
    targets: # Data sources
      - indicator: cluster.node.ready # Metric
        expr: sum (cpaas_pod_number{cluster=\"\"}>0) # PromQL expression
        instant: false # Query mode true retrieves data at a specific time
        legendFormat: "" # Legend
        range: true # Default querying range when retrieving data
        refId: 指标1 # Unique identifier for display name of data source
    gridPos: # Information on the dashboard's positional layout
        h: 8 # Height
        w: 12 # Width (width corresponds to 24 grid units)
        x: 0 # Horizontal position
        y: 0 # Vertical position
    panels: # Pannel data
      title: 图表标题tab # Pannel name
      type: table # Pannel type; currently supports timeseries, barchart, stat, gauge, table, bargauge, row, text, pie (step chart, scatter plot, bar chart, configurable through drawStyle attribute)
      id: a2239830-492f-4d27-98f3-cb7ecb77c56f # Unique identifier
      links: # Links
        - targetBlank: true # Open in a new tab
          title: "1" # Name
          url: "1" # URL address
      transformations: # Data transformations
        - id: "organize" # Type organize; used for sorting, rearranging order, showing fields, whether to display 
          options:
            excludeByName: # Hidden fields
              cluster_cpu_utilization: true
            indexByName: # Sort
                cluster_cpu_utilization: 0,
                Time: 1
            renameByName: # Rename
              Time: ""
              cluster_cpu_utilization: "222"
        - id: "merge" # Merging data
          options:
      fieldConfig: # For defining pannel properties and appearance
        defaults: # Default configuration
          custom: # Custom graphic attributes
            align: "left" # Table alignment: left, center, right
            cellOptions: # Table threshold configuration
              type: color-text # Only supports text for threshold color settings
            spanNulls: false # true connects null values; false does not connect; number == 0 connects null values according to 0
            drawStyle: line # Pannel types: line, bars for bar charts, points for point charts
            fillOpacity: 20 # Exists when drawStyle is area (currently does not support configuration, area defaults to 20)
            thresholdsStyle: # Configures how to display thresholds (currently only supports line)
              mode: line # Threshold display format (area not supported currently)
            lineInterpolation: 'stepBefore' # Step chart configuration; defaults to only supporting stepBefore (stepAfter will be supported later)
          decimals: 3 # Decimal points
          min: 0 # Minimum value (currently not supported for page configuration, only supports imports that have been adapted)
          max: 1 # Maximum value (page configuration only applies to stat gauge barGauge pie)
          unit: "%" # Unit
          mappings: # Value mapping configuration (currently only supports value and range types; special types supported on data)
            - options: # Value mapping rules
                "1": # Corresponding value
                  index: 0
                  text: "Running" # Displayed as Running when value is 1
              type: value # Value mapping type
            - options: # Range mapping rules
                from: 2 # Range start value
                to: 3 # Range end value
                result: # Mapping result
                  index: 1
                  text: "Error" # Values from 2 to 3 will display as Error
              type: range # Mapping type for range
            - type: special # Mapping type for special scenarios
              options:
                match: null # nan null null+nan empty true false
                result:
                  text: xxx
                  index: 2
          thresholds: # Threshold configuration
            mode: absolute # Threshold configuration mode, absolute value mode (currently only supports absolute and percentage mode; percentage mode is not supported yet)
            steps: # Threshold steps
              - color: "#a7772f" # Threshold color
                value: "2" # Threshold value
              - color: "#007AF5" # Default value with no value is the Base
        overrides: # Override configuration
          - matcher:
              id: byName # Match based on field name
              options: node # Corresponding name
            properties: # Override configuration; id currently only supports displayName unit
              - id: displayName # Display name override
                value: "1" # Overridden display name
              - id: unit # Unit override
                value: GB/s # Unit value
              - id: noValue # No value display
                value: No value display
      options:
        orientation: horizontal # Control the layout direction of pannels; applies to gauge and barGauge (stat will be supported later)
        legend: # Legend configuration
          calcs: # Calculating methods (only displays when the legend position is on the right)
            - latest # Currently only supports most recent value
          placement: right # Legend position (right or bottom; defaults to bottom)
          placementRightTop: "" # Configuration for the upper right
          showLegend: true # Whether to display the legend
        tooltip: # Tooltips
          mode: multi # Mode dual selection (only multi-mode supported) All data displayed when the mouse hovers over
          sort: asc # Sorting: asc or desc
        reduceOptions: # Value calculating method (used for aggregating data)
          calcs: # Calculating methods (latest, minimum, maximum, average, sum)
            - latest
          limit: 3 # Pie limits the number of slices
        textMode: 'value' # Stat configuration; defines style for displaying metric value; options are auto, value, value_and_name, name, none (currently not supported in the page configuration, but supported in imports)
        colorMode: 'value' # Stat configuration; defines color mode for displaying metric values; options are none, value, background (defaults to value; not supported in configuration but adapted in import)
        displayLabels: ['name','value', 'percent'] # Fields displayed in pie chart labels
        pieType: "pie" # Pie chart type; options are pie and donut
        mode: 'html' # Text chart type mode; options are html and richText
        content: '<div>xxx</div>' # Content for text chart type
        footer:
          enablePagination: true # Table pagination enabled

常用函数和变量

常用函数

定义查询设置时,除使用 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. 向当前面板添加 pannel,引用之前添加的变量,例如:

    • 指标名称:计算组件下 Pod 内存使用

    • 键值对:kindDeploymentname$deploymentnamespace$namespace

  4. 添加并保存 pannels 后,可在面板首页查看对应 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