Class JmxMetricExporterSpi

  • All Implemented Interfaces:
    IgniteSpi, MetricExporterSpi

    public class JmxMetricExporterSpi
    extends IgniteSpiAdapter
    implements MetricExporterSpi

    Overview

    Ignite provides this default built-in implementation of MetricExporterSpi it exports metrics as JMX beans. This implementation works by `pull` architecture which means that after the Ignite node start it should respond to incoming user request.

    Java Example

    See the example below of how the internal metrics can be obtained through your application by constructing MBean names.

     Ignite ignite = Ignition.start(new IgniteConfiguration()
          .setDataStorageConfiguration(new DataStorageConfiguration()
              .setDefaultDataRegionConfiguration(
                  new DataRegionConfiguration()
                      .setMaxSize(12_000_000)))
          .setIgniteInstanceName("jmxExampleInstanceName"));
    
      String igniteInstanceName = ignite.name();
      String metricGroup = "io";
    
      // NOTE: The special characters of metric name must be escaped.
      String metricName = "\"dataregion.default\"";
    
      SB sb = new SB("org.apache:");
    
      if (IgniteSystemProperties.getBoolean("IGNITE_MBEAN_APPEND_CLASS_LOADER_ID", true))
          sb.a("clsLdr=").a(Integer.toHexString(Ignite.class.getClassLoader().hashCode())).a(',');
    
      if (IgniteSystemProperties.getBoolean("IGNITE_MBEAN_APPEND_JVM_ID"))
          sb.a("jvmId=").a(ManagementFactory.getRuntimeMXBean().getName()).a(',');
    
      sb.a("igniteInstanceName=").a(igniteInstanceName).a(',')
          .a("group=").a(metricGroup).a(',')
          .a("name=").a(metricName);
    
      DynamicMBean dataRegionMBean = MBeanServerInvocationHandler.newProxyInstance(
          ignite.configuration().getMBeanServer(),
          new ObjectName(sb.toString()),
          DynamicMBean.class,
          false);
    
      Set listOfMetrics = Arrays.stream(dataRegionMBean.getMBeanInfo().getAttributes())
          .map(MBeanFeatureInfo::getName)
          .collect(toSet());
    
      System.out.println("The list of available data region metrics: " + listOfMetrics);
      System.out.println("The 'default' data region MaxSize: " + dataRegionMBean.getAttribute("MaxSize"));
     
    See Also:
    ReadOnlyMetricManager, ReadOnlyMetricRegistry, IgniteSystemProperties.IGNITE_MBEANS_DISABLED
    • Constructor Detail

      • JmxMetricExporterSpi

        public JmxMetricExporterSpi()
    • Method Detail

      • spiStart

        public void spiStart​(@Nullable
                             @Nullable String igniteInstanceName)
                      throws IgniteSpiException
        This method is called to start SPI. After this method returns successfully kernel assumes that SPI is fully operational.
        Specified by:
        spiStart in interface IgniteSpi
        Parameters:
        igniteInstanceName - Name of Ignite instance this SPI is being started for (null for default Ignite instance).
        Throws:
        IgniteSpiException - Throws in case of any error during SPI start.
      • spiStop

        public void spiStop()
                     throws IgniteSpiException
        This method is called to stop SPI. After this method returns kernel assumes that this SPI is finished and all resources acquired by it are released.

        Note that this method can be called at any point including during recovery of failed start. It should make no assumptions on what state SPI will be in when this method is called.

        Specified by:
        spiStop in interface IgniteSpi
        Throws:
        IgniteSpiException - Thrown in case of any error during SPI stop.