Есть ли способ отправить по электронной почте продолжительность рабочего процесса с электронным письмом о завершении? Есть ли такая переменная, которую я могу использовать?

2
Pasha 4 Дек 2014 в 19:33

2 ответа

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

0
scalauser 7 Дек 2014 в 10:37
Я думал об этом, но надеялся на более чистое решение. Интересно, что интерфейс Hue может показывать продолжительность; таким образом, я предполагаю, что это должно быть где-то в журналах.
 – 
Pasha
9 Дек 2014 в 20:33

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

<action name="start-time">
  <shell xmlns="uri:oozie:shell-action:0.1">
    <job-tracker>${jobTracker}</job-tracker>
    <name-node>${nameNode}</name-node>
    <exec>utc-time.sh</exec>
    <file>../common/utc-time.sh#utc-time.sh</file>
    <capture-output/>
  </shell>
  <ok to="the-first-actual-action"/>
  <error to="fail"/>
</action>

И это можно проверить с помощью Java EL в электронном письме, которое мы отправляем по завершении, с ошибкой, например:

<action name="email">
  <email xmlns="uri:oozie:email-action:0.1">
    <to>${emailsToAlert}</to>
    <subject>COMPLETED: ${wf:name()}</subject>
    <body>
      Workflow ID: ${wf:id()}
      Workflow Name: ${wf:name()}
      Workflow app path: ${wf:appPath()}
      Start Time: ${wf:actionData('start-time')['time']}
      End Time: ${timestamp()}
    </body>
  </email>
  <ok to="end"/>
  <error to="fail"/>
</action>

Получение длительности — это еще одно упражнение, связанное с передачей времени начала и окончания сценарию bash.

Я исследовал функциональность Oozie SLA, но не нашел способ извлечения данных.

0
Tom Harrison 8 Янв 2018 в 06:17