当前位置: 首页 > ai >正文

Apache Ignite 2.8 引入的新指标系统(New Metrics System)的完整说明

这段文档是关于 Apache Ignite 2.8 引入的“新指标系统(New Metrics System)” 的完整说明。这是 Ignite 监控体系的一次重大升级,相比旧的、分散的统计方式,新系统更统一、灵活、可扩展。

我们来逐层拆解、通俗易懂地理解这个新指标系统的架构和使用方法。


🌟 一、为什么要“新指标系统”?

在 Ignite 2.8 之前:

  • 指标分散在 JMX、缓存配置、数据区配置中
  • 难以统一查看
  • 扩展性差

Ignite 2.8 开始,引入了统一的 Metrics System(指标系统),目标是:

统一收集、集中管理、多通道导出


🧱 二、新指标系统的核心概念

1. Metrics(指标)

  • 每个指标是一个“名字 + 值”的组合。
  • 值可以是:
    • 简单类型:long, double, String
    • 复杂对象:比如直方图(Histogram)
  • 示例:
    • io.datastorage.StorageSize → 当前存储大小(单位字节)
    • cache.myCache.CacheHits → 缓存命中次数

2. Registers(指标注册表 / 分组)

  • 指标不是杂乱无章的,而是按功能分组管理,这种分组叫 Register(注册表)
  • 每个 Register 有名字,比如:
    • io.datastorage → 存储相关指标
    • cache.myCache → 名为 myCache 的缓存指标
  • 指标全名 = 注册表名.指标名
    • 例如:cache.myCache.CacheHits

💡 类比:就像文件夹结构

cache.myCache/├── CacheHits├── CacheMisses└── OffHeapEntries

3. Exporters(导出器)—— 指标“出口”

这是新系统最强大的地方:同一个指标,可以通过多种方式“输出”

Ignite 内置了 4 种导出方式(Exporters):

导出器类名作用适用场景
JMXJmxMetricExporterSpi通过 JMX 暴露指标Java 监控工具(如 JConsole)
SQL ViewSqlViewMetricExporterSpi指标变成一张 SQL 表 SYS.METRICS用 SQL 查询指标
LogLogExporterSpi定期打印指标到日志文件简单日志分析
OpenCensusOpenCensusMetricExporterSpi接入 OpenCensus 生态(如 Prometheus、Zipkin)云原生监控

关键点:你可以在一个节点上同时启用多个 Exporter,实现“一份指标,多端输出”。


⚙️ 三、如何配置?—— 启用 Exporter

你需要在节点配置中指定使用哪些 Exporter:

XML 配置示例

<bean class="org.apache.ignite.configuration.IgniteConfiguration"><property name="metricExporterSpi"><list><!-- 通过 JMX 查看 --><bean class="org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi"/><!-- 通过 SQL 查看 --><bean class="org.apache.ignite.spi.metric.sql.SqlViewMetricExporterSpi"/><!-- 写入日志 --><bean class="org.apache.ignite.spi.metric.log.LogExporterSpi"/></list></property>
</bean>

📌 注意:这是节点级配置,只对当前节点生效。


🔍 四、四种 Exporter 详解

1. JMX Exporter(最传统,功能最全)

  • 所有指标都可通过 JMX 访问。
  • Histogram(直方图)指标仅支持 JMX
  • 支持过滤:只导出某些 Register 的指标
JmxMetricExporterSpi jmxExporter = new JmxMetricExporterSpi();
// 只导出缓存相关的指标
jmxExporter.setExportFilter(mreg -> mreg.name().startsWith("cache."));
cfg.setMetricExporterSpi(jmxExporter);

💡 适合:Java 运维人员用 JConsole、VisualVM 查看。


2. SQL View Exporter(最方便!)

  • 指标被映射为一张系统视图:SYS.METRICS
  • 你可以用任何 SQL 工具查询!
SELECT name, value 
FROM SYS.METRICS 
WHERE name LIKE 'cache.myCache.%';

输出示例:

NAMEVALUE
cache.myCache.CacheHits12345
cache.myCache.CacheMisses678
cache.myCache.OffHeapEntries9000

✅ 优势:

  • 不用懂 JMX,会 SQL 就能查
  • 可集成到 BI 工具(如 Grafana、Tableau)
  • 适合开发、DBA 快速排查

3. Log Exporter(最简单)

  • 每分钟(默认)将所有指标打印到日志文件
  • 日志级别:INFO
[INFO] Metrics: cache.myCache.CacheHits=12345io.datastorage.StorageSize=1073741824thread.pool.size=20

✅ 适合:

  • 快速调试
  • 无监控系统时临时分析
  • 日志审计

4. OpenCensus Exporter(最现代)

  • 集成 OpenCensus(现为 OpenTelemetry 前身)
  • 可将指标发送到:
    • Prometheus
    • Stackdriver
    • Zipkin
    • Jaeger
    • 等支持 OpenCensus 的后端
使用步骤:
  1. 加载 ignite-opencensus 模块
  2. 配置 Exporter
  3. 设置 OpenCensus 的 StatsCollector 将数据发往目标系统
