доступ к системным метрикам Flink в коде на терминал вместо использования какого-либо репортера метрик, такого как JMX

Я использовал JMX в качестве репортера метрик, чтобы получить метрики Flink, но есть ли способ получить их в качестве вывода в терминале?

Я хочу построить numRecordsInPerSecond для каждого оператора для анализа производительности, как я могу это сделать?

Я видел несколько примеров аккумуляторов, но это не дало мне правильного представления о том, как мне проводить анализ производительности Flink. Я приведу здесь пример

введите здесь описание изображения

Это план выполнения моей программы Flink, у меня несколько вопросов, но я хочу задать базовый.

  1. как я могу измерить задержку для каждого оператора, а затем сложить ее, чтобы вычислить общую задержку для сложного события.

  2. как мне измерить выходную пропускную способность? В настоящее время я написал код в функции выбора, который подсчитывает количество увиденных сложных событий и время работы движка Flink. Это лучший способ сделать это?

Но остается основной вопрос: как я могу получить выходные данные для системных показателей, упомянутых в Flink metrics с помощью кода, который будет отображаться в выводе терминала, поскольку я хочу построить график производительности, а проблема с JMX заключается в том, что он показывает мне показатели по запросу в в смысле, я вижу значения, когда нажимаю на эту конкретную метрику в консоли JMX, что не идеально подходит для анализа системы.

PS - Я нашел один вопрос, заданный в StackOverflow для вычислений. пропускная способность и задержка, и ответ был примерно таким

private static class MyMapper extends RichMapFunction<String, Object> {

    private transient Meter meter;

    @Override
    public void open(Configuration parameters) throws Exception {
        super.open(parameters);
        this.meter = getRuntimeContext()
                .getMetricGroup()
                .meter("myMeter", new DropwizardMeterWrapper(new com.codahale.metrics.Meter()));
    }

    @Override
    public Object map(String value) throws Exception {    
        this.meter.markEvent();
        return value;
    }
}

Я также добавил вышеуказанный класс в свой код, но не видел никаких выходных данных, и мне также интересно, как этот код покажет пропускную способность или задержку, поскольку мы не упомянули, для какого оператора мы хотим найти задержку? Например, я хочу найти пропускную способность для оператора где-то в середине плана выполнения, а не в конце плана, сделает ли это за меня приведенный выше код?


person Amarjit Dhillon    schedule 22.10.2017    source источник
comment
Вы можете добавить дополнительный репортер показателей: ci.apache.org/projects/flink/flink-docs-release-1.3/monitoring/. Один из способов - определить своего собственного репортера, заставив все задания Flink отправлять свои показатели вашему собственному репортеру и делать все, что вы хотите. Другой способ - получение метрик через REST API Flink: ci.apache.org/projects/flink/flink-docs-release-1.3/monitoring/   -  person BrightFlow    schedule 23.10.2017
comment
не могли бы вы предоставить мне пример кода, как мой репортер может измерять задержку, например, для оператора   -  person Amarjit Dhillon    schedule 23.10.2017
comment
Чесней Шеплер опубликовал репортер показателей log4j на github.com/zentol/log4jreporter, возможно, он вам пригодится. .   -  person David Anderson    schedule 23.10.2017


Ответы (1)


У вас уже есть все задержки и количество записей в секунду In / Out для каждого компонента, указанного на панели Flink Dashboard, нет необходимости реализовывать дополнительный настраиваемый счетчик или метрики для расчета записей в секунду In / Out для каждого компонента.

И если вы хотите реализовать свой собственный счетчик / измеритель, вам понадобится этот код, и вы должны сопоставить его с тем компонентом, на который вы нацеливаетесь.

person Shripad S Barne    schedule 27.04.2018