- PVSM.RU - https://www.pvsm.ru -
Привет! Я Сергей Житинский, CEO DevOps-компании «Git in Sky». В статье расскажу, как настроить мониторинг Apache NiFi [1]и алерты при переполнении очереди по достижении 8000 FlowFiles.
Зачем вам читать эту статью? Переполнение очереди FlowFiles в Apache NiFi может привести к замедлению или остановке обработки данных, мониторинг позволит своевременно среагировать на проблемы с производительностью и выявить узкие места.
Статей о том, что такое Apache NiFi, довольно много: Раз [2], Два [3], Три [4].
Для начала опишу, как работает NiFi и какие именно метрики с какими параметрами отвечают за это.
Функция: Мониторинг ресурсов сервера, таких как центральный процессор, оперативная память, дисковое пространство и сеть. Эти метрики важны для поддержания общей работоспособности системы.
Пример: Использование CPU, использование RAM, скорость чтения/записи на диск, пропускная способность сети.
Абстракция: Системный мониторинг абстрагирует ресурсы инфраструктуры, обеспечивая видимость и контроль за состоянием серверов и других компонентов системы.
Функция: Мониторинг состояния приложений, включая их доступность и наличие ошибок. Healthcheck позволяет убедиться, что приложения работают корректно и предоставляют ожидаемые услуги.
Пример: Проверка доступности веб-сервиса, отслеживание ошибок в логах приложения.
Абстракция: Healthcheck абстрагирует состояние приложений, обеспечивая контроль за их доступностью и корректной работой.
Функция: Мониторинг доступности зависимых сервисов и их взаимодействия с основным приложением. Это важно для обеспечения устойчивости и производительности системы в целом.
Пример: Проверка доступности базы данных, API внешнего сервиса.
Абстракция: Мониторинг связей абстрагирует зависимости между сервисами, обеспечивая контроль за взаимодействием компонентов системы.
Статусы транзакций (ok/failed/decline): Отслеживание успешных, неудачных и отклоненных транзакций для анализа и оптимизации бизнес-процессов.
Скорость транзакций: Измерение времени, необходимого для выполнения транзакций, для оценки производительности системы.
Время нахождения в статусе (step1, step2, step3): Отслеживание времени, которое транзакции проводят на каждом этапе обработки, для выявления узких мест и улучшения процессов.
Абстракция: Бизнес метрики абстрагируют ключевые показатели производительности и эффективности бизнес-процессов, обеспечивая контроль и оптимизацию операций.
Функция: FlowFiles являются контейнерами данных, передаваемыми между процессорами. Каждый FlowFile состоит из содержимого (данные) и атрибутов (метаданные). Атрибуты включают такие свойства, как имя файла, размер, тип данных и пользовательские атрибуты, добавленные процессорами.
Пример: FlowFile может представлять собой запись журнала, XML файл, JSON объект или любой другой тип данных, который передается и обрабатывается в потоке данных.
Абстракция: FlowFiles абстрагируют данные и метаданные, позволяя легко манипулировать и отслеживать данные на протяжении всего процесса обработки.
Функция: Flow Controller управляет координацией и выполнением процессов внутри NiFi. Он контролирует создание, уничтожение и перемещение FlowFiles между процессорами, обеспечивая соблюдение порядка выполнения и соблюдение правил маршрутизации.
Пример: Flow Controller обеспечивает последовательное выполнение процессоров, управление зависимостями между процессорами и обработку ошибок, чтобы гарантировать надежность и устойчивость потоков данных.
Абстракция: Flow Controller абстрагирует управление потоком данных, позволяя пользователям сосредоточиться на проектировании логики обработки данных без необходимости беспокоиться о деталях выполнения и координации.
Функция: Соединения определяют, как FlowFiles передаются между процессорами. Они управляют очередями FlowFiles, которые ждут обработки следующими процессорами. Потоки файлов, обработанные без сбоев, формируют выполненную очередь (success queue), а сообщения с проблемами обработки передаются в очередь сбоев (failure queue). Существуют и другие типы соединений для различных сценариев обработки данных.
Пример: Соединение может направлять успешно обработанные FlowFiles в следующий процессор, тогда как неудачные FlowFiles будут направлены в процессор, занимающийся обработкой ошибок или повторными попытками.
Абстракция: Соединения абстрагируют маршрутизацию и управление очередями FlowFiles, обеспечивая гибкость и контроль над потоком данных между процессорами.
Итак, нам необходима метрика nifi_amount_items_queued, и если в prometheus сделать запрос этой метрики, то мы увидим большое количество данных со значениями 0
Если посмотреть в web интерфейс NiFi, то там мы увидим все 3 элемента, описанные выше: DataFlow
Потоки управления
Соединения
Да, если вы внимательно посмотрели на последнюю картинку, то там видно, что очереди у нас копятся именно в соединениях success и failure. Соответственно нам необходимо их как - то отлавливать в prometheus. Если сделать запрос по component_name, то данных будет снова очень много и они не все нам нужны.
Давайте сделаем запрос:
nifi_amount_items_queued{component_name!="",source_name!="",destination_name!=""} > 0
Тогда мы увидим интересующие нас метрики с нужными нам значениями:
alt text
Необходимые метрики у нас есть. Давайте нарисуем правило:
groups:
- name: ansible managed alert rules
rules:
- alert: NifiQueueOverflow
expr: nifi_amount_items_queued{source_name!="", destination_name!=""} > 8000 for: 1m labels:
severity: warning annotations:
description: "Queue overflow detected in component {{ $labels.component_name }} (ID: {{ $labels.component_id }}) between {{ $labels.source_name }} and {{ $labels.destination_name }} ({{ $value }} items)"
summary: "Queue Overflow in NiFi"
Это правило сработает, когда количество данных в очереди достигнет 8000 FlowFiles. Не путать с объемом очереди, так как один элемент может весить сколько угодно.
Так выглядит алерт:
На этом у меня все. Пишите комментарии, буду рад получить обратную связь .
Автор: gitinsky
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/apache-2/407520
Ссылки в тексте:
[1] Apache NiFi : https://dzen.ru/away?to=https%3A%2F%2Fnifi.apache.org%2F
[2] Раз: https://dzen.ru/away?to=https%3A%2F%2Fhabr.com%2Fru%2Fcompanies%2Ftbank%2Farticles%2F743886%2F
[3] Два: https://dzen.ru/away?to=https%3A%2F%2Fhabr.com%2Fru%2Fcompanies%2Frostelecom%2Farticles%2F432166%2F
[4] Три: https://dzen.ru/away?to=https%3A%2F%2Fru.wikipedia.org%2Fwiki%2FNiFi
[5] Источник: https://habr.com/ru/articles/873082/?utm_source=habrahabr&utm_medium=rss&utm_campaign=873082
Нажмите здесь для печати.