#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 для решения этой проблемы:
Комментарии:
1. Спасибо, Карти кейан.. Я импортирую этот шаблон, проверю его на своем компьютере nifi и дам вам знать
2. Это работает специфично для моего командного приложения… Я предоставил корневую группу процессоров и смог отслеживать журналы, относящиеся ко всем процессорам внутри моего приложения, но у нас также есть служба контроллера, для этого, я думаю, нам нужно использовать еще один rest API для отслеживания службы контроллера… Большое спасибо, Картик
3. Полезно знать. Да, чтобы отслеживать службы контроллера, вам необходимо использовать приведенный ниже rest api в существующем коде python в этом шаблоне give.
http://localhost:8080/nifi-api/controller-services/{id}
Ответ №3:
Вы можете отправить все ошибки в группе процессоров на один и тот же процессор, это может быть обычный атрибут UpdateAttribute или пользовательский процессор, этот процессор добавит путь и всю соответствующую информацию, а затем отправит это в общий поток ошибок / журналов, который проверит информацию внутри файла потока относительно ошибки и примет решение отправлять или нет электронное письмо, кому и тому подобное.
Используя этот подход, система остается простой и внутри NiFi, поэтому вы не добавляете дополнительные уровни сложности, и у вас будет только один процессор для управления ошибками на группу процессов.
Именно так мы справляемся с ошибками в моей компании.