来自BizTalk的失败消息的电子邮件通知&;事件查看器出错

来自BizTalk的失败消息的电子邮件通知&;事件查看器出错,biztalk,biztalk-2016,Biztalk,Biztalk 2016,请告诉我如何在BizTalk中消息失败时以及在事件查看器中出现错误时获取电子邮件通知。正确的方法是使用Windows和其他平台的监视工具 首先,作为您的网络或服务器团队,如果他们有SCOM或Splunk之类的工具,他们无论如何都应该使用这些工具来监视服务器。然后,您可以配置您/他们想要的任何规则,包括电子邮件 在BizTalk应用程序中,只需确保在异常处理代码中创建Windows事件(事件查看器)。我认为这取决于您的解决方案。在我开发的解决方案中,我发现了邮件路由上的大多数故障点,原因是转换错误

请告诉我如何在BizTalk中消息失败时以及在事件查看器中出现错误时获取电子邮件通知。

正确的方法是使用Windows和其他平台的监视工具

首先,作为您的网络或服务器团队,如果他们有SCOM或Splunk之类的工具,他们无论如何都应该使用这些工具来监视服务器。然后,您可以配置您/他们想要的任何规则,包括电子邮件


在BizTalk应用程序中,只需确保在异常处理代码中创建Windows事件(事件查看器)。

我认为这取决于您的解决方案。在我开发的解决方案中,我发现了邮件路由上的大多数故障点,原因是转换错误、缺少字段等。然后这些故障点被路由到一个编排,该编排专门向设置的地址发送SMTP电子邮件。这对我公司的要求来说相当有效您可以通过快速的google找到大量SMTP编排示例。。我开始

与此同时,对于未知问题,我还设置了一个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>

好啊如果Biztalk本身还有其他选项,请告诉我。@SelvarajMunusamy Biztalk就是这样。堆栈的其他部分支持所有这些功能,因此无需在BizTalk中复制它们。这只会增加复杂性。我也在等待网络团队的回复。谢谢Arix。我将立即使用powershell,稍后使用Orchestration。请让我知道如何从上面的链接配置步骤4和5。附加的配置,我有,但它不工作。脚本位于C:\BiztalkServerAlert\BiztalkAlerts.ps1,对于程序脚本框中的步骤4,键入powershell.exe,但不包含目录。对于步骤5,将脚本目录和脚本名称放入添加参数框-“D:\myscript.ps1”,并用双引号括起来。我现在不在我的机器上,但这就是我的记忆。我已经附加了我的代码,但在执行脚本时没有得到任何结果。请验证。我已经在我的原始答案中添加了我在UAT服务器上使用的代码。如果这行得通,请记下我的答案。
$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
}