【问题标题】:Create an alert on calling a third party API using Azure Application Insights在使用 Azure Application Insights 调用第三方 API 时创建警报
【发布时间】:2017-12-14 09:40:47
【问题描述】:

我在我创建的 Azure WebApp 上启用了应用程序洞察。我的 WebApp 正在调用按配额运行的第三方 API。我每个月只能打 10 万个电话。

我需要跟踪这些 API 调用,以便在调用次数达到 50% 时创建警报,然后再创建警报 75%。

每次进行调用并且 AppInsights 仪表板中的事件确实增加时,我都在使用 TrackEvent。但是当拨打一定数量的电话时,我似乎无法创建警报。我无法从“事件”下拉列表中看到它。

此外,我需要的另一个要求是在每分钟调用超过 10 次时创建警报。

TrackEvent 是满足这些要求的正确方法吗?

我做了这样的事情......

var telemetryEventClient = new Microsoft.ApplicationInsights.TelemetryClient(new Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration() { InstrumentationKey = "Instrumentation Key" });
telemetryEventClient.Context.Operation.Name = "MyAPIProvider";

var properties = new Dictionary<string, string>
{
    { "Source", "WebAppToAPI" }
};

var metrics = new Dictionary<string, double>
{
    { "CallingAPIMetric", 1 }
};

telemetryEventClient.TrackEvent("CallingAPI", properties, metrics);

但是当我查看设置警报并将阈值设置为 50000(为了测试,我只设置了 5)时,我从未达到过该值,因为事件计数始终为 1。我是否以正确的方式接近这个值?

【问题讨论】:

    标签: azure alert monitoring azure-application-insights


    【解决方案1】:

    您尝试定义的警报始终着眼于您在自定义事件中提供的值,而不是您触发的事件数量。
    您可以创建一个自动流程来查询您的事件,并在查询结果超过某个阈值时向您发送电子邮件。 适用于 Flow 和 Microsoft Logic Apps 的 Application Insights 连接器就是为此而创建的,并且可以在来自任何文档类型(事件、指标甚至跟踪)的任何查询结果上进行定义。 有关如何创建自己的流程的分步文档是 here

    至于您的查询 - 您需要一个像这样的简单分析查询:

    customEvents
    | where timestamp > ago(1h) // or any time range you need
    | where name == "CallingAPI"
    | count
    

    【讨论】:

    • 关于如何使用 Flow / Logic Apps 真的很有趣。稍后我肯定会在另一个项目中使用它。但是......与公司安全人员聊天,他说任何使用 API 密钥和/或链接另一个应用程序的东西都不是可接受的解决方案。还有其他选择吗?我们试图解决“资源耗尽”问题,这就是为什么我想计算一个小时内发生了多少“CallingAPI”。如果阈值设置为 50,并且一小时内有 51 个呼叫,则会发送电子邮件警报。我应该如何执行自定义事件来获取事件数量而不是传递的值?
    猜你喜欢
    • 2020-04-16
    • 2016-12-09
    • 2020-02-02
    • 1970-01-01
    • 2018-12-13
    • 2020-06-11
    • 1970-01-01
    • 2017-10-17
    • 2018-04-19
    相关资源
    最近更新 更多