Как контролировать Apache Flink с помощью OpenTelemetry

Как контролировать Apache Flink с помощью OpenTelemetry

21 ноября 2022 г.

Поддержка мониторинга Apache Flink недавно стала доступна в сборщике OpenTelemetry (OTel) с открытым исходным кодом. Вы можете ознакомиться с репозиторием OpenTelemetry здесь! Вы можете использовать этот приемник в сочетании с любым коллектором OTel, включая сборщик OpenTelemetry и дистрибутив сборщика observIQ. Ниже приведены краткие инструкции по настройке дистрибутива OpenTelemetry для observIQ и отправке телеметрии Apache Flink на серверную часть, в нашем случае мы используем Google Cloud Ops.

Вы можете узнать больше на странице observIQ в GitHub: https://github.com/observIQ/observiq-otel-collector

Какие сигналы важны?

Apache Flink – это унифицированная среда пакетной и потоковой обработки с открытым исходным кодом. Сборщик Apache Flink записывает 29 уникальных метрик, так что есть много данных, на которые стоит обратить внимание. Вот некоторые конкретные показатели, которые пользователи считают ценными:

* Время работы и перезапуски * Две разные метрики, которые регистрируют продолжительность непрерывного выполнения задания и количество полных перезапусков задания, соответственно. * Контрольные точки * Ряд показателей мониторинга контрольных точек может сообщить вам количество активных контрольных точек, количество завершенных и неудачных контрольных точек, а также продолжительность текущих и прошлых контрольных точек. * Использование памяти * Метрики, связанные с памятью, часто важны для мониторинга. Сборщик Apache Flink отправляет метрики, которые могут рассказать вам об общем использовании памяти, как в настоящее время, так и во времени, о минимальных и максимальных значениях, а также о том, как память распределяется между различными процессами. Все вышеперечисленные категории могут быть собраны с помощью приемника Apache Flink — так что давайте начнем.

Прежде чем начать

Если у вас еще нет сборщика OpenTelemetry с установленной последней версией приемника Apache Flink, вам нужно будет сделать это в первую очередь. Я предлагаю использовать дистрибутив observIQ OpenTelemetry Collector, который включает в себя приемник Apache Flink (и многие другие) и прост в установке с помощью one- линейный установщик для Linux, Windows, MacOS. Дополнительную документацию по развертыванию сборщика в Kubernetes можно найти в репозитории observiq-otel-collector-k8s. .

Настройка приемника Apache Flink

Перейдите к файлу конфигурации OpenTelemetry. Если вы используете observIQ Collector, вы найдете его в одном из следующих мест:

* /opt/observiq-otel-collector/config.yaml (Linux)

Для observIQ OpenTelemetry Collector отредактируйте файл конфигурации, включив в него приемник Apache Flink, как показано ниже:

receivers:
  flinkmetrics:
    endpoint: http://localhost:8081
    collection_interval: 10s
Processors:
  nop:
   # Resourcedetection is used to add a unique (host.name)
  # to the metric resource(s),...  target_key: namespace
exporters:
  nop:
    # Add the exporter for your preferred destination(s)

service:
  pipelines:
    metrics:
      receivers: [flinkmetrics]
      processors: [nop]
      exporters: [nop]

Если вместо этого вы используете агент Google Ops, вы можете найти соответствующий файл конфигурации здесь.

Просмотр собранных показателей

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

| Метрика | Описание | |----|----| | flink.jvm.cpu.загрузить | Использование ЦП JVM для диспетчера заданий или диспетчера задач. н | | flink.jvm.cpu.time n | Время ЦП, используемое JVM для диспетчера заданий или диспетчера задач. н | | flink.jvm.memory.heap.используется | Объем динамической памяти, используемый в настоящее время. н | | flink.jvm.memory.heap.committed | Объем памяти кучи, гарантированно доступный для JVM. н | | flink.jvm.memory.heap.max n | Максимальный объем памяти кучи, который можно использовать для управления памятью. н | | flink.jvm.memory.nonheap.used | Объем памяти, не являющейся кучей, используемой в настоящее время. н | | flink.jvm.memory.nonheap.committed | Объем памяти без кучи, гарантированно доступный для JVM. н | | flink.jvm.memory.nonheap.max n | Максимальный объем памяти без кучи, который можно использовать для управления памятью. н | | flink.jvm.memory.metaspace.used | Объем памяти, используемый в настоящее время в пуле памяти Metaspace. н | | flink.jvm.memory.metaspace.committed n | Объем памяти, гарантированно доступный для JVM в пуле памяти Metaspace. н | | flink.jvm.memory.metaspace.max n | Максимальный объем памяти, который можно использовать в пуле памяти Metaspace. н | | flink.jvm.memory.direct.используется | Объем памяти, используемый JVM для прямого пула буферов. н | | flink.jvm.memory.direct.total_capacity n | Общая емкость всех буферов в пуле прямых буферов. н | | flink.jvm.memory.mapped.used | Объем памяти, используемый JVM для отображаемого пула буферов. н | | flink.jvm.memory.mapped.total_capacity n | Количество буферов в отображенном пуле буферов. н | | flink.memory.managed.used | Объем управляемой памяти, используемой в настоящее время. н | | flink.memory.managed.total n | Общий объем управляемой памяти. н | | flink.jvm.threads.count n | Общее количество активных потоков. н | | flink.jvm.gc.collections.count n | Общее количество произошедших сборов. н | | flink.jvm.gc.collections.time n | Общее время, затраченное на сборку мусора. н | | flink.jvm.class_loader.classes_loaded | Общее количество классов, загруженных с момента запуска JVM. н | | flink.job.restart.count n | Общее количество перезапусков с момента отправки этого задания, включая полные и детальные перезапуски. н | | flink.job.last_checkpoint.time n | Продолжительность последней контрольной точки от начала до конца. н | | flink.job.last_checkpoint.size n | Общий размер последней контрольной точки. н | | flink.job.checkpoint.count n | Количество завершенных или не пройденных контрольных точек. н | | flink.job.checkpoint.in_progress n | Количество текущих контрольных точек. н | | flink.task.record.count n | Количество записей в задаче. н | | flink.operator.record.count n | Количество записей, которые есть у оператора. н | | flink.operator.watermark.output n | Последний водяной знак, выпущенный этим оператором. п |


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE