TT Bigdata TT Bigdata
首页
GitHub (opens new window)
JaneTTR

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • Ambari 深度专题

  • Bigtop 方法论

  • 自定义集成

  • Ambari Server 与 Web

  • Ambari Metrics

    • 试读&介绍

    • 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-聚合指标写入-接口实战

  • Ambari Plus 思考

  • Redis集成实战

  • 通用代码模板

  • 各组件代码

  • 技术专题
  • Ambari Metrics
  • Ambari-Metrics解读【简写AMS】
  • AMS-Collector-普通指标写入-接口实战
JaneTTR
2025-09-17
目录
一、实验目标与背景
二、实验一:追加写入 —— 新时间戳应追加
1、操作步骤
2、查询与结果对比
三、实验二:覆盖写入 —— 相同时间戳应覆盖
1、操作步骤
2、查询返回(关键片段)
四、实验三:数组类写入 —— 多对象拆分亦可
1、操作步骤
2、现象与结论
五、三类写入方式一览(结论速查)
六、易错与实战建议
七、复现清单(可直接照搬)

[/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-Metrics#源码解析#Ambari
[/metrics] — 普通指标写入方法
[/metrics] — 数据写入代码整体逻辑

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

最近更新
01
当前版本 2026/08
08-29
02
把 Ambari Server HA 稳稳地跑起来
08-17
03
从一次启用操作追到主备就绪
08-17
更多文章>
Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式