Как контролировать противодавление Flink в Grafana с помощью метрик Prometheus

#apache-flink #grafana #prometheus #flink-streaming

#apache-flink #grafana #prometheus #flink-потоковая передача

Вопрос:

Веб-интерфейс Flink имеет великолепный раздел противодавления. Но я не вижу никаких показателей, предоставленных Prometheus reporter, которые можно было бы использовать для определения противодавления таким же образом для панели мониторинга Grafana.

введите описание изображения здесь Есть ли какой-нибудь способ получить те же показатели за пределами веб-интерфейса Flink? Используя метрики, описанные здесь https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/metrics.html . Или даже наличие скребка prometheus для очистки веб-api?

Ответ №1:

Мониторинг противодавления, который отображается на панели мониторинга Flink, не использует систему показателей, поэтому эти значения недоступны через MetricsReporter. Но вы можете получить доступ к этой информации через REST api по адресу

 /jobs/:jobid/vertices/:vertexid/backpressure
  

Хотя этот механизм определения противодавления полезен, у него есть свои ограничения. Это работает путем вызова Thread.getStackTrace(), что является дорогостоящим, и некоторые операторы (такие как AsyncFunction) выполняют критические действия в потоках, которые не обрабатываются.

Другой способ исследовать противодавление — установить этот параметр конфигурации в flink-conf.yaml

 taskmanager.network.detailed-metrics: true
  

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

Комментарии:

1. Привет. Спасибо за ваш ответ. Можете ли вы предоставить дополнительную информацию о длинах входящих / исходящих сетевых очередей? Предполагая, что это inputQueueLength описание `Количество входных буферов в очереди`.. Что не очень понятно, это количество событий, которые находятся во внутреннем буфере, ожидающем потребителя? Также существует ли верхняя граница того, насколько большой может быть эта длина очереди? Другими словами, хотя я знаю, что длина внутреннего буфера 0 означает отсутствие противодавления, как мне узнать, высокое оно или низкое.

2. За исключением источников, у которых нет входных буферов, и приемников, у которых нет выходных буферов, вы можете просмотреть как входные, так и выходные очереди. Количество событий в буфере зависит от того, поскольку буферы отправляются, когда они заполнены, или когда наступает время ожидания буфера, но обычно в одном буфере может быть много событий. Объем памяти, доступный для сетевых буферов, настраивается, а необходимый объем зависит от используемого параллелизма. Возможно, вам потребуется поэкспериментировать и понаблюдать за такими показателями, как maxQueueLength. И вы, вероятно, можете получить более дельный совет из списка рассылки flink-user.