[英]How to alert anomalies on network traffic jump with prometheus?
我们想检测 IaaS 基础设施中的虚拟机是否受到 DDOS 攻击。
我们有几个症状和指标,例如: node_nf_conntrack_entries
、 node_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
)
有关and
和or
运算符,请参阅这些文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.