支持的配置参数:
参数说明
filter过滤要导出的指标
period导出周期(如 10s)
sendInstanceName是否添加实例名标签
sendNodeId是否添加节点 ID 标签
sendConsistentId是否添加节点一致 ID 标签

✅ 适合:

  • 云原生环境
  • 已有 Prometheus + Grafana 监控栈
  • 需要与微服务链路追踪集成

📊 五、Histogram(直方图)指标详解

某些性能指标是分布式的,比如“SQL 查询耗时”,不能只看平均值,要看分布。

Ignite 支持 Histogram(直方图) 指标,仅通过 JMX 提供

示例:一个耗时直方图

假设边界为 [10ms, 100ms],则生成以下 JMX 属性:

JMX 属性名含义
queryTime_0_10耗时 < 10ms 的次数
queryTime_10_100耗时 10~100ms 的次数
queryTime_100_inf耗时 > 100ms 的次数

💡 你可以据此绘制响应时间分布图,判断是否存在慢查询。


✅ 六、新 vs 旧 指标系统对比

特性旧系统新系统(2.8+)
统一性分散在各处统一注册与管理
可扩展性支持自定义 Exporter
多通道输出支持 JMX/SQL/Log/OpenCensus
SQL 查询支持SYS.METRICS
云原生集成✅ OpenCensus
配置方式各自为政统一在 metricExporterSpi

🛠️ 七、最佳实践建议

  1. 生产环境推荐组合

    <property name="metricExporterSpi"><list><bean class="org.apache.ignite.spi.metric.sql.SqlViewMetricExporterSpi"/><bean class="org.apache.ignite.spi.metric.opencensus.OpenCensusMetricExporterSpi"/></list>
    </property>
    
    • 用 SQL 做日常查询
    • 用 OpenCensus 接入 Prometheus + Grafana
  2. 开发/测试环境

    • 加上 LogExporterSpi,方便看日志
  3. 避免过度收集

    • 如果不需要 Histogram,不要开启
    • 使用 filter 减少不必要的指标输出
  4. 自定义 Exporter

    • 实现 MetricExporterSpi 接口
    • 可对接 Kafka、Elasticsearch、InfluxDB 等

✅ 一句话总结

Ignite 新指标系统是一个“统一采集、多路分发”的监控中枢:它把所有指标按组(Register)管理,并允许你通过 JMX、SQL、日志或 OpenCensus 等多种方式实时查看,特别适合现代监控体系(如 Prometheus + Grafana)。


📌 类比记忆:

比喻解释
Metrics水滴(一个个数据点)
Registers水桶(分类装水)
Exporters水管(把水引到不同地方)
Node Config水泵控制面板(决定开哪几根水管)

如果你想,我可以帮你:

  • 写一个完整的 SYS.METRICS 常用查询清单
  • 生成一份 Prometheus + Grafana 的监控面板配置
  • 提供自定义 Exporter 的代码模板

需要吗?😊

http://www.xdnf.cn/news/16569.html

相关文章:

  • 轻松打造Unity小游戏AR体验
  • Map 集合
  • 适配鸿蒙低性能设备的终极优化方案:从启动到渲染全链路实战
  • IBus vs. Fcitx5:一场 Linux 输入法框架的正面交锋
  • Redis:缓存雪崩、穿透、击穿的技术解析和实战方案
  • HTTPS基本工作过程:基本加密过程
  • 河南萌新联赛2025第(三)场:河南理工大学【补题】
  • 2025最新版Node.js下载安装及环境配置教程【超详图文】
  • BGP高级特性之正则表达式
  • DFT不同维度中gate、cell、instance介绍
  • 智能体产品化的关键突破:企业智能化转型的“最后一公里”如何迈过?
  • Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
  • Jupyter Notebook安装使用
  • WebRTC核心组件技术解析:架构、作用与协同机制
  • Java容器化实践:Docker+K8s部署Spring Boot应用全流程
  • LLM—— 基于 MCP 协议(Streamable HTTP 模式)的工具调用实践
  • 《设计模式之禅》笔记摘录 - 11.策略模式
  • 二叉树的学习
  • 【Java】批量生成Excel放入文件夹并打zip压缩包
  • 八种AI记忆术,重构智能体的“大脑”
  • RFID 系统行业前沿洞察:技术跃迁与生态重构
  • 线性代数常见的解题方法
  • aws(学习笔记第五十课) ECS集中练习(2)
  • 【MySQL 数据库】MySQL索引特性(二)页目录(B和B+树)(非)聚簇索引 索引操作
  • APM32芯得 EP.27 | 告别IDE,为APM32F411打造轻量级命令行开发工作流
  • 《Computational principles and challenges in single-cell data integration》
  • Vite 模块动态导入之Glob导入
  • 微算法科技MLGO突破性的监督量子分类器:纠缠辅助训练算法为量子机器学习开辟新天地
  • PCB学习笔记(一)
  • LeetCode 面试经典 150_数组/字符串_轮转数组(6_189_C++_中等)(额外数组;转置)