You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure环境下基于日志的异常计数异常检测最优及低成本方案咨询

Azure ASP.NET应用异常计数异常检测方案

核心逻辑

基于Log Analytics Workspace的历史日志数据计算动态基准值,定时对比当前时段的异常数量,一旦超出阈值就触发通知。

低成本最优实现方案

1. 生成动态基准值

在Log Analytics中编写Kusto查询,计算过去1个月的每小时异常数动态基准N——用7天移动平均替代单纯的整体平均,能更好适配业务波动带来的N值变化:

ExceptionLogs
| where TimeGenerated between (ago(30d) .. now())
| summarize HourlyExceptions = count() by bin(TimeGenerated, 1h)
| extend RollingAvg = avg(HourlyExceptions) over (range(-168h, 0h, 1h))
| summarize DynamicBaseline = avg(RollingAvg)

2. 配置定时告警规则

在Azure Monitor中创建日志告警规则,具体设置如下:

  • 检测逻辑:每小时执行一次查询,统计当前小时的异常数,与动态基准N对比,当当前小时异常数 > N + 20时触发告警
  • 告警查询示例:
// 获取当前小时异常总数
let currentHourCount = toscalar(
    ExceptionLogs
    | where TimeGenerated between (ago(1h) .. now())
    | summarize count()
);
// 计算过去1个月的动态基准N
let baseline = toscalar(
    ExceptionLogs
    | where TimeGenerated between (ago(30d) .. ago(1h))
    | summarize HourlyCount = count() by bin(TimeGenerated, 1h)
    | extend RollingAvg = avg(HourlyCount) over (range(-168h, 0h, 1h))
    | summarize avg(RollingAvg)
);
// 判断是否触发告警
print IsAlertTriggered = currentHourCount > baseline + 20
  • 执行频率:设置为每小时运行一次,检查过去1小时的日志数据
  • 通知配置:关联Azure Action Group,选择邮件、Teams、短信等合适的通知渠道

3. 成本优化措施

  • 日志存储:根据业务需求调整Log Analytics的日志保留周期,自动清理超出保留期的旧日志,降低存储成本
  • 查询优化:确保异常日志查询仅过滤必要字段和时间范围,减少计算资源消耗,降低分析成本
  • 告警抑制:配置告警规则的抑制策略,避免短时间内重复发送相同通知,减少干扰和不必要的通知成本

进阶智能检测方案

如果需要更精准的异常识别(比如应对非固定阈值的突增/骤降场景),可以使用Azure Monitor的智能检测功能:

  • 自动基于历史数据建立动态基线,识别偏离正常模式的异常计数
  • 无需手动设置固定阈值,适配更复杂的业务波动场景

内容的提问来源于stack exchange,提问作者cooper_milton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:01:12