2017-07-10 37 views
1

我已经在我创建的Azure WebApp上启用了应用程序洞察。我的WebApp正在调用第三方API,它在配额上运行。我每个月只允许拨打10万个电话。使用Azure Application Insights创建调用第三方API的提醒

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

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

此外,我需要的另一个要求是当每分钟呼叫次数超过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.我以正确的方式接近这个吗?

回答

2

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

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

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

这是你如何使用流量/逻辑应用程序真的很有趣。我一定会在以后的另一个项目中使用它。但是......与公司安全人员进行了聊天,他说任何使用API​​密钥和/或链接另一个应用程序的东西都不会被接受。还有其他的选择吗?我们正在努力解决“资源枯竭”问题,这就是为什么我要计算一小时内发生多少次“CallingAPI”的原因。如果阈值设置为50,并且一小时内有51个呼叫,则会发送电子邮件警报。我应该如何执行自定义事件来获取事件数量而不是传递值? – james