簡體   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