SuperAPI AI 工具集

axiom-build-dashboard

数据与分析

查看项目

更新于 10-29 14:29

技能介绍

用途

该技能用于通过 API 设计和搭建 Axiom 仪表盘,覆盖图表类型、APL 与 metrics/MPL 查询模式、SmartFilter、布局以及配置选项。

设计理念

  • 决策优先:每个面板都应回答一个能导向行动的问题。
  • 总览 → 下钻 → 证据:从宽泛开始,通过点击或筛选收窄,最后落到原始日志。
  • 优先用比率和分位数而非平均值;平均值会掩盖问题,p95/p99 能暴露问题。
  • 简洁优于密集:一个面板一个问题,不堆砌图表。
  • 用数据验证:不猜字段,先发现 schema。
  • 能算就计算,不能算就延后:若某面板无法计算,用 Note 记录阻塞原因,不得替换成其他指标。

入口与工作流

技能列出多种起点:模糊描述(摄入 → 检查数据集类型 → 设计蓝图 → 逐面板查询 → 部署)、模板(选模板 → 定制数据集/服务/环境 → 部署)、Splunk 仪表盘(提取 SPL → 经 axiom-spl-to-apl 翻译 → 映射图表类型 → 部署)、Grafana 仪表盘(生成规范化面板规格 → 翻译 PromQL → 映射图表类型 → 部署),以及探索(用 axiom-sre 发现 schema/信号后产品化为面板)。

摄入:先问什么

需确认受众与决策(值班排查、团队健康、高管汇报)、范围(服务、环境、区域、集群、端点;单服务或跨服务)以及数据集类型。通过 MCP listDatasets 检查 kind:otel:metrics:v1 / otel-metrics-v1 属 metrics 数据集,走 Metrics 路径;其余属事件/日志数据集,走 APL 路径。注意:不要对 metrics 数据集运行 getschema,它返回 0 行且不报错。

蓝图

APL 蓝图(事件/日志数据集)分四层:概览(Statistic 面板,如错误率、p95 延迟、请求速率、活跃告警)、趋势(TimeSeries,如流量、错误率、延迟分位随时间变化)、分解(Table/Pie,如 Top 10 失败路由、Top 10 错误消息、按错误率排序的最差 Pod、状态分布)、证据(LogStream + SmartFilter,过滤错误并投影关键字段)。

Metrics/MPL 蓝图(metrics 数据集)同样分四层:概览(当前值,按面板要展示的组函数选择,单位取自指标元数据或变换后的新单位;0–1 比率需在 MPL 中 | map * 100 后传 --unit "%")、趋势(按区间展示选择 align 函数,仅按低基数标签分组,≤10 条序列,单位写进 --name)、分解(按实体拆分并过滤控制序列数,一面板一维度)、实体状态(布尔/状态指标,稀疏指标可用固定更宽区间)。分桶须用 align to $__interval using …,hard-coded 窗口会过解析或欠解析;chart-add --mpl 拒绝内联时间范围([1h..])。

图表类型与约束

  • Statistic:单一 KPI 当前值,查询必须返回一行。
  • TimeSeries:时间趋势、分位叠加,用 bin_auto(_time) 和 percentiles_array()。
  • Table:Top-N 列表、分解,用 top N 限界,用 project 控制列。
  • Pie:占比,≤6 类,禁止高基数。
  • LogStream:原始事件查看,不允许行限制、聚合或 join,用 project-keep 选字段并保留 _time。
  • Heatmap:分布/延迟密度,summarize histogram(field, buckets) by bin_auto(_time)。
  • Scatter Plot:按组关联两个指标。
  • SmartFilter:交互式筛选栏,每个面板查询需 declare query_parameters。
  • Monitor List:监控状态展示,无 APL,在 UI 选择监控。
  • Note:Markdown 上下文、标题、runbook 链接。

配置与 APL 写法

chart-add 覆盖常用路径(type、id、name、query、dataset、unit、sparkline);未暴露的选项可从 chart-add 输出出发、用 jq 合并额外字段。仪表盘图表查询从时间选择器继承时间,无需写 _time 过滤;临时查询需显式 where _time between (ago(1h) .. now())。用 bin_auto(_time) 自动适配时间窗口,手动 bin(_time, …) 仅在特殊场景且需说明理由。分组须用 top N 或过滤限界,避免对 user_id、trace_id 等高基数字段无界分组。含点的字段用方括号写法,字段名本身含点的需转义。

布局与组装

layout-pack 按行优先把图表放入 12 列网格,按类型有默认尺寸(Statistic 3×3、TimeSeries 6×4、Table 6×5、LogStream 12×6、Note 12×2),可用 id:WxH 覆盖。折叠分组是顶层 sections 数组,通过 --section 传入;标题在第一个冒号前,图表 id 逗号分隔且必须匹配;--section-collapsed 设默认折叠;section id 由标题派生 UUID,同一标题下次运行保持相同 id。未出现在任何 section 的图表保持未分组,SmartFilter 图表应保持未分组。作为网格表头的 Note 属于布局而非 section。

设置与共享

dashboard-assemble --refresh oncall|team|exec 对应 60/300/900 秒,或传 ≥60 的整数;短刷新配长时间范围会产生昂贵查询。API token 只能创建共享仪表盘(owner 为 X-AXIOM-EVERYONE),不支持私有仪表盘;按用户的数据可见性仍由数据集权限控制。URL 支持时间范围参数:?t_qr=24h(快捷范围)、?t_ts=...&t_te=...(自定义)、?t_against=-1d(对比)。

部署脚本

  • scripts/chart-add:输出单个图表 JSON;区分 APL 与 MPL;检查 MPL 内联时间范围;按图表类型应用单位字段。
  • scripts/layout-pack:输出布局 JSON 数组。
  • scripts/dashboard-assemble:由图表文件与布局组合完整仪表盘 JSON,负责外层结构(owner、schemaVersion、qr- 前缀、刷新校验、id 交叉检查、sections)。
  • scripts/dashboard-list/get/validate/create/update/copy/link/delete:列取、获取、校验、创建、更新(需版本)、克隆、取分享链接、删除(需确认)。
  • scripts/dashboard-chart-patch:仅改一个图表,调用 PATCH /v2/dashboards/uid/{uid}/charts/{chartId},patch 只含要改的字段,null 移除字段,嵌套对象递归合并;--version 做乐观并发,--overwrite 为最后写入者胜。
  • scripts/axiom-api 与 scripts/metrics/axiom-api 不可互换:前者用于仪表盘应用 API,后者用于数据/指标端点与边缘路由,用错会 404。

流程

用 chart-add、layout-pack、dashboard-assemble 掌管 JSON 形状,每个图表放独立临时文件。步骤:发现 schema → 写每个面板查询并用明确时间过滤校验 APL(MPL 遵循图表契约)→ 逐图 chart-add 重定向到文件 → layout-pack 定布局 → dashboard-assemble 组合(可重复 --section)→ dashboard-validate 后 create/update → dashboard-link 取 URL,不要手工拼。

常见坑

getschema 返回 0 行通常是数据集为 metrics 类型;metrics API 404 通常是用了错误的 axiom-api 脚本;Statistic 对 0–1 比率显示 1 而非 100% 是因为 Console 不缩放 OTel 单位 1,需在 MPL 中 | map * 100。

限制

该技能依赖 Axiom 的 API、MCP 与脚本环境;本资料未说明费用、配额、支持的数据集规模上限或各图表类型的完整字段清单。