gpt4 book ai didi

azure - 当 Azure 应用程序服务(网站)抛出异常时,通过电子邮件通知我的管理员的最佳方式

转载 作者:行者123 更新时间:2023-12-03 05:13:07 31 4
gpt4 key购买 nike

我目前正在使用 Sendgrid 向所有用户发送格式漂亮的电子邮件,介绍他们在我的网站上执行的特定事件(例如创建登录、添加信用卡等),并且我正在使用我创建的电子邮件服务来执行此操作使用 Sendgrid(通过我的 Azure 门户订阅)。我还使用 .Net 记录器服务,并认为我可以通过该服务获取电子邮件通知,但我在 Azure 门户中看不到任何内容。

问题 - 如果我的网站抛出如下例所示的异常怎么办?获得通知的最佳方式是什么?

  1. 使用我的电子邮件服务向自己发送电子邮件?或
  2. 使用某些 Azure 设置来发送电子邮件?

这是服务器端的一个示例以及我当前所做的事情,即使用 Sendgrid 向自己发送一封电子邮件,但看起来这可能不是最好的解决方案。

 try {
// perform some action and save to db
} catch(Exception ex) {
_logger.LogError(ex, "Error: " + ex.ToString());
_emailService.SendEmailError("Some Exception", ex.ToString());
}

更新 - 基于下面的 Peter Bons 帖子 - 我已经启动并运行了应用程序洞察,并且可以看到一些数据传入。然后,我创建了一个操作组(“通知”)并将其配置为传一个电子邮件给我。我收到了来自 Azure 的一些通知,说它已配置,所以一切都很好。接下来,我尝试在应用程序应用程序警报面板中创建警报,但对于需要选择哪种类型的信号进行记录感到困惑。我尝试创建 2 个不同的警报,1 个针对指标下的“异常”,1 个针对事件日志下的“所有管理操作”。一旦这两个警报起作用,我就开始收到电子邮件。 但是我开始收到大量电子邮件,而 Azure 由于速率限制而关闭了我,所以现在我有一些问题:

  1. 在哪里创建警报?我看到可以在 2 个不同的位置创建它 1.) 应用服务警报 2.) 应用服务应用程序洞察警报。应用程序见解警报部分中似乎没有触发任何事件,仅在应用程序警报部分中触发。

  2. 当我记录信息(例如_logger.LogError())时,我选择什么类型的信号将被触发,因为即使我使用详细信息创建基于任何管理事件的警报(例如警报触发器并使用大量电子邮件创建)没有触发事件,也没有用于记录器调用的电​​子邮件!

最佳答案

使用 this tutorial 将 Azure Application Insights 添加到组合中作为起点并使用 alerts功能。

一旦正确完成,类似这样的代码 _logger.LogError(ex, "Error: "+ ex.ToString()); 将在 Application Insights 中生成异常遥测项目,如文档 here 所示。 :

ApplicationInsightsLoggerProvider captures ILogger logs and creates TraceTelemetry from them. If an Exception object is passed to the Log method on ILogger, ExceptionTelemetry is created instead of TraceTelemetry.

到达那里后,您可以创建 alert rule基于标准,就像发生了异常一样。一条警报规则有一个或多个 action groups随附的。这些操作组定义触发警报规则后要采取的操作。一个示例操作是发送电子邮件。

使用警报规则和操作规则的好处在于,触发警报的方式以及发生警报时发生的操作是触发警报规则的代码,例如 _logger.LogError (例如,“Error:” + ex.ToString()),与接下来发生的任何事情分离。如果您需要更改电子邮件地址,想要包含不同的操作(例如发送短信或触发网络钩子(Hook)),您无需修改​​任何代码即可执行此操作。

完整的教程可以在 here 找到

现在关于您的另外两个问题:

Where do I create the alert? I see 2 separate places where it can be created 1.) app service alerts 2.) app service application insight alerts. No events seem to be fired in the application insights alert section, only in the app alert section.

您可以从很多地方开始定义警报。您甚至可以从 Azure Monitor 资源创建一个。如果您这样做,则需要深入了解作为警报规则来源的资源。

选择应用服务应用程序洞察提醒时,您已经深入到正确的资源,因此这是最佳的起点。

What type of signal do I select that will get triggered when I log information (ex. _logger.LogError()), because even when I create an alert that is based on any admin event using verbose (so tons of alert triggers and created with tons of emails) There is no event fired and email for the logger calls!

首先,不要使用Activity Log部分的任何信号。这些信号表明资源本身发生了某些更改,例如更新了 Application Insights 设置或扩展了 Web 应用程序。

要为 _logger.LogXXX() 生成的日志创建警报规则,请使用自定义日志搜索信号,请参阅 your other question .

关于azure - 当 Azure 应用程序服务(网站)抛出异常时,通过电子邮件通知我的管理员的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75827463/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com