Nginx 怎么在 Nginx 中配置将结构化 JSON 日志推送到 Kafka 实时流处理系统

星强君_4588

星强君_4588

2026-08-09

441人浏览

原创

nginx原生不支持直接推json日志至kafka,主流生产方案有三:一是nginx+rsyslog,轻量稳定、免日志轮转;二是nginx+logstash,字段丰富、支持grok解析与条件过滤;三是openresty+lua-resty-kafka,低延迟、高吞吐、支持业务级控制。

nginx 怎么在 nginx 中配置将结构化 json 日志推送到 kafka 实时流处理系统

直接在 Nginx 里把结构化 JSON 日志推到 Kafka,原生 Nginx 不支持——它没有内置 Kafka 生产者模块。但有三种主流、稳定、生产可用的方案,按适用场景和复杂度排序如下:

方案一:Nginx + rsyslog(轻量、稳定、免日志轮转)

适合对延迟不敏感、希望简化运维、彻底摆脱 logrotate 的场景。

  • 确保 Nginx ≥ 1.10,启用 syslog 支持(默认已编译进多数发行版)
  • 在 http 块中定义 JSON 日志格式(注意引号和换行):
log_format jsonlog escape=json '{'
  '"time_iso8601":"$time_iso8601",'
  '"remote_addr":"$remote_addr",'
  '"host":"$host",'
  '"request_uri":"$request_uri",'
  '"status":$status,'
  '"body_bytes_sent":$body_bytes_sent,'
  '"request_time":$request_time,'
  '"upstream_response_time":"$upstream_response_time",'
  '"http_user_agent":"$http_user_agent",'
  '"http_x_forwarded_for":"$http_x_forwarded_for"'
  '}';
  • 在 server 或 location 中使用 syslog 输出(不写文件):
access_log syslog:server=192.168.200.100:514,facility=local7,tag=nginx,jsonlog;
  • 在 rsyslog 服务端配置 omkafka 模块,将日志转发至 Kafka topic
  • 优势:零磁盘 IO、自动断连重试(rsyslog v8.20+)、天然支持日志分级与过滤

方案二:Nginx + Logstash(字段丰富、可过滤、兼容 ELK)

适合需保留原始 access.log、要 Grok 解析、做条件路由或对接 ES/Flink 的场景。

Wjs Uploading Video
Wjs Uploading Video

将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。

下载
  • 同上配置 JSON 格式并输出到本地文件(如 /var/log/nginx/access.json)
  • Logstash input 使用 file 插件,指定 codec => "json" 直接解析
  • output 配置 Kafka 插件,支持批量、压缩、重试、分区键(如按 status 或 uri 分区):
output {
  kafka {
    bootstrap_servers => ["192.168.200.139:9092", "192.168.200.140:9092"]
    topic_id => "nginx-access"
    codec => json { }
  }
}
  • 注意:Logstash 依赖 .sincedb 记录读取位置,避免重复消费;建议关闭 start_position => "beginning"(仅调试用)

方案三:OpenResty + lua-resty-kafka(低延迟、高吞吐、业务级控制)

适合对实时性要求高(毫秒级)、需在入口层做请求过滤/脱敏/打标、或已有 OpenResty 基础的团队。

  • 安装 OpenResty(含 LuaJIT)及 lua-resty-kafka 库
  • 在 nginx.conf 的 http 块中初始化 Kafka producer:
init_worker_by_lua_block {
  local broker_list = {{"192.168.200.139", 9092}, {"192.168.200.140", 9092}}
  local ok, err = kafka:new_producer(broker_list)
  if not ok then
    ngx.log(ngx.ERR, "failed to create kafka producer: ", err)
  end
}
  • 在 log_by_lua_block 中构造 JSON 并异步发送(失败自动重试):
log_by_lua_block {
  local json = require "cjson"
  local msg = json.encode({
    ts = ngx.var.time_iso8601,
    ip = ngx.var.remote_addr,
    uri = ngx.var.request_uri,
    status = tonumber(ngx.var.status),
    rt = tonumber(ngx.var.request_time)
  })
  local ok, err = kafka:send("nginx-access", nil, msg)
  if not ok then ngx.log(ngx.WARN, "kafka send failed: ", err) end
}
  • 优势:无额外进程、支持自定义 key/partition、可结合 Redis 做限流或缓存判断

不推荐前端 AJAX 调用 /log 接口的方式——它本质是模拟日志,无法捕获 4xx/5xx 错误、不记录 upstream 时间、且增加客户端负担和 CORS 复杂度。

相关文章

Kafka Eagle可视化工具
Kafka Eagle可视化工具

Kafka Eagle是一款结合了目前大数据Kafka监控工具的特点,重新研发的一块开源免费的Kafka集群优秀的监控工具。它可以非常方便的监控生产环境中的offset、lag变化、partition分布、owner等,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

nginx js json

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

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

403

5

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3467

6

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

2023.08.04

6165

6

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

561

5

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.07.09

1476

5

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

2024.08.07

3958

3

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

122

12

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

477

23

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

2026.03.16

159

12

热门下载

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

精品课程

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

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习