文档概述

本帮助文档详细说明自定义图表JSON配置中各字段的含义和用法。JSON配置采用对象数组结构,每个对象代表一个图表或配置项。以下表格详细列出了所有可配置字段及其属性。

点击 JSON 切换到JSON编辑模式

JSON配置结构

基本规则

JSON配置是一个数组,包含两种类型的元素:

图表分组配置(非必需)

{
  "group": "节点",  // 分组标识
  "config": {
    "selector": ["namespaces"],  // 该分组使用的选择器
    "active": true,  // 是否默认选中展示
    "defaultThemes": {  // 默认主题配置
      "theme.name": { ... }
    }
  }
}

图表配置(有chart字段)

{
  "group": "节点",      // 所属分组
  "chart": "stat",         // 图表类型
  "title": "节点数量",     // 图表标题
  "width": 4,             // 宽度(栅格系统,总宽12)
  "height": 250,          // 高度(像素,-1表示自适应)
  "query": "...",         // 查询语句
  "config": { ... }       // 图表特定配置
}

主要字段说明

通用字段

字段名 类型 必填 默认值 说明 示例
group 字符串 - 图表所属的分组名称,用于界面分类 "通用", "CPU详情", "JVM"
chart 字符串 - 图表类型标识符 请参见《图表示例》文档。
title 字符串 - 图表显示标题 "CPU 使用量", "内存使用率"
width 整数 - 图表宽度(基于12列网格系统) 112: 6(半宽), 12(全宽)
height 整数 自动 图表高度(像素),部分图表类型专用 200, 130
tags 字符串数组 [] 标签数组,用于筛选和分类 ["pod"], ["内存", "JVM"]

数据查询字段

字段名 类型 必填 适用图表类型 说明 示例
query 字符串 条件必填 top, stat 单值查询的PromQL表达式 "sum by(pod)(rate(container_cpu_usage_seconds_total[5m]))"
query_range 字符串 条件必填 line 时间范围查询的PromQL表达式 "max by(pod)(cc_pod_cpu_used{...})"
unit 字符串 所有 数据单位,系统自动格式化 "核", "bytes", "Percent(0-1)"

配置字段(config)

字段名 类型 必填 说明 示例
config.description 字符串 图表详细描述,支持HTML "<code>container_cpu_usage_seconds_total</code>,该指标表示..."
config.theme 字符串 引用的预定义主题名称 "line.right250", "tooltip.enterable"
config.legend.formatter 字符串 图例显示格式模板 "${pod}", "${pod}(${pool}) ${metric}"
config.tooltip.formatter 字符串 提示框显示格式模板 "${pod} (${node})", "${pod} > ${database}.${collection}.${command}"
config.asc 字符串 数据排序规则 "${pod}", "${pod}_${volume}", "${pod}_${metric}"
config.state.color 字符串 stat图表状态颜色 "#dc3545", "#ffc107", "#6c757d"
config.colorMap 对象 值到颜色的映射 {"trace": "${primary-bg-subtle}", "error": "${danger}"}
config.seriesSort 对象 数据系列排序规则 {"metric": ["平均使用时间", "平均获取时间"]}
config.series 字符串 指定作为系列分组的字段 "metric", "state", "level"
config.selector 数组 选择器配置(示例中多为空数组) []

视觉样式字段

字段名 类型 必填 说明 示例
echarts 对象 ECharts底层配置选项 {"color": ["#22D3AC"], "xAxis": {"splitNumber": 5}}
echarts.color 字符串数组 图表系列颜色数组 ["#22D3AC", "#5470c6", "#91cc75"]
echarts.xAxis.splitNumber 整数 X轴刻度分割段数 5

TOP图表专用字段(top对象)

字段名 类型 必填 说明 示例
top.columns 对象数组 表格列配置 见下方columns详细说明
top.color 字符串数组 排行榜颜色渐变 ["#22D3AC"], ["#4A88FD"]
top.columns[].title 字符串 列标题 "pod", "CPU使用总时间"
top.columns[].metric 字符串 指标字段名 "pod", "node"
top.columns[].value 整数 值索引(通常为1) 1
top.columns[].sort 字符串 排序字段 "pod"
top.columns[].defaultSort 字符串 默认排序方向 "desc"(降序)
top.columns[].unit 字符串 列数据单位 "核", "bytes"

