Как получить записи ошибок из журналов nifi, специфичных для моего приложения, при запуске нескольких приложений nifi

#apache-nifi

#apache-nifi

Вопрос:

У нас есть несколько командных приложений nifi, запущенных на одном компьютере nifi… Есть ли какой-либо способ регистрировать журналы, специфичные для моего приложения? Также по умолчанию в файле nifi-app.log сложно отслеживать проблемы, а на доске объявлений сообщение об ошибке отображается всего 5 минут… Как зафиксировать ошибки и отправить оповещение по почте в Nifi?

Пожалуйста, помогите мне справиться с этим. Заранее спасибо!

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

1. Похоже, у вас здесь есть 2 вопроса. Если у вас есть несколько вопросов, пожалуйста, создайте отдельный пост для каждого вопроса.

Ответ №1:

Есть несколько способов подойти к этому. Один из них заключается в том, чтобы перенаправлять взаимосвязи сбоев от процессоров к PutEmail процессору, который может отправлять предупреждение об ошибках. Другой способ заключается в использовании пользовательской задачи создания отчетов для оповещения службы мониторинга, когда определенное количество потоковых файлов находится в очереди ошибок.

Наконец, мы слышали, что в средах с несколькими арендаторами анализ журналов затруднен. Хотя NiFi стремится уменьшить или полностью устранить необходимость визуальной проверки журналов, предоставляя функцию источника данных, в случае, если вам действительно нужно проверить журналы, мы рекомендуем выполнить поиск в журнале по идентификатору процессора, чтобы выделить соответствующие сообщения. Вы также можете использовать сам NiFi для приема тех же журналов и выполнения операций синтаксического анализа и фильтрации, если это необходимо. Будущие версии могут улучшить эту работу.

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

1. Спасибо Энди за ответ. Мы используем PutEmail. Существует несколько сценариев сбоя, поэтому в каждом месте мы используем этот почтовый процессор. Например, если у нас 200 процессоров, около 40 процессоров — это процессор putEmail…

2. Есть ли возможность объединить их в одно PutEmail с параметризованными значениями?

3. Опять же, чтобы параметризовать putEmail, мы должны использовать атрибут обновления 40 или любой другой процессор для параметризации входных данных (тело письма в putEmail)

4. Я предполагаю, что каждое сообщение должно быть уникальным, но я думаю, что с Expression Language, вероятно, есть возможность уменьшить это число. Возможно, вам потребуется привлечь поставщика для предоставления профессиональных услуг.

Ответ №2:

Анализируя журнал nifi, вы можете отделить журналы, специфичные для ваших командных приложений, используя идентификатор группы процессора и Nifi Rest API. Проверьте приведенную ниже ссылку на шаблон nifi и коды python для решения этой проблемы:

https://link.medium.com/L6IY1wTimV

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

1. Спасибо, Карти кейан.. Я импортирую этот шаблон, проверю его на своем компьютере nifi и дам вам знать

2. Это работает специфично для моего командного приложения… Я предоставил корневую группу процессоров и смог отслеживать журналы, относящиеся ко всем процессорам внутри моего приложения, но у нас также есть служба контроллера, для этого, я думаю, нам нужно использовать еще один rest API для отслеживания службы контроллера… Большое спасибо, Картик

3. Полезно знать. Да, чтобы отслеживать службы контроллера, вам необходимо использовать приведенный ниже rest api в существующем коде python в этом шаблоне give. http://localhost:8080/nifi-api/controller-services/{id}

Ответ №3:

Вы можете отправить все ошибки в группе процессоров на один и тот же процессор, это может быть обычный атрибут UpdateAttribute или пользовательский процессор, этот процессор добавит путь и всю соответствующую информацию, а затем отправит это в общий поток ошибок / журналов, который проверит информацию внутри файла потока относительно ошибки и примет решение отправлять или нет электронное письмо, кому и тому подобное.
Используя этот подход, система остается простой и внутри NiFi, поэтому вы не добавляете дополнительные уровни сложности, и у вас будет только один процессор для управления ошибками на группу процессов.

Именно так мы справляемся с ошибками в моей компании.