用 Python 在 30 分鐘內搭一個「可回放的實時日志」——把攻擊流量變成可視化劇情

業務背景
我們運營一款 FPS 端游,外掛作者常把 DDoS 偽裝成「玩家掉線」來騙客服。以前排查要撈 CDN 日志、對時間戳、人工比對,平均 2 小時才能定位。現在用一條 30 行的 Python 腳本把邊緣節點日志實時打到 Kafka,再回放到 Grafana,5 分鐘就能復現「誰在什么時間被哪段流量打掛」。

1. 數據流

邊緣節點(Nginx) → filebeat → Kafka → Python 回放腳本 → Grafana(Loki)
  • 邊緣節點用 Nginx stream 模塊,日志格式自定義為
    $time_iso8601|$remote_addr|$bytes_sent|$bytes_received|$proxy_host
  • filebeat 直接讀 /var/log/nginx/stream.log,topic 叫 game_traffic
  • Python 腳本用 confluent-kafka 消費,實時計算「異常窗口」并推送到 Loki;
  • 運維在 Grafana 里點一下「回放」就能把時間軸往回拖 30 min,像看錄像一樣。

2. 回放腳本(replay.py)

#!/usr/bin/env python3
# pip install confluent-kafka python-dateutil requests
import json, time, datetime, collections, requests
from confluent_kafka import ConsumerBOOTSTRAP = 'kafka.example.com:9092'
LOKI_URL  = 'https://loki.example.com/loki/api/v1/push 'consumer = Consumer({'bootstrap.servers': BOOTSTRAP,'group.id': 'replay','auto.offset.reset': 'latest'
})
consumer.subscribe(['game_traffic'])window = collections.deque(maxlen=1000)   # 滑動 1000 條
ALERT_THRESHOLD = 100_000                # 10 秒內上行或下行超 100 MB 就告警def push_loki(stream, labels):payload = {"streams": [{"stream": labels,"values": [[str(int(time.time()*1e9)), json.dumps(stream)]]}]}requests.post(LOKI_URL, json=payload, timeout=3)while True:msg = consumer.poll(1)if msg is None: continueif msg.error():print(msg.error())continuets, src, up, down, dest = msg.value().decode().split('|')now = datetime.datetime.fromisoformat(ts)window.append((now, int(up)+int(down)))# 滑動窗口統計cutoff = now - datetime.timedelta(seconds=10)while window and window[0][0] < cutoff:window.popleft()total = sum(b for _, b in window)if total > ALERT_THRESHOLD:push_loki({"src": src, "dest": dest, "bytes": total},{"job": "game_traffic", "alert": "ddos"})

3. 落地步驟

  1. 邊緣節點 Nginx 加一行
    log_format stream '$time_iso8601|$remote_addr|$bytes_sent|$bytes_received|$proxy_host';
    access_log /var/log/nginx/stream.log stream;
    
  2. filebeat.yml 里加
    filebeat.inputs:
    - type: logpaths: ["/var/log/nginx/stream.log"]fields_under_root: truefields:topic: game_traffic
    output.kafka:hosts: ["kafka.example.com:9092"]topic: '%{[topic]}'
    
  3. python3 replay.py &,丟進 supervisor 或 systemd;
  4. Grafana 新建 Loki 數據源,查詢
    {job="game_traffic"} | json | alert="ddos"
    
    就能實時看到攻擊曲線;
  5. 回放時把時間選擇器拖到「異常發生前 30 s」,可逐幀看哪段流量峰值對應哪批玩家掉線。

4. 結果

  • 上線兩周,客服工單量下降 60%,外掛作者發現「掉線不再好用」;
  • 運維同學從「撈日志 2 h」變成「點兩下 Grafana 5 min」,周末終于能安心打游戲了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96031.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96031.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96031.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何將 LM Studio 與 ONLYOFFICE 結合使用,實現安全的本地 AI 文檔編輯

人工智能正在改變我們的工作方式——但如今大多數 AI 工具都存在弊端&#xff1a;速度和便利性雖有所提升&#xff0c;但也意味著數據需要發送到外部服務器。對于教育工作者、企業、非政府組織以及任何處理敏感信息的人來說&#xff0c;這都是不可接受的風險。 LM Studio 和 O…

