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

JSON配置结构
基本规则
JSON配置是一个数组,包含两种类型的元素:
图表分组配置(非必需)
{
"group": "节点",
"config": {
"selector": ["namespaces"],
"active": true,
"defaultThemes": {
"theme.name": { ... }
}
}
}
图表配置(有chart字段)
{
"group": "节点",
"chart": "stat",
"title": "节点数量",
"width": 4,
"height": 250,
"query": "...",
"config": { ... }
}
主要字段说明
通用字段
| 字段名 |
类型 |
必填 |
默认值 |
说明 |
示例 |
group |
字符串 |
是 |
- |
图表所属的分组名称,用于界面分类 |
 "通用", "CPU详情", "JVM" |
chart |
字符串 |
是 |
- |
图表类型标识符 |
请参见《图表示例》文档。 |
title |
字符串 |
是 |
- |
图表显示标题 |
"CPU 使用量", "内存使用率" |
width |
整数 |
否 |
- |
图表宽度(基于12列网格系统) |
1~12: 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