MBEANS
#java #observability #mbeans #metric

java mbeans-您怎么知道要刮擦哪些?他们如何工作?这是什么意思?

  - pattern: 'java.lang<type=GarbageCollector, name=(.*)><>CollectionCount'
    name: gc_collection_count

刮擦Mbeans

要记住的第一件事是,MBEAN使用远程方法调用来获取MBEAN暴露的指标。 Java Mbeans的夸克之一是它们的识别方式。这是一个示例对象名称:

java.lang:name=G1 Old Generation,type=GarbageCollector

这是您创建MBEAN的某些代码的示例

import javax.management.*;

public class Main {
    public static void main(String[] args) throws Exception {
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        ObjectName name = new ObjectName("com.example:type=MyMBean,name=MyInstance");
        My mbean = new My();
        mbs.registerMBean(mbean, name);

        System.out.println("MBean registered. Press Enter to exit.");
        System.in.read();
    }
}

所以问题是 - 如何通过字符串确定所有内容?订购至关重要吗?实际上,在域和类型和名称之后,有一个键值对列表,这些是属性。

属性与属性

属性是MBEAN的标识符。在示例中,属性是类型和名称。您可以在上面的示例中使用JMX通过属性过滤。属性是我们正在暴露的指标。在开始时的示例中,CollectionCount是属性。我们也可以在此处添加正则表达式,以暴露所有属性。因此,您也可以通过属性过滤,因为您只能揭示MBEAN的某些属性。但是,通常使用属性来识别和过滤MBEAN。您可以使用MBEAN进行一些很酷的事情,例如创建具有属性可以具有不同值的直方图,并且使用JMX Exporter类型进行此操作,这与用于过滤的属性“类型”完全不同。

但是属性在哪里?

如果您查看MBEAN,您将看到您的标准Getters和Setters,提供对属性的访问。然后将使用RMI调用这些Getters和Setter,以提供对通过您喜欢的JMX Exporter暴露的数据的访问。

对于开头的示例:

Image description

在这里,收集数是使用getter,getCollectionCount暴露的,并且使用JMX使用RMI(远程方法调用)来调用此方法。

寻找MBEANS刮擦

关于Java Mbeans的第一个AHA时刻,它具有一个不错的用户界面来查看它们。而且,幸运的是,如果您安装了Java JDK,则安装了该用户界面,称为JConsole。因此,如果您打开终端并键入JConsole,然后按照提示连接到Java进程,那么您将看到类似的东西:

Image description

注意属性,CollectionCount。因此,您可以看到如何提供以前的模式以访问MBEANS的指标。

mbeans的“类型”

在Java Mbeans方面要记住的最后一件事是,有两件事称为类型。欢迎使用强烈打字的语言。无论如何,当涉及JMX出口商和Prometheus时,不仅有MBEAN的类型,而且还有值类型。示例包括计数器和量规。计数器将处理诸如垃圾收集数量的数量,而规格是连续价值的。此外,Java在MbeAnattributeInfo中具有属性,该类型是单独的MBEAN类型。令人困惑的是,这种属性类型与普罗米修斯解释的值类型不同。

那是什么?

启动片段是JMX出口商规则。它匹配MBEAN类型和所有各种属性。在JMX中,您定义这些规则以确定哪些MBEAN通过JMX导出在外部。