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-指标查询-接口实战

      • [/metrics] — 监控数据接口查询方法
      • [/metrics] — 请求参数概括及详解索引
        • 一、代码职责梳理
          • 1. TimelineWebServices 【Controller 层】
        • 二、参数详解索引
          • 1. metricNames
          • 2. hostname
          • 3. appId
          • 4. precision
          • 5. limit
          • 6. grouped
          • 7. topN, topNFunction, isBottomN
          • 8. seriesAggregateFunction
      • [/metrics] — Service 代码整体逻辑概览
      • [/metrics] — metricNames 生命周期
      • [/metrics] — seriesAggregateFunc生命周期
      • [/metrics] — getUuidsForGetMetricQuery精讲
      • [/metrics] — applyTopNCondition精讲
      • [/metrics] — getAggregateMetricRecords精讲
      • [/metrics] — getMetricRecords精讲
      • [/metrics] — 临时指标精讲
    • AMS-Collector-普通指标写入-接口实战

    • AMS-Collector-聚合指标写入-接口实战

  • GOD-Ambari-Metrics
  • Ambari-Metrics解读【简写AMS】
  • AMS-Collector-指标查询-接口实战
JaneTTR
2025-09-13
目录

[/metrics] — 请求参数概括及详解索引速查

# 一、代码职责梳理

# 1. TimelineWebServices 【Controller 层】

入口代码:

timelineMetricStore.getTimelineMetrics(
        parseListStr(metricNames, ","),        // 支持多 metric
        parseListStr(hostname, ","),           // 支持多 host
        appId, parseStr(instanceId),
        parseLongStr(startTime), parseLongStr(endTime),
        Precision.getPrecision(precision), parseIntStr(limit),
        parseBoolean(grouped), parseTopNConfig(topN, topNFunction, isBottomN),
        seriesAggregateFunction);
1
2
3
4
5
6
7
8

这里的逻辑可以拆成两个步骤:

  1. 参数解析

    • parseListStr、parseLongStr、parseBoolean 等工具方法把 HTTP GET 参数 转成 Java 类型。
    • 避免字符串直接拼 SQL/HBase 查询,保证安全性与类型正确性。
  2. 调用服务层

    • 参数准备好后,调用 timelineMetricStore.getTimelineMetrics。
    • 实际运行时,timelineMetricStore 的实现类就是 HBaseTimelineMetricsService。

Controller→Service

小结

上图对应了 Controller → Service 的调用关系:前者负责参数解析,后者负责查询与聚合。

# 二、参数详解索引

下面逐一对参数进行解读,配合源码和截图,帮助快速理解其作用。

# 1. metricNames

  • 代码: parseListStr(metricNames, ",")
  • 作用: 支持一次查询多个指标,参数之间用逗号分隔。
  • 示例: cpu_user,cpu_system。

详解可以参考这篇文章

[/metrics] — metricNames 生命周期

# 2. hostname

  • 代码: parseListStr(hostname, ",")
  • 作用: 支持多个主机查询,用 , 分隔。
  • 示例: host1,host2,host3。

详解可以参考这篇文章

[/metrics] — condition生命周期

# 3. appId

  • 作用: 标识组件名称,例如 datanode、namenode、RESOURCEMANAGER。
  • 理解: 其实就是主机上安装的组件 ID,Collector 通过它区分指标来源。

# 4. precision

  • 代码: Precision.getPrecision(precision)
  • 作用: 控制数据的粒度。
  • 可选值: 秒 / 分钟 / 小时 / 天。

precision 参数

# 5. limit

  • 作用: 限制返回的数据点数,避免接口返回过大结果集。
  • 默认上限: 5760。

limit 参数

注意

若触发了 UUID 聚合表 查询,limit 参数会被忽略:

UUID 聚合逻辑

# 6. grouped

  • 默认值: true
  • 作用: 将多条结果合并成一条输出。
  • 对比: 类似 SQL 中的 GROUP BY。

grouped 参数

# 7. topN, topNFunction, isBottomN

  • 作用: 触发 TopN 查询逻辑。
  • 条件: topN 需要传入数字才生效。
  • 实现: 在 Service 层拼接 applyTopNCondition。

TopN 参数

详解可以参考这篇文章

  • [/metrics] — metricNames 生命周期
  • [/metrics] — applyTopNCondition精讲

# 8. seriesAggregateFunction

  • 作用: 对结果集进行二次聚合。
  • 支持函数: avg、max、min、sum。
  • 应用时机: 在结果返回之前。

seriesAggregateFunction 参数

详解可以参考这篇文章

[/metrics] — seriesAggregateFunction生命周期

#Ambari#Ambari-Metrics#TimelineService#Collector#Controller#Metadata
[/metrics] — 监控数据接口查询方法
[/metrics] — Service 代码整体逻辑概览

← [/metrics] — 监控数据接口查询方法 [/metrics] — Service 代码整体逻辑概览→

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