[英]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.