Какие метрики получает Flink MetricReporter? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть несколько рабочих процессов Apache Flink (пакетных, не потоковых), и моя цель - получить некоторые пользовательские метрики из Flink в Cloudwatch.Я уверен, что процесс будет выглядеть примерно так:

  1. В моем коде Flink создайте несколько объектов метрик, например getRuntimeContext().getMetricGroup().getCounter("numInputElements");

  2. Реализуйте пользовательский MetricReporter и зарегистрируйте его так, чтобы Flink отправил мой Counter с шага 1 в Reporter

  3. Объедините метрики в MetricReporter: все метрики называются "numInputElements"следует суммировать так, чтобы в конце MetricReporter нужно было только поместить одну метрику "numInputElements" в Cloudwatch.

  4. MetricReporter, когда она report() s, помещает«numInputElements» в Cloudwatch.

Мои вопросы относятся к шагу 3:

  1. Сколько у меня будет MetricReporter экземпляров?Если это больше, чем 1 на рабочий процесс Flink, мне нужно будет агрегировать метрики в Cloudwatch, а также в моей логике MetricReporter.Если мой рабочий процесс по одному на каждый слайс, то мне нужно только агрегировать в Cloudwatch, потому что у меня будет n срезов, каждый из которых создаст одну метрику "numInputElements", а n MetricsReporter каждый получит один«numInputElements» для отправки в Cloudwatch.

  2. Если у меня более 1 MetricReporter экземпляров, что определяет, какие метрики отправляются каждому MetricReporter?

1 Ответ

0 голосов
/ 26 июня 2019

Каждый из менеджеров заданий и задач имеет свои собственные экземпляры репортера метрик.И каждый параллельный фрагмент ваших пользовательских функций будет иметь свои собственные метрики, с отдельными именами для каждой подзадачи.Обычно агрегация метрик выполняется вне Flink, с запросами, которые агрегируются по именам метрик (которыми вы можете управлять через их форматы области видимости).

Репортеры метрик довольно просты - взгляните на некоторые источники.

...