Azure Monitor 避免 VPN 断开时的误报

Azure Monitor avoid false positives on VPN disconnect

我们正在使用 Azure Monitor 来监视我们的虚拟网络网关 S2S VPN 连接是否断开(我们在每个环境中都有几个连接),但我们想重新配置以便仅在连接断开时才收到警报一分钟以上,以避免在重置隧道时发出警报。

今天我们使用这个创建错误警报的日志分析查询,您对我们如何创建这个有什么建议吗

 AzureDiagnostics
 | where Category == "TunnelDiagnosticLog"
 | order by TimeGenerated

这是我们不想触发警报的示例。请注意,仅排除 GlobalStandby 更改事件不会这样做,因为它不能保证隧道再次连接。

Azure Monitor 中的配置:

您可以尝试使用 AggregatedValue 创建 Metric measurement log alert 作为断开连接的计数,按具有值 GatewayTenantWorker... 的列(以及任何其他需要的列)汇总,并在您的日志查询中每分钟分箱并将阈值配置为 0 的警报(对于任何断开连接)并根据连续违规大于 1 次(超过 1 分钟,或 2 次超过 2 分钟(以减少更多错误警报))触发。

当任何 VPN 连接断开超过 1(或 2)分钟时,这应该会触发警报。

关于数据的假设-

  • 隧道重置在一分钟内解决。
  • 在实际长时间断开连接的情况下,每分钟会有一个当前状态(断开连接)的日志。以上解决方案仅适用于这种情况。

如果假设不成立,则需要有关长时间断开连接情况下的日志数据模式的信息。

使用 Log Analytics 我提出了这个查询,它将检查日志中的下一行以查看其是否已连接并比较它们之间的时间跨度。

AzureDiagnostics | serialize 
| where Category == "TunnelDiagnosticLog"
| where TimeGenerated < ago(120s) and TimeGenerated > ago(600m)
| extend Result = iif(
    (OperationName == "TunnelDisconnected" 
        and next(OperationName) == "TunnelConnected"
        and next(TimeGenerated)-TimeGenerated < 1m)
    or OperationName == "TunnelConnected", 0, 1)
| project TimeGenerated, 
    OperationName, 
    next(OperationName), 
    Result, 
    next(TimeGenerated)-TimeGenerated,
    Resource, 
    ResourceGroup, 
    _ResourceId 
| project-rename Downtime=Column2, NextStatus=Column1
| sort by TimeGenerated asc
| where OperationName == "TunnelDisconnected" and Result == 1