Пользовательская переменная Метрика Flink - PullRequest
0 голосов
/ 22 февраля 2019

Я играю с метрикой FLink (1.7) и застрял здесь:

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

  • количество сообщений Protobuf, обработанных customer_id AND по стране и датацентру.
  • количество потраченных долларов (сохраненных в переменной в сообщениях Protobuf) customer_id AND пострана и по типу.
  • и т. д.

цель состоит в том, чтобы иметь данные о прометее, подобные этим:

<job>_<task>_<operator>_my_data_income{website_id="1",country="fr",dc="EUROPE"} 42

чтоЯ сделал это:

public class MyMetricSink extends RichSinkFunction<AbstractASLogMetricEntity> {

    @Override
    public void invoke(AbstractASLogMetricEntity value, Context context) {

        getRuntimeContext()
            .getMetricGroup()
            .addGroup(  "website_id" , value.getCustomer() )
            .addGroup( "country" , value.getCountry() )
            .addGroup(  "dc" , value.getDatacenter() )
            .addGroup( "my_data" )
            .counter( "income" )
            .inc( value.getIncome() );

     }

    @Override
    public void open(Configuration parameters) {       
    }
}

Это не работает => Журнал предупреждений: "Name collision: Group already contains a Metric with the name..." из класса AbstractMetricGroup.

Для правильной работы,Сначала мне нужно создать все счетчики для метода open.Таким образом, у меня будет декартово произведение моих пользовательских метрик для показа.Возможно, в HashMap хранится 1,2 миллиона счетчиков.

У вас есть какие-нибудь предложения, чтобы избежать этого?Это правильный способ сделать это?можно ли сделать что-то, что я хочу, используя где-нибудь работу arround?

Thx

1 Ответ

0 голосов
/ 22 февраля 2019

Это несколько выходит за пределы того, для чего была разработана метрическая система Флинка.Некоторые люди, которые пытались работать с таким количеством метрик, сообщали о проблемах.

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

...