当前位置:论坛首页 > Linux面板 > 讨论

[新功能]流量告警+企业微信推送-服务器监控流量异常

发表在 Linux面板5 天前 [复制链接] 0 36

最近腾讯的服务器被黑客攻击,本来这个服务器上没什么东西,就是挂几个域名,测试一些功能用。平时没什么流量,就按照流量计费的,一个月也就几分钱。突然预存的5块钱花光了。每天几毛钱的流量费用超出了平时的范围。经过分析后找到异常进程关闭后流量正常了。观察了一天没有发现异常。因为穷没有购买服务器和宝塔的一些高级功能。没有流量的监控报警。我看了下,首页可以在负载,CPU,内存和硬盘卡片上添加阈值的告警推送。没有流量的告警功能。为了防止再被攻击,流量异常,损失银子,做了下面的计划任务脚本。主要功能就是在流量异常的时候,就是超过一定的阈值,就向企业微信发送消息。企业微信的配置按照系统教程配置即可。这里主要体现脚本的功能。告警阈值可以自己配置,我默认设置的是1MB,平时流量几K,很少超过1MB,被攻击后流量保持在2MB左右,所以我这里设置1MB,拿去用可以按照自己的流量设置即可。网卡和python脚本路径如有不同根据自己情况设置。
希望对各位有帮助。


任务名称:流量告警+企业微信推送
任务类型:shell脚本
执行周期:每2分钟一次
执行用户:root默认
脚本内容:
  1. #!/bin/bash
  2. # 最终极简版:流量告警+企业微信推送(无冗余校验)
  3. THRESHOLD=1024  # 告警阈值:1024KB/s=1MB/s
  4. NETWORK_CARD="eth0"
  5. PANEL_DIR="/www/server/panel"
  6. PANEL_PYTHON="/www/server/panel/pyenv/bin/python3"

  7. # 1. 流量计算(核心)
  8. OLD_RX=$(cat /sys/class/net/${NETWORK_CARD}/statistics/rx_bytes)
  9. OLD_TX=$(cat /sys/class/net/${NETWORK_CARD}/statistics/tx_bytes)
  10. sleep 1
  11. NEW_RX=$(cat /sys/class/net/${NETWORK_CARD}/statistics/rx_bytes)
  12. NEW_TX=$(cat /sys/class/net/${NETWORK_CARD}/statistics/tx_bytes)

  13. DOWNLOAD=$(( (NEW_RX - OLD_RX) / 1024 ))
  14. UPLOAD=$(( (NEW_TX - OLD_TX) / 1024 ))

  15. # 2. 组装告警消息
  16. ALERT_MSG=""
  17. if [ $UPLOAD -gt $THRESHOLD ]; then
  18.     UPLOAD_MB=$(( UPLOAD / 1024 ))
  19.     ALERT_MSG="上行流量超标:${UPLOAD} KB/s(${UPLOAD_MB} MB/s),阈值${THRESHOLD} KB/s"
  20. fi
  21. if [ $DOWNLOAD -gt $THRESHOLD ]; then
  22.     DOWNLOAD_MB=$(( DOWNLOAD / 1024 ))
  23.     ALERT_MSG=${ALERT_MSG:+"${ALERT_MSG};"}"下行流量超标:${DOWNLOAD} KB/s(${DOWNLOAD_MB} MB/s),阈值${THRESHOLD} KB/s"
  24. fi

  25. # 3. 推送企业微信
  26. if [ -n "$ALERT_MSG" ]; then
  27.     FINAL_MSG="【服务器流量告警】${ALERT_MSG}"
  28.     cd "${PANEL_DIR}" && ${PANEL_PYTHON} -c "
  29. import sys
  30. sys.path.insert(0, 'class/')
  31. import public
  32. public.push_msg('weixin', {'msg': '${FINAL_MSG}'})"
  33.     echo "告警已推送:${FINAL_MSG}"
  34. else
  35.     echo "流量正常:上行${UPLOAD}KB/s,下行${DOWNLOAD}KB/s"
  36. fi
复制代码

使用道具 举报 只看该作者 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表