我们希望检测我们的IaaS下的VM是否受到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

发布于 2022-07-14 20:16:13
您可以将过去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值或添加绝对最大数据包速率来解决,当查询应该无条件地发出警报时。例如,当最后一分钟的平均分组速率超过100 K/秒时,以下查询将无条件地发出警报:
(
((
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运算符。
https://stackoverflow.com/questions/72947434
复制相似问题