Nginx Grafana 监控怎么展示安全攻击拦截事件的实时趋势

风辰吖_8414

风辰吖_8414

2026-09-18

455人浏览

原创

要让grafana实时展示nginx拦截安全攻击趋势,需通过结构化日志(log_format+map)、独立日志文件采集、exporter转换为prometheus指标(如nginx_attack_blocked_total),再在grafana中用rate()、topk()等函数构建拦截速率、来源ip、路径分布看板,并可联动waf日志提升精度。

nginx grafana 监控怎么展示安全攻击拦截事件的实时趋势

要让 Grafana 实时展示 Nginx 拦截安全攻击的事件趋势,关键不是“加个图表”,而是把拦截行为变成可度量、可采集、可聚合的指标数据——Nginx 本身不主动上报“我刚拦了一个攻击”,必须靠日志解析 + 指标暴露 + 可视化串联。

从 Nginx 日志中提取攻击拦截信号

安全拦截事件(如 WAF 规则命中、限流拒绝、IP 封禁)通常记录在 access.log 或 error.log 中。需先结构化日志,再打上攻击特征标签:

  • log_format 定义含拦截标识的字段,例如:
    log_format security '$time_iso8601 $remote_addr "$request" $status $bytes_sent "$http_user_agent" "$http_referer" $request_time $upstream_response_time $limit_req_status $limit_conn_status $sent_http_x_blocked';
    其中 $limit_req_status 为 “rejected” 表示被限流拦截,$sent_http_x_blocked 可由自定义 header 标记 WAF 拦截
  • map 指令 映射高危行为:比如匹配 User-Agent 含 “sqlmap|nuclei|gobuster”,或 URI 含 “.php?cmd=|/etc/passwd”,统一设为 $is_attack 1
  • 确保日志写入独立文件(如 /var/log/nginx/attack-blocks.log),便于 Fluentd / Filebeat 单独采集

将拦截事件转为 Prometheus 指标

原始日志不能直接被 Prometheus 抓取,需通过 exporter 转换:

Nginx Config Linter
Nginx Config Linter

对 Nginx 配置文件进行语法检查、验证和安全、性能审计。

下载
  • 推荐使用 nginx-log-exporterprometheus-logstash-exporter:配置其监听攻击日志文件,按正则匹配行并计数,生成类似 nginx_attack_blocked_total{type="rate_limit", code="503"} 的指标
  • 若已用 Fluentd,可在 pipeline 中添加 filter 插件(如 @type prometheus),对匹配 is_attack == "1" 的日志自动递增 counter
  • 验证是否生效:执行 curl http://exporter-ip:9142/metrics | grep attack_blocked,应看到带 label 的计数器

Grafana 中构建实时攻击拦截看板

导入或新建面板,聚焦“发生了什么、多快、在哪发生”三个维度:

  • 实时拦截速率:用 rate(nginx_attack_blocked_total[1m]) 曲线图,时间范围设为“Last 5 minutes”,刷新间隔调至 5s;叠加不同 type(如 rate_limit / waf_block / ip_ban)做堆叠面积图
  • 拦截来源 Top IP:用 topk(10, sum by (clientip) (rate(nginx_attack_blocked_total[5m]))) 配柱状图,配合 geoip 地理信息可加世界地图热力层
  • 拦截路径分布:用 topk(10, sum by (uri) (rate(nginx_attack_blocked_total{type=~"waf|rate_limit"}[5m]))) 查看高频被拦接口,辅助识别攻击目标
  • 建议搭配一个 告警触发器:当 rate(nginx_attack_blocked_total{type="waf_block"}[1m]) > 50 持续 2 分钟,说明可能遭遇扫描或爆破,立即通知

补充:和 WAF 日志联动更准

如果用了商业 WAF(如 Cloudflare、阿里云WAF)或开源 ModSecurity,它们自带拦截日志格式(如 JSON)。可跳过 Nginx 日志解析,直接用:
– ModSecurity 的 SecAuditLog 接入 Logstash → Prometheus Exporter
– Cloudflare 的 Firewall Events Log 通过 API 流式拉取 → 写入 Kafka → Flink 实时统计 → PushGateway 上报
这样能捕获更细粒度的规则 ID、攻击类型(SQLi/XSS/RFI)、匹配 payload 片段,可视化价值更高。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

nginx

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Grafana重置admin密码
Grafana重置admin密码

本专题整合了grafana admin密码相关教程,阅读专题下面的文章了解更多详细内容。

2025.09.02

1854

12

Grafana admin密码
Grafana admin密码

本专题整合了Grafana密码相关教程,阅读专题下面的文章了解更多详细内容。

2025.12.09

690

9

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

140

9

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

2026.09.16

60

10

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

2026.09.16

60

23

Pandas数据筛选索引与清洗处理
Pandas数据筛选索引与清洗处理

本专题整理Pandas中的loc、iloc、条件筛选、query查询、缺失值处理、重复值删除、类型转换和字符串列清洗方法。

2026.09.16

40

25

Pandas数据读取导入与文件导出处理
Pandas数据读取导入与文件导出处理

本专题整理Pandas读取CSV、Excel、JSON、SQL、Parquet等文件的方法,以及to_csv、to_excel、to_sql和to_parquet等常用数据导出流程。

2026.09.16

40

27

GDB怎么设置断点
GDB怎么设置断点

本专题介绍GDB按照函数名、源代码行号和文件位置设置断点的方法,详细说明run、continue、next、step等命令的配合使用,帮助定位程序崩溃、逻辑异常及代码未按预期执行的问题。

2026.09.11

360

28

GDB怎么查看变量值
GDB怎么查看变量值

本专题介绍GDB调试过程中查看变量值的具体方法,涵盖局部变量、函数参数、数组、结构体和指针内容查询,同时整理变量持续显示、格式化输出及无法读取变量时的排查思路。

2026.09.11

120

22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习