日常妙招屋
白蓝主题五 · 清爽阅读
首页  > 网络监控

网络日志分析工具怎么加自定义规则?三步搞定异常告警

上周公司服务器凌晨两点突然CPU飙到98%,运维小哥睡眼惺忪爬起来查日志,翻了半小时才发现是某接口被恶意刷了上万次——其实早该在日志分析工具里设条规则:连续5分钟内同一IP访问/login接口超200次就自动标红+发微信提醒。

为啥默认规则不够用?

像ELK、Graylog、甚至国产的Loggie这类工具,自带的“HTTP 500错误过多”“响应时间突增”规则确实好用,但现实场景哪有这么规整?比如你刚上线一个活动页,/promo/2024接口流量暴涨10倍是正常的;但同一IP每秒刷10次 /api/check-coupon 就明显不对劲。这种业务逻辑,得自己动手写规则。

自定义规则不是写代码,是填空题

主流工具都支持可视化配置或简单表达式。以Graylog为例,在Alerts → Create alert里选Custom search,核心就三块:

搜索语句:source:"nginx-access" AND path:"/api/login" AND status:>=400
时间窗口:5 minutes
触发条件:count() > 30

再点开Notifications,勾选企业微信机器人Webhook,填上你的hook地址——下次再有批量撞库行为,手机立马弹窗,比看监控大屏快多了。

举个更实在的例子

你用的是轻量级工具Logstash+Grok?直接改配置文件就行。在filter区块里加一段:

if [path] == "/admin" and [status] == 200 {
  mutate { add_tag => "admin_access_normal" }
}
if [path] == "/admin" and [status] == 401 {
  mutate { add_tag => "suspicious_admin_login" }
}

之后在Kibana里搜tag:suspicious_admin_login,就能单独看所有后台登录失败记录,配合地理IP插件,还能一眼揪出半夜三点从俄罗斯、巴西连着试错的IP。

规则不是越多越好。建议先盯住三个地方:管理员路径、支付回调、用户注册接口。每条规则加完,用curl -X POST模拟几条测试日志,看告警是否准时触发——别等真出事才手忙脚乱。