# #google-cloud-dataflow #apache-beam
Вопрос:
У нас есть потоковый конвейер Apache Beam, который работает на потоке данных Google Cloud. Каждое сообщение, поступающее в конвейер, является документом JSON и содержит атрибут типа события. Я хотел бы отслеживать количество сообщений для каждого значения типа события. (В конечном счете, я хочу отобразить диаграмму в Google Cloud Monitoring, которая отображает столбчатую диаграмму подсчета каждого типа событий.)
Я нашел документацию по созданию пользовательской метрики счетчика в Apache Beam: https://beam.apache.org/documentation/programming-guide/#types-of-metrics который предоставляет этот код:
Counter counter = Metrics.counter( "namespace", "counter1");
@ProcessElement
public void processElement(ProcessContext context) {
// count the elements
counter.inc();
//...
}
однако этот код просто увеличит счетчик для каждого сообщения в конвейере, он не предоставляет счетчик для каждого типа события, что мне нужно. Есть ли способ подсчитать количество сообщений на тип события?
Комментарии:
1. Знаете ли вы
eventType
это заранее? Или он должен быть сгенерирован самим элементом?2. Тип события является частью сообщения (т. е. частью элемента).
3. Если вы не знаете их раньше, я не думаю, что вы можете использовать показатели. Может быть, вы могли бы попробовать использовать комбинаторы с глобальным окном и накоплением элементов или состояний
4. Ах, я думаю, что понимаю ваш вопрос (меня смутило использование слова «сгенерированный»). Область возможных значений для
eventType
неизвестна,eventType
т. е. в будущем могут быть значения, о которых мы в настоящее время не знаем.5. Вы можете создавать собственные метрики, используя библиотеки клиентов мониторинга. Надеюсь, это поможет Связать [1]: — cloud.google.com/monitoring/custom-metrics/… Ссылка [2]: — cloud.google.com/monitoring/custom-metrics/… Ссылка [3]: — cloud.google.com/monitoring/custom-metrics/…