繁体   English   中英

如何使用 prometheus 告警网络流量跳跃异常?

[英]How to alert anomalies on network traffic jump with prometheus?

我们想检测 IaaS 基础设施中的虚拟机是否受到 DDOS 攻击。

我们有几个症状和指标,例如: node_nf_conntrack_entriesnode_network_receive_packets_total以及libvirt_domain_interface_stats_receive_packets_total

我们不希望通过设置触发点来产生false positive 交通 > n 然后警报!

rate(libvirt_domain_interface_stats_receive_packets_total{host="x"}[5m])

在此处输入图像描述

rate(node_network_receive_packets_total{instance="y1"}[5m])

在此处输入图像描述

sum(node_nf_conntrack_entries_limit - node_nf_conntrack_entries) by (instance) < 1000

在此处输入图像描述

您可以将过去 5 分钟的平均网络流量与 5 分钟前的平均 5 分钟网络流量进行比较。 如果它在 5 分钟内增加超过 10 倍,则警告:

(
  rate(node_network_receive_packets_total[5m])
    /
  rate(node_network_receive_packets_total[5m] offset 5m)
) > 10

有关偏移修饰符,请参见文档

但是,此查询可能会导致不正确的警报。 例如,如果网络流量接近于零,然后增加了 10 倍以上,但绝对值仍然太小。 这可以通过在网络流量过低时添加过滤器来解决。 例如,仅当过去 5 分钟的平均每秒数据包速率大于 1000 时,以下查询才会发出警报:

((
  rate(node_network_receive_packets_total[5m])
    /
  rate(node_network_receive_packets_total[5m] offset 5m)
) > 10)
  and
(
  rate(node_network_receive_packets_total[5m]) > 1000
)

当网络流量以低于每 5 分钟 10 倍的速度增长时,此查询可能会错过缓慢变化的 DOS 攻击。 当查询应无条件发出警报时,可以通过使用offset值或添加绝对最大数据包速率来解决此问题。 例如,当最后一分钟的平均数据包速率超过 100K/秒时,以下查询将无条件发出警报:

(
  ((
    rate(node_network_receive_packets_total[5m])
      /
    rate(node_network_receive_packets_total[5m] offset 5m)
  ) > 10)
    and
  (
    rate(node_network_receive_packets_total[5m]) > 1000
  )
)
  or
(
  rate(node_network_receive_packets_total[1m]) > 100000
)

有关andor运算符,请参阅这些文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM