TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装教程
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装教程
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)
  • 试读&介绍

  • Ambari-Metrics解读【简写AMS】

    • 源码下载及环境初始化
    • 项目目录及模块解读
    • AMS-Collector剖析

    • AMS-Collector表结构实战

    • AMS-Collector-元数据-接口实战

    • AMS-Collector-指标查询-接口实战

    • AMS-Collector-普通指标写入-接口实战

      • [/metrics] — 反向分析接口参数
      • [/metrics] — 普通指标写入方法
      • [/metrics] — 验证写入逻辑规则
        • 一、实验目标与背景
        • 二、实验一:追加写入 —— 新时间戳应追加
          • 1、操作步骤
          • 2、查询与结果对比
        • 三、实验二:覆盖写入 —— 相同时间戳应覆盖
          • 1、操作步骤
          • 2、查询返回(关键片段)
        • 四、实验三:数组类写入 —— 多对象拆分亦可
          • 1、操作步骤
          • 2、现象与结论
        • 五、三类写入方式一览(结论速查)
        • 六、易错与实战建议
        • 七、复现清单(可直接照搬)
      • [/metrics] — 数据写入代码整体逻辑
      • [/metrics] — 拦截非法指标写入
      • [/metrics] — 指标数据入库
    • AMS-Collector-聚合指标写入-接口实战

  • GOD-Ambari-Metrics
  • Ambari-Metrics解读【简写AMS】
  • AMS-Collector-普通指标写入-接口实战
JaneTTR
2025-09-17
目录

[/metrics] — 验证写入逻辑规则

# 一、实验目标与背景本章聚焦:写入行为验证

目的:基于三组对照实验,验证 相同时间戳是否覆盖、新增时间戳是否追加、以及 多对象数组是否等价支持,并用查询结果闭环校验。

适用场景

  • 自定义指标联调:判定“补点/纠错/回灌”的生效方式
  • 大规模上报压测:确认写入与查询一致性
  • 看板对齐:避免前端误解为“脏读/丢点”

# 二、实验一:追加写入 —— 新时间戳应追加

# 1、操作步骤

替换 metrics,去掉最早的 2384,新增 1758095682884:77:

"metrics": {
"1758095682484": 8,
"1758095682584": 9,
"1758095682684": 99,
"1758095682784": 10,
"1758095682884": 77
}
1
2
3
4
5
6
7

发起请求(APIFOX 执行):

image-20250918090841120

# 2、查询与结果对比

执行查询接口:

image-20250918091133965

返回体关键片段(对比追加前后):

// 追加前
"metrics": {
"1758095682384": 7.0,
"1758095682484": 8.0,
"1758095682584": 9.0,
"1758095682684": 99.0,
"1758095682784": 10.0
}

// 追加后
"metrics": {
"1758095682384": 7.0,
"1758095682484": 8.0,
"1758095682584": 9.0,
"1758095682684": 99.0,
"1758095682784": 10.0,
"1758095682884": 77.0
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

结论:新增时间戳被追加,历史点位保留。

# 三、实验二:覆盖写入 —— 相同时间戳应覆盖

# 1、操作步骤

将已有时间戳的值全部替换,并新增 1758095682984:9999:

"metrics": {
"1758095682384": 1,
"1758095682484": 1,
"1758095682584": 1,
"1758095682684": 2,
"1758095682784": 4,
"1758095682884": 3,
"1758095682984": 9999
}
1
2
3
4
5
6
7
8
9

执行请求与查询(已完成):

image-20250918092730163

# 2、查询返回(关键片段)

image-20250918092828599

"metrics": {
"1758095682384": 1.0,
"1758095682484": 1.0,
"1758095682584": 1.0,
"1758095682684": 2.0,
"1758095682784": 4.0,
"1758095682884": 3.0,
"1758095682984": 9999.0
}
1
2
3
4
5
6
7
8
9

结论:相同时间戳的值被覆盖;新增时间戳正常追加。

# 四、实验三:数组类写入 —— 多对象拆分亦可

# 1、操作步骤

把一次请求拆分为两个对象(同一 metricname/appid/hostname):

{
  "metrics": [
    {
      "hostname": "dev1",
      "metrics": {
        "1758095682384": 1
      },
      "starttime": 1758095682484,
      "appid": "amssmoketestfake",
      "metricname": "ttbigdata.test"
    },
    {
      "hostname": "dev1",
      "metrics": {
        "1758095682484": 2323
      },
      "starttime": 1758095682484,
      "appid": "amssmoketestfake",
      "metricname": "ttbigdata.test"
    }
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

执行结果:

image-20250918093830903

# 2、现象与结论

image-20250918094025342

  • 与“单对象、多个点”的写法效果等价;
  • 拆分更利于“补点/错点更正”的发布策略(按批次提交)。

# 五、三类写入方式一览(结论速查)

场景 请求特征 查询表现 规则归纳
追加写入 新增 未出现 的时间戳点 原有点位保留,新增点 追加 新时间戳 → 追加
覆盖写入 修改 已存在 时间戳对应的值 对应时间戳的值被 覆盖,新点仍追加 相同时间戳 → 覆盖
数组类写入 多对象拆分(同指标/同主机/同 appId) 与合并写法一致,便于“补点/分批” 写法等价,按需选择

# 六、易错与实战建议

注意

  • 1)时间戳单位=毫秒;
  • 2)新指标写入到 METRICS_METADATA_UUID 存在可见性延迟(JVM 缓存 + 聚合),耐心等待数分钟;
  • 3)hostname/appId/metricname 必须与查询条件一致,否则“写入成功但查不到”;
  • 4)批量校验时,务必设置合理的 时间窗口 覆盖到你的点位。

实战建议

  • 补点/回灌:优先使用“拆分对象”的数组写法,降低一次请求体积,便于失败重试;
  • 幂等校验:同一时间戳多次上报,最后一次的值为准;
  • 压测策略:先小批量验证“覆盖/追加”规则,再扩大点位与并发。

# 七、复现清单(可直接照搬)

1)准备初始 5 个点; 2)执行“追加写入”,新增 2884:77,查询应多 1 个点; 3)执行“覆盖写入”,替换已有值并新增 2984:9999,查询应“旧值变化 + 新点追加”; 4)执行“数组类写入”,两对象提交,查询应与合并写法一致。

备注:本章截图与 JSON 片段

均来自同一组实验环境(dev1/amssmoketestfake/ttbigdata.test),便于你在本地快速复现对照。

#Ambari#Ambari-Metrics#TimelineService#Collector#Controller#Metadata
[/metrics] — 普通指标写入方法
[/metrics] — 数据写入代码整体逻辑

← [/metrics] — 普通指标写入方法 [/metrics] — 数据写入代码整体逻辑→

最近更新
01
[/metrics/aggregated] — 聚合数据范围 检查点
09-19
02
[/metrics] — 反向分析接口参数 请求抓包
09-17
03
[/metrics] — 普通指标写入方法 POST
09-17
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式