组合图表专用字段(group图表类型)

字段名 类型 必填 说明 示例
config.children 对象数组 子图表配置数组 包含多个图表配置对象的数组

预定义主题配置(defaultThemes)

字段名 类型 说明 示例
defaultThemes 对象 顶层配置,定义可复用的主题 位于JSON数组的第一个对象
defaultThemes.<主题名> 对象 具体主题配置 "line.right250", "tooltip.enterable"
defaultThemes.<主题名>.grid 对象 图表网格配置 {"top": 5, "left": 0, "right": 250, "bottom": 0}
defaultThemes.<主题名>.legend 对象 图例配置 {"orient": "vertical", "left": null, "right": 0}
defaultThemes.<主题名>.tooltip 对象 提示框配置 {"enterable": true, "extraCssText": "max-height: 600px;"}

变量模板系统

变量名 说明 使用场景
${namespace} Kubernetes命名空间 所有查询中的命名空间过滤
${pod} Pod名称 查询过滤和图例/提示框显示
${workload} 工作负载名称 查询过滤
${node} 节点名称 查询过滤和图例/提示框显示
${podPattern} Pod名称模式 更灵活的Pod名称匹配

图表类型对照表

chart值 图表类型 主要用途 关键配置字段
line 折线图 时间序列趋势展示 query_range, config.legend, config.tooltip
top TOP排行榜 排名数据展示 query, top.columns, top.color
stat 统计卡片 单一数值展示 query_range, config.state.color
group 组合容器 嵌套多个子图表 config.children, width, height
alert 告警总览 告警信息可视化 通常无需额外配置
alert-list 告警列表 告警详细列表 通常无需额外配置
event 事件总览 事件信息可视化 tags
event-list 事件列表 事件详细列表 tags
log 日志总览 日志信息可视化 tags

单位类型参考

unit值 说明 格式化规则
"核" CPU核心数 保留2位小数
"bytes" 字节数 自动转换为KB/MB/GB/TB
"bytes/sec" 字节每秒 自动转换并添加”/s”后缀
"Percent(0-1)" 百分比 转换为百分比显示(0-100%)
"seconds" 时间格式显示
"ops/s" 操作每秒 保留整数或小数
"ops/m" 操作每分钟 保留整数或小数
"" 无单位 原样显示

颜色系统参考

颜色变量 典型值 使用场景
${primary} #4A88FD 主要指标、正常状态
${success} #22D3AC 成功状态、健康指标
${warning} #ffc107 警告状态、需要注意
${danger} #dc3545 危险状态、异常指标
${info} #6c757d 信息状态、次要指标
${dark} #212529 深色背景、终止状态

配置示例片段

状态图配置(stat)

{
  "chart": "stat",
  "title": "告警 致命",
  "width": 6,
  "height": 200,
  "query_range": "count (ALERTS{namespace=~'${namespace}',severity='critical',alertstate='firing'})  or vector(0)",
  "unit": "",
  "config": {
    "state.color": "#dc3545"
  }
}

仪表盘配置(gauge)

{
  "group": "node",
  "chart": "gauge",
  "title": "平均CPU使用率",
  "width": 3,
  "height": 250,
  "query": "sum(cc_node_cpu_used{node=~'${node}'})/sum(cc_node_cpu_total{node=~'${node}'})",
  "unit": "Percent(0-1)",
  "config": {
    "theme": "gauge.width3"
  }
},

柱状图配置(bar)

{
  "group": "node",
  "chart": "bar",
  "title": "节点当前Pod数量",
  "width": 6,
  "query": "(sum by(node, phase)((kube_pod_status_phase>0)*on(namespace, pod)group_left(node)kube_pod_info{node=~'${node}'}))or(label_replace(max by(node)(kube_node_status_allocatable{node=~'${node}',resource='pods'})-sum by(node)((kube_pod_status_phase{phase=~'Pending|Running'}>0)*on(namespace,pod)group_left(node)kube_pod_info{node=~'${node}'}),'phase','idle','',''))",
  "config": {
    "theme": "bar.stack",
    "colorMap": {
      "Running": "${primary}",
      "Succeeded": "${success}",
      "Pending": "${warning}",
      "Failed": "${danger}",
      "idle": "${primary-bg-subtle}"
    },
    "seriesSort": {
      "phase": [
        "Pending",
        "Running",
        "Succeeded",
        "Failed",
        "idle"
      ]
    },
    "xAxis": "node",
    "yAxis": "value",
    "series": "phase",
    "asc": "${node}-${phase}"
  }
}

