如何可视化来自VIsualVM上暴露给JMX服务器的Flink的仪表和计数器指标?

时间:2019-03-29 10:55:48

标签: java apache-flink jmx visualvm

我将Flink配置为向JMXReporter公开指标,正如它所说的here。我还配置了一个工作程序节点,使其也将其指标显示给主节点,就像它所说的here。以下是主节点和工作节点上conf/flink-conf.yaml文件的配置。 Flink日志文件说它已连接到JMX服务器。然后,我打开VisualVM并连接到我的JMX服务器,然后转到“ MBeans”选项卡。在那里,我看到了JobManager软件包。但是,我找不到我创建的计数器和仪表。我还安装了JConsole插件。但是,当我转到JConsole选项卡时,会看到以下消息:No JConsole plugin installed. To install a JConsole plugin click the Configure Plugins button and provide full path to the plugin file/directory。根据{{​​3}},我需要一个WtJmxPlugin.jar文件,但我不知道在哪里找到。

# Metrics Reporter on the MASTER node
metrics.reporter.jmx.class: org.apache.flink.metrics.jmx.JMXReporter
metrics.reporter.jmx.port: 8789-8790
metrics.reporter.jmx.interval: 30 SECONDS

# Metrics Reporter on the WORKER node
env.java.opts: -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.56.1

我有一个RichMapFunction正在公开指标。

public static class SensorTypeMapper
        extends RichMapFunction<MqttSensor, Tuple2<CompositeKeySensorType, MqttSensor>> {
    private static final long serialVersionUID = -4080196110995184486L;

    private transient Counter counter;
    private transient Meter meter;

    @Override
    public void open(Configuration config) {
        this.counter = getRuntimeContext().getMetricGroup().counter("counterSensorTypeMapper");

        com.codahale.metrics.Meter dropwizardMeter = new com.codahale.metrics.Meter();
        this.meter = getRuntimeContext().getMetricGroup().meter("meterSensorTypeMapper",
                new DropwizardMeterWrapper(dropwizardMeter));
    }

    @Override
    public Tuple2<CompositeKeySensorType, MqttSensor> map(MqttSensor value) throws Exception {
        this.meter.markEvent();
        this.counter.inc();
        // every sensor key: sensorId, sensorType, platformId, platformType, stationId
        // Integer sensorId = value.getKey().f0;
        String sensorType = value.getKey().f1;
        Integer platformId = value.getKey().f2;
        // String platformType = value.getKey().f3;
        Integer stationId = value.getKey().f4;
        CompositeKeySensorType compositeKey = new CompositeKeySensorType(stationId, platformId, sensorType);
        return Tuple2.of(compositeKey, value);
    }
}

this link

0 个答案:

没有答案