超市電商銷售分析項目:從數據分析到業務決策

國際超市電商銷售數據分析實戰&#xff1a;從數據清洗到業務決策的完整流程 在電商行業&#xff0c;數據是驅動業務增長的核心引擎。本文將以國際超市電商銷售數據為研究對象&#xff0c;完整拆解從數據準備 → 深度分析 → 策略輸出的實戰流程&#xff0c;涵蓋數據清洗、多維度…

GitHub 熱榜項目 - 日榜(2025-08-17)

GitHub 熱榜項目 - 日榜(2025-08-17) 生成于&#xff1a;2025-08-17 統計摘要 共發現熱門項目&#xff1a;12 個 榜單類型&#xff1a;日榜 本期熱點趨勢總結 本期GitHub熱榜呈現三大技術趨勢&#xff1a;1) AI基礎設施持續爆發&#xff0c;Archon OS和Parlant聚焦AI任務管…

記憶翻牌游戲 greenfoot 開發

記憶翻牌游戲是一種經典的益智游戲&#xff0c;玩家需要翻開卡片并記住它們的位置&#xff0c;然后找到所有匹配的卡片對。 核心玩法 游戲開始時&#xff0c;所有卡片都是背面朝上玩家每次可以翻開兩張卡片如果兩張卡片圖案相同&#xff0c;則保持翻開狀態&#xff08;匹配成功…

【lucene】SegmentInfos

SegmentInfos 類中文說明 ———————————— **一句話** SegmentInfos 是 segments_N 文件的**內存表示**。它把磁盤上的 segments_N 讀進來&#xff0c;變成一堆 SegmentInfo 的集合&#xff1b;當你增刪改索引、合并段、提交時&#xff0c;再把它寫回磁盤&#x…

Read Frog:一款開源AI瀏覽器語言學習擴展

Read Frog&#xff1a;一款開源AI瀏覽器語言學習擴展 來源&#xff1a;Poixe AI Read Frog&#xff08;中文名&#xff1a;陪讀蛙&#xff09;是一款開源的瀏覽器擴展&#xff0c;旨在通過人工智能技術&#xff0c;將常規網頁瀏覽轉化為一種沉浸式的語言學習體驗。該工具通過…

天地圖應用篇:增加全屏、圖層選擇功能

天地圖應用篇&#xff1a;增加全屏、圖層選擇功能本節說明&#xff1a; 目的&#xff1a; 實現地圖的圖層切換全屏顯示 / 退出全屏案例截圖 示下&#xff1a;案例代碼示例代碼&#xff1a; <template><div class"tianditu-map-container"><!-- 頂部搜…

從零開始,系統學習AI與機器學習:一份真誠的學習路線圖

人工智能&#xff08;AI&#xff09;和機器學習&#xff08;ML&#xff09;正在深刻改變眾多行業的面貌&#xff0c;掌握這些技術已成為許多技術從業者提升競爭力的重要路徑。無論你是希望進入這個充滿潛力的領域&#xff0c;還是期望在現有技術基礎上進行拓展&#xff0c;一份…

NVIDIA CWE 2025 上海直擊:從 GPU 集群到 NeMo 2.0,企業 AI 智能化的加速引擎

前言 8 月 8 日&#xff0c;我受邀參加了在上海舉辦的 NVIDIA CWE 大會。作為一個正在企業內部推動 AI 落地的從業者&#xff0c;這場會議對我來說不僅是“充電”&#xff0c;更像是一場“解題會”。參會感受 在分享干貨之前&#xff0c;我先談談這次參會的不同感受。給我感受特…

Web攻防-大模型應用LLM安全提示詞注入不安全輸出代碼注入直接間接數據投毒

知識點&#xff1a; 1、WEB攻防-LLM安全-API接口安全&代碼注入 2、WEB攻防-LLM安全-提示詞注入&不安全輸出 Web LLM&#xff08;Large Language Model&#xff09;攻擊指針對部署在Web端的AI大語言模型的攻擊行為。攻擊者通過惡意提示詞注入、訓練數據竊取、模型逆向工…