旭日图(sunburst)

{
  "id": "node-001",
  "tags": [],
  "group": "node",
  "chart": "sunburst",
  "title": "节点健康状态",
  "width": 6,
  "query": "sum by(node, state)((label_replace((up{job='kubelet',metrics_path='/metrics',node=~'${node}'} == 0) + 1, 'state', 'unknown', '', '')))or on(node)(sum by(node,state)(label_replace(kube_node_status_condition{condition='Ready',status='true',node=~'${node}'} == 1,'state', 'ready', '', '')or label_replace(kube_node_status_condition{condition='Ready',status='false',node=~'${node}'} == 1,'state', 'notReady', '', '')or label_replace(kube_node_status_condition{condition!='Ready',status='true',node=~'${node}'} == 1,'state', '$1', 'condition', '(.+)')))",
  "unit": "",
  "config": {
    "levels": [
      "state",
      "node"
    ]
  }
}

饼图配置(pie)

{
  "group": "node",
  "chart": "pie",
  "title": "CPU 总量",
  "width": 4,
  "query": "max by(node)(cc_node_cpu_total{node=~'${node}'})",
  "unit": "核",
  "config": {
    "theme": "pie.rose",
    "tooltip": {
      "formatter": "${node}",
      "axisFormatter": "${timestamp}"
    },
    "asc": "${node}"
  }
}

折线图配置(line)

{
  "group": "通用",
  "chart": "line",
  "title": "CPU 使用量",
  "width": 6,
  "query_range": "max by(node,pod)(cc_pod_cpu_used{node=~'${node}',namespace=~'${namespace}',pod=~'${pod}',workload=~'${workload}'})",
  "unit": "核",
  "config": {
    "legend": {
      "formatter": "${pod}"
    },
    "tooltip": {
      "formatter": "${pod} (${node})"
    },
    "asc": "${pod}"
  }
}

Top配置(top)

{
  "group": "CPU详情",
  "chart": "top",
  "title": "CPU使用总时间",
  "width": 4,
  "query": "sum by(node, namespace, pod)(irate(container_cpu_usage_seconds_total{namespace=~'${namespace}',pod=~'${pod}',pod=~'${podPattern}',image!='',job='kubelet',metrics_path='/metrics/cadvisor'}[5m]))",
  "unit": "核",
  "config": {
    "description": "<code>container_cpu_usage_seconds_total</code>,该指标表示容器在所有CPU模式下(用户态+内核态)消耗的总CPU时间(秒)。这是评估容器CPU使用情况的综合指标,可以反映容器的工作负载强度。"
  },
  "top": {
    "columns": [
      {
        "title": "pod",
        "metric": "pod"
      },
      {
        "title": "node",
        "metric": "node"
      },
      {
        "title": "CPU使用总时间",
        "value": 1,
        "sort": "pod",
        "defaultSort": "desc",
        "unit": "核"
      }
    ],
    "color": [
      "#22D3AC"
    ]
  }
}

主题定义配置

{
  "group": "通用",
  "config": {
    "selector": [],
    "defaultThemes": {
      "tooltip.enterable": {
        "tooltip": {
          "enterable": true,
          "extraCssText": "max-height: 600px; overflow-y: auto;"
        }
      },
      "line.right250": {
        "grid": {
          "top": 5,
          "left": 0,
          "right": 250,
          "bottom": 0
        },
        "legend": {
          "orient": "vertical",
          "left": null,
          "right": 0,
          "textStyle": {
            "width": 220
          }
        },
        "tooltip": {
          "enterable": true,
          "extraCssText": "max-height: 600px; overflow-y: auto;"
        }
      }
    }
  }
}

通过以上字段说明,您可以系统地理解JSON配置中各部分的作用,从而创建出符合需求的自定义图表。建议从简单配置开始,逐步尝试高级特性,以达到最佳的可视化效果。

作者:叶奕珺  创建时间:2025-12-18 14:13
最后编辑:叶奕珺  更新时间:2026-01-15 14:15