这段文档是关于 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.pswp.cn/pingmian/91350.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91350.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/91350.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【氮化镓】GaN同质外延p-i-n二极管中星形与三角形扩展表面缺陷的电子特性

2025年7月23日,美国国家标准与技术研究院(NIST)与美国海军研究实验室的Andrew J. Winchester等人在《Applied Physics Letters》期刊发表了题为《Electronic properties of extended surface defects in homoepitaxial GaN diodes》的文章,基于光电发射电子显微术、导电原子…

使用 Scrapy 框架定制爬虫中间件接入淘宝 API 采集商品数据

一、引言 在电商数据分析、市场调研等领域&#xff0c;获取淘宝平台上的商品数据是一项常见需求。淘宝提供了 API 接口&#xff0c;允许开发者通过授权的方式获取商品信息。本文将介绍如何使用 Scrapy 框架定制爬虫中间件&#xff0c;实现对淘宝 API 的接入&#xff0c;从而高…

Jmeter全局变量跨线程组的使用

一、线程组1中从数据库中查询到字段值二、BeanShell取样器中设置为全局变量#为什么说props.put("Out1",Out);其实是设置Out1为Jmeter的属性了呢&#xff1f; 因为在后面的调试取样器运行结果中&#xff0c;会发现如果只打开显示变量开关&#xff0c;是看不到Out1运行…

前端技术栈详解

前端技术栈是指构建现代Web应用程序所需的一系列技术和工具的集合。以下是当前主流前端技术栈的详细解析&#xff1a; 一、核心基础技术 1. HTML5 作用&#xff1a;网页内容的结构化标记关键特性&#xff1a; 语义化标签&#xff08;<header>, <section>, <arti…

Git Pull 时遇到 Apply 和 Abort 选项?详解它们的含义与应对策略

在使用 Git 进行团队协作时&#xff0c;git pull 是最常用的命令之一&#xff0c;用于拉取远程仓库的最新代码并合并到本地分支。但有时执行 git pull 后&#xff0c;Git 会提示 ​Apply&#xff08;应用&#xff09;​​ 和 ​Abort&#xff08;中止&#xff09;​​ 两个选项…

暑期算法训练.11

目录 47. 力扣203 移除链表元素 47.1 题目解析&#xff1a; ​编辑 47.2 算法思路&#xff1a; 47.3 代码演示&#xff1a; ​编辑 48. 力扣2.两数相加 48.1 题目解析&#xff1a; ​编辑 48.2 算法思路; 48.3 代码演示&#xff1a; 48.4 总结反思&#xff1a; …

nl2sql grpo强化学习训练,加大数据量和轮数后,准确率没提升,反而下降了,如何调整

在NL2SQL任务中使用GRPO强化学习训练时&#xff0c;增加数据量和训练轮数后准确率下降&#xff0c;通常是由过拟合、训练不稳定、奖励函数设计不合理、数据质量问题或探索-利用失衡等原因导致的。以下是具体的诊断思路和调整策略&#xff0c;帮助定位问题并优化性能&#xff1a…

PHP/Java/Python实现:如何有效防止恶意文件上传

文章目录 木马病毒防范:文件上传如何彻底防止伪造文件类型 引言 一、文件类型伪造的原理与危害 1.1 常见伪造手段 1.2 潜在危害 二、防御体系设计 2.1 防御架构 三、核心防御技术实现 3.1 服务端验证实现 3.1.1 文件内容检测(Python示例) 3.1.2 扩展名与内容双重验证(Java示…

SpringBoot系列之基于Redis的分布式限流器

SpringBoot系列之基于Redis的分布式限流器 SpringBoot 系列之基于 Redis 的分布式限流器 图文并茂,代码即拷即用,支持 4 种算法(固定窗口 / 滑动窗口 / 令牌桶 / 漏桶) 一、为什么要用分布式限流? 单机 Guava-RateLimiter 在集群下会 各玩各的,流量漂移,无法全局控量。…

面试遇到的问题2

Redisson的看门狗相关问题 首先要明确一点&#xff0c;看门狗机制的使用方式是&#xff1a;在加锁的时候不加任何参数&#xff0c;也就是&#xff1a; RLock lock redisson.getLock("myLock"); try {lock.lock(); // 阻塞式加锁// 业务逻辑... } finally {lock.unl…

Linux—进程概念与理解

目录 1.冯诺依曼体系结构 小结&#xff1a; 2.操作系统 概念&#xff1a; 结构示意图&#xff1a; 理解操作系统&#xff1a; 用户使用底层硬件层次图&#xff1a;​编辑 3.进程 概念 结构示意图 task_ struct内容分类 典型用法示例 观察进程: 了解 PID PPID 查…

LeetCode 面试经典 150_数组/字符串_买卖股票的最佳时机(7_121_C++_简单)(贪心)

LeetCode 面试经典 150_数组/字符串_买卖股票的最佳时机&#xff08;7_121_C_简单&#xff09;题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;贪心算法&#xff09;&#xff1a;代码实现代码实现&#xff08;思路一&…

Ubuntu 18.04 repo sync报错:line 0: Bad configuration option: setenv

repo sync时报 line 0: Bad configuration option: setenv因为 Ubuntu 18.04 默认的 openssh-client 是 7.6p1&#xff0c;还不支持 setenv&#xff0c;但是.repo/repo/ssh.py 脚本中明确地传入了 SetEnv 参数给 ssh&#xff0c;而你的 OpenSSH 7.6 不支持这个参数。需要按如下…

bug记录-stylelint

BUG1不支持Vue文件内联style样式解决&#xff1a; "no-invalid-position-declaration": null

前端开发(HTML,CSS,VUE,JS)从入门到精通!第一天(HTML5)

一、HTML5 简介1&#xff0e;HTML全称是 Hyber Text Markup Language&#xff0c;超文本标记语言&#xff0c;它是互联网上应用最广泛的标记语言&#xff0c;简单说&#xff0c;HTML 页面就等于“普通文本HTML标记&#xff08;HTML标签&#xff09;“。2&#xff0e;HTML 总共经…

智慧收银系统开发进销存:便利店、水果店、建材与家居行业的—仙盟创梦IDE

在数字化转型的浪潮中&#xff0c;收银系统已不再局限于简单的收款功能&#xff0c;而是成为企业进销存管理的核心枢纽。从便利店的快消品管理到建材家居行业的大宗商品调度&#xff0c;现代收银系统通过智能化技术重塑了传统商业模式。本文将深入探讨收银系统在不同行业进销存…

三维扫描相机:工业自动化的智慧之眼——迁移科技赋能智能制造新纪元

在当今工业4.0时代&#xff0c;自动化技术正重塑生产流程&#xff0c;而核心工具如三维扫描相机已成为关键驱动力。作为工业自动化领域的“智慧之眼”&#xff0c;三维扫描相机通过高精度三维重建能力&#xff0c;解决了传统制造中的效率瓶颈和精度痛点。迁移科技&#xff0c;自…

Jmeter的元件使用介绍:(九)监听器详解

监听器主要是用来监听脚本执行的取样器结果。Jmeter的默认监听器有&#xff1a;查看结果树、聚合报告、汇总报告、用表格查看结果&#xff0c;断言结果、图形结果、Beanshell监听器、JSR223监听器、比较断言可视化器、后端监听器、邮件观察器&#xff0c;本文介绍最常用的监听器…

联通元景万悟 开源,抢先体验!!!

简介&#xff1a; 元景万悟智能体平台是一款面向企业级场景的一站式、商用license友好的智能体开发平台&#xff0c;是业界第一款go语言&#xff08;后端&#xff09;开发的智能体开发平台&#xff08;7月19日&#xff09;&#xff0c;coze studio开源是7月26日&#xff0c;同时…

Git之本地仓库管理

一.什么是Git在学习工作中&#xff0c;我们经常会遇到改文档的场景。一个文档可能会被我们修改多次&#xff0c;而最终真正使用的可能是最先的几版。而如果我们直接在原文档上修改&#xff0c;就会导致无法找到最先的几次。这也就导致我们要对我们所有的版本进行维护&#xff0…