docker compose再阿里云上無法使用的問題

最原始的Dokcerfile # 使用官方Python 3.6.8鏡像 FROM python:3.6.8-slimWORKDIR /app# 復制依賴文件 COPY requirements.txt .RUN pip install --upgrade pip # 檢查并安裝依賴&#xff08;自動處理未安裝的包&#xff09; RUN pip install --no-cache-dir -r requirements.tx…

C++STL容器List的模擬實現

一、引言list的實現&#xff0c;還是比較簡單的&#xff0c;大家只要想著土家樓的形狀&#xff0c;畫出圖來就好了&#xff0c;不需要過多擔心。本次的博客會發出一個完整的實現List的List.hpp&#xff0c;以后也會這樣&#xff0c;主要是分段發被說孩子分段生。二、模擬List由…

區塊鏈 + 域名Web3時代域名投資的新風口(上)

關于Dynadot Dynadot是通過ICANN認證的域名注冊商&#xff0c;自2002年成立以來&#xff0c;服務于全球108個國家和地區的客戶&#xff0c;為數以萬計的客戶提供簡潔&#xff0c;優惠&#xff0c;安全的域名注冊以及管理服務。 Dynadot平臺操作教程索引&#xff08;包括域名郵…

電子電氣架構 --- 軟件會給汽車帶來哪些變化?

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

在rtthread中,互斥量不能在中斷服務例程中使用?以及線程多次持有互斥量的情況怎么理解?

互斥鎖的所有權&#xff1a;互斥量的狀態只有兩種&#xff0c;開鎖或閉鎖&#xff08;兩種狀態值&#xff09;。當有線程持有它時&#xff0c;互斥量處于閉鎖狀態&#xff0c;由這個線程獲得它的所有權。相反&#xff0c;當這個線程釋放它時&#xff0c;將對互斥量進行開鎖&…

力扣32:最長有效括號

力扣32:最長有效括號題目思路代碼題目 給你一個只包含 ‘(’ 和 ‘)’ 的字符串&#xff0c;找出最長有效&#xff08;格式正確且連續&#xff09;括號 子串 的長度。 左右括號匹配&#xff0c;即每個左括號都有對應的右括號將其閉合的字符串是格式正確的&#xff0c;比如 “…

機器學習實例應用

K最近鄰算法K近鄰算法(KNN,k-Nearest Neighbor),每個樣本都可以用它的最接近的K個鄰近值來代表。算法說明&#xff1a;①輸入沒有標簽的新數據&#xff0c;將新數據的每個特征與樣本集中數據對應的特征進行比較&#xff0c;然后算法提取樣本集中特征最相似數據&#xff08;最近…

力扣 hot100 Day77

連做了幾個動態規劃的中等題&#xff0c;還是比較有套路的&#xff0c;這里只簡要分析一下最長遞增子序列&#xff0c;設定dp[i]為以nums[i]結尾的最長子序列&#xff0c;遞推公式就好推了乘積最大子數組&#xff0c;和上面類似&#xff0c;但考慮到負負得正&#xff0c;所以需…

深入解析RabbitMQ與AMQP-CPP:從原理到實戰應用

一、RabbitMQ安裝 1.安裝 RabbitMQ sudo apt install rabbitmq-serverRabbitMQ 的簡單使用 # 啟動服務 sudo systemctl start rabbitmq-server.service # 查看服務狀態 sudo systemctl status rabbitmq-server.service # 安裝完成的時候默認有個用戶 guest &#xff0c;但是權限…

(論文速讀)ViDAR:視覺自動駕駛預訓練框架

論文題目&#xff1a;Visual Point Cloud Forecasting enables Scalable Autonomous Driving&#xff08;視覺點云預測實現可擴展的自動駕駛&#xff09; 會議&#xff1a;CVPR2024 摘要&#xff1a;與對通用視覺的廣泛研究相比&#xff0c;可擴展視覺自動駕駛的預訓練很少被探…