跳转至

Chart Block 配置说明

Chart Block 用于在 Markdown 笔记中插入可实时渲染的图表。与静态图片不同,Chart Block 仅需配置图表类型、查询语句和展示参数,预览时由平台图表组件自动执行查询并渲染结果。

基本写法

在 Markdown 中使用 fenced code block,语言标记固定写 chart

version: chart/v1
type: sequence
name: 服务 P99 延迟
time:
  range: 1h
queries:
  - code: A
    qtype: dql
    namespace: metric
    q: 'M::`service_latency`:(p99(`duration`)) { service = "checkout" }'
settings:
  chartType: line
  legendPostion: bottom
  isTimeInterval: true
  xAxisShowType: time
  mainMeasurementQueryCode: A
  unitType: custom
  globalUnit:
    - custom
    - ms

支持的图表类型

图表 type 说明
时序折线图 sequence 展示随时间变化的趋势,常用于指标、日志数量、延迟、错误率等
概览图 singlestat 展示一个核心数值,可用于总量、峰值、平均值等
表格图 table 展示明细或聚合后的多列数据
柱状图 bar 展示分类对比,例如按来源、状态码、服务分组统计
直方图 histogram 展示分布情况,例如耗时分布、bucket 分布
饼图 pie 展示占比,例如错误类型占比、来源占比

通用字段

字段 是否必填 说明
version 固定为 chart/v1
type 图表类型,只能使用当前支持的 6 种类型
name 图表标题,渲染在图表卡片头部
description 图表说明,目前主要用于配置可读性
time.range 查询时间范围,例如 15m1h1d;不填时默认按 1h 预览
queries 查询列表,必须是非空数组
settings 图表展示配置,不同图表类型可使用不同字段
注意

如果 Chart Block 前一行 Markdown 标题与 name 完全一致,预览时将自动隐藏外部标题,避免标题重复显示。

queries 字段

queries 为数组,每个查询项表示一条图表查询。

字段 是否必填 说明
code 查询编号,推荐使用 ABC
qtype 查询语言,支持 dqlpromql
namespace 查询命名空间,DQL 常用:metriclogobjecteventtracingrum
q 查询语句
name 查询展示名;不填时使用 code

建议将 q 用单引号包裹,以避免 YAML 对特殊字符的解析异常:

q: 'L::re(`.*`):(count(`*`)) BY `source`'

若查询语句本身包含单引号,需在 YAML 单引号字符串中将其写为两个单引号:

q: 'L::re(`.*`):(count(`*`)) { `service` = ''checkout'' }'

settings 通用配置

settings 会透传到平台现有图表组件中。常用字段如下:

字段 说明
chartType 图表内部形态,例如 lineareaLinebarpiedoughnuthistogram
legendPostion 图例位置,常用 bottomrighthide。注意字段名是 legendPostion
precision 小数精度,建议写字符串,例如 "2"
isTimeInterval 是否按时间序列展示,时序图通常为 true,分组类图通常为 false
xAxisShowType X 轴展示方式,时序常用 time,分类常用 groupBy
mainMeasurementQueryCode 主查询编号,常用 A
mainMeasurementSort 主指标排序,常用 topbottom
mainMeasurementLimit 展示数量上限,例如 1020
unitType 单位类型,常用 custom
globalUnit 全局单位,例如 ['custom', 'ms']['custom', 'count']
showLine 概览图是否展示趋势线
openStack 是否开启堆叠
stackType 堆叠类型
enableCombine 饼图是否合并小占比项
combine 饼图合并规则
promqlType PromQL 查询类型,常用 rangeQuery

各图表示例

时序折线图 sequence

适合展示某个指标随时间变化的趋势。

version: chart/v1
type: sequence
name: 服务 P99 延迟
time:
  range: 1h
queries:
  - code: A
    qtype: dql
    namespace: metric
    q: 'M::`service_latency`:(p99(`duration`)) { service = "checkout" }'
settings:
  chartType: line
  legendPostion: bottom
  isTimeInterval: true
  xAxisShowType: time
  mainMeasurementQueryCode: A
  unitType: custom
  globalUnit:
    - custom
    - ms

概览图 singlestat

适合展示一个核心指标值,例如错误总数、峰值、平均值。

version: chart/v1
type: singlestat
name: 近 1 小时错误数
time:
  range: 1h
queries:
  - code: A
    qtype: dql
    namespace: log
    q: 'L::re(`.*`):(count(`*`)) { status = "error" }'
settings:
  precision: "0"
  isTimeInterval: false
  showLine: false
  unitType: custom
  globalUnit:
    - custom
    - count

表格图 table

适合展示 Top 列表、明细列表或聚合结果。

version: chart/v1
type: table
name: Top 慢接口
time:
  range: 1h
queries:
  - code: A
    qtype: dql
    namespace: log
    q: 'L::re(`.*`):(`time`, `source`, `message`) LIMIT 20'
settings:
  queryMode: toGroupColumn
  showColumns:
    - time
    - source
    - message
  mainMeasurementQueryCode: A
  mainMeasurementSort: top
  mainMeasurementLimit: 20

柱状图 bar

适合展示分类对比,例如错误来源分布、状态码分布。

version: chart/v1
type: bar
name: 日志来源分布
time:
  range: 1h
queries:
  - code: A
    qtype: dql
    namespace: log
    q: 'L::re(`.*`):(count(`*`)) BY `source`'
settings:
  direction: vertical
  xAxisShowType: groupBy
  isTimeInterval: false
  showTopSize: false
  aliasVersion: 2
  mainMeasurementLimit: 10
  unitType: custom
  globalUnit:
    - custom
    - count

直方图 histogram

适合展示分布。PromQL 场景可用于 bucket/histogram 查询。

version: chart/v1
type: histogram
name: 请求耗时分布
time:
  range: 1h
queries:
  - code: A
    qtype: promql
    q: 'histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))'
settings:
  chartType: histogram
  direction: vertical
  legendPostion: bottom
  isTimeInterval: false
  promqlType: rangeQuery
  unitType: custom
  globalUnit:
    - custom
    - ms

饼图 pie

适合展示占比,例如错误类型占比、来源占比。

version: chart/v1
type: pie
name: 错误来源占比
time:
  range: 1h
queries:
  - code: A
    qtype: dql
    namespace: log
    q: 'L::re(`.*`):(count(`*`)) { status = "error" } BY `source`'
settings:
  chartType: doughnut
  legendPostion: right
  mainMeasurementQueryCode: A
  mainMeasurementSort: top
  mainMeasurementLimit: 8
  enableCombine: true
  combine:
    percent: "5"
    operator: lt
  unitType: custom
  globalUnit:
    - custom
    - count

字段废弃说明

chart/v1 不再使用以下旧字段名,新配置请使用对应替代字段:

废弃字段 替代字段
title name
view settings
queries[].id queries[].code
queries[].lang queries[].qtype
queries[].datasource queries[].namespace

错误示例:

version: chart/v1
type: sequence
title: 服务延迟
queries:
  - id: q1
    lang: dql
    datasource: metric
    q: 'M::x'
view:
  chartType: line

正确示例:

version: chart/v1
type: sequence
name: 服务延迟
queries:
  - code: A
    qtype: dql
    namespace: metric
    q: 'M::x'
settings:
  chartType: line

配置校验规则

Chart Block 在渲染前会进行以下校验:

  • version 必须是 chart/v1
  • type 必须是 sequencesinglestattablebarhistogrampie 之一。
  • name 不能为空。
  • queries 必须是非空数组。
  • 每个 query 必须包含 codeqtypeq
  • qtype 只能是 dqlpromql
  • YAML 必须能被正确解析。

校验失败时,预览区将展示错误卡片及原始配置内容,不影响笔记中其他 Markdown 内容的正常显示。

配置建议

  • Chart Block 仅用于配置查询和展示参数,请勿在其中写入静态数据,例如 dataitemsseries
  • 查询语句建议来自实际可执行的查询,确保渲染结果准确。
  • 如需插入多张图表,可连续编写多个 chart block,每个 block 对应一张图表。
  • 如仅需文字说明,直接使用 Markdown 编写即可,无需使用 Chart Block。
  • 若图表渲染结果为空,建议优先检查时间范围、查询条件、命名空间及查询语句是否正确。

旧 chart_json 兼容说明

系统仍可解析旧版 chart_json fenced block,以兼容历史笔记数据。新建笔记及 AI 生成内容请统一使用 chart/v1

文档评价

文档内容是否对您有帮助? ×