Уведомление по электронной почте от BizTalk о неудачных сообщениях и ошибках от средства просмотра событий - PullRequest
0 голосов
/ 12 января 2019

введите описание изображения здесь Пожалуйста, дайте мне знать, как получить уведомление по электронной почте, когда сообщение не удается выполнить в BizTalk, а также при возникновении ошибки в средстве просмотра событий.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

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

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

<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[Provider[@Name='BizTalk DW Reporting' or @Name='BizTalk Server' or @Name='BizTalk Server Deployment' or @Name='BizTalk Server EDI' or @Name='ENTSSO' or @Name='XLANG/s'] and (Level=1  or Level=2)]]</Select>
  </Query>
</QueryList>

, а затем экспортировал это в расписание задач Windows, которое запускает скрипт powershell всякий раз, когда обнаруживает, что в пользовательском средстве просмотра появляется новая запись.

Я следовал грубым принципам, приведенным здесь для сценария powershell.

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

Это сценарий powershell, который я использую

$event = get-eventlog -LogName Application -Source "XLANG/s","BizTalk Server","BizTalk DW Reporting","BizTalk Server Deployment","BizTalk Server EDI","ENTSSO" -EntryType "Error" -newest 1
#get-help get-eventlog will show there are a handful of other options available for selecting the log entry you want.
$eventtime = $event.TimeGenerated


#ignore any messagebox errors
if (($event.EntryType -eq "Error"  -and $event.EventID -inotin 6998, 10514))
{
    $Source = $event.Source
    $PCName = $env:COMPUTERNAME
    $EmailBody = "$Source Error captured at " + $event.TimeGenerated + " in windows error log on BizTalk-UAT server: `n`n" + $event.Message
    $EmailFrom = "????-BizTalk-UAT@???.com"
    $EmailTo = @('????-BizTalk-UAT@???.com') 
    $EmailSubject = "BizTalk-UAT Server - Windows Log - " + $event.EntryType
    $SMTPServer = "mail.????.com"
    Write-host "Sending Email" $EmailFrom "To" $EmailTo
    Send-MailMessage -From $EmailFrom -To $EmailTo -Subject $EmailSubject -body $EmailBody -SmtpServer $SMTPServer

}
else
{
    write-host "No error found"
    write-host "Here is the log entry that was inspected:"
$event
}
0 голосов
/ 12 января 2019

«Правильный» способ сделать это с помощью инструмента мониторинга для Windows и других платформ.

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

В приложениях BizTalk обязательно создайте события Windows (Event Viewer) в своем коде обработки исключений.

...