graylog2采集nginx日志 被动方式

简介: 本篇文章主要讲述如何通过graylog采集nginx日志 被动方式

graylog可以通过两种方式采集nginx日志,一种是通过Graylog Collector Sidecar进行采集(主动方式),另外是通过修改nginx配置文件的方式进行收集(被动方式)。

这次说一下修改nginx配置文件(被动方式)。被动方式的好处就是nginx将定义好的日志字段以json格式直接发送到graylog的自定义端口中,graylog通过json解析直接将字段提取出来。优势在于不用配置复杂的正则进行日志字段的解析,极大减少graylog对于cpu的资源占用。如果使用正则解析日志字段的话,你每次新增字段,相应的正则解析就要进行修改,非常不灵活。当然这种方式也有缺点,一是需要nginx 1.12.1以上版本,二是nginx配置发送到graylog的ip是固定的,如果graylog群集的这个节点挂了的话是无法转移到其他节点上的,三是nginx直接将日志发送到graylog后,本地不会打印日志输出了。

本文以graylog 2.5.2为例,向大家介绍一下如何以被动方式采集nginx日志。

1、前往graylog marketplace 下载 content pack文件并导入到graylog。
(1)content pack文件下载链接:nginx content pack
(2)菜单中选择 System / Content Packs -> Content packs -> Import content pack 选择文件并上传
graylog_upload_pack

(3)菜单中选择Select content packs -> Web Servers -> nginx 并点击 Apply content 按钮
graylog_nginx_apple

(4)选择导航条 Streams 查看,关于nginx的相关stream 已经自动创建完成
graylog_streams

(5)选择导航条 System / Inputs -> input 可以看到,nginx相关的input端口已经建立完成
graylog_nginx_input

2、修改nginx相关配置,假设graylog日志服务器的ip地址为192.168.251.3
(1)修改nginx log_format 相关配置

             '"remote_addr": "$remote_addr", '
             '"remote_user": "$remote_user", '
             '"body_bytes_sent": $body_bytes_sent, '
             '"request_time": $request_time, '
             '"status": $status, '
             '"request": "$request", '
             '"request_method": "$request_method", '
             '"host": "$host",'
             '"source": "192.168.251.3",'
             '"upstream_cache_status": "$upstream_cache_status",'
             '"upstream_addr": "$upstream_addr",'
             '"http_x_forwarded_for": "$http_x_forwarded_for",'
             '"http_referrer": "$http_referer", '
             '"http_user_agent": "$http_user_agent" }';
access_log syslog:server=192.168.251.3:12301 graylog2_json;
error_log syslog:server=192.168.251.3:12302;
(2)带ssl的nginx配置
 '"remote_addr": "$remote_addr", '
 '"remote_user": "$remote_user", '
 '"request_url": "$request_uri", '
 '"req_status": "$status", '
 '"response_size_B": "$bytes_sent", '
 '"req_protocol": "$server_protocol",'
 '"req_method": "$request_method",'
 '"req_srvname": "$server_name",'
 '"req_time": "$request_time",'
 '"connection-id": "$request_id",'
 '"ssl_prot_version": "$ssl_protocol",'
 '"ssl_cipher": "$ssl_cipher",'
 '"ssl_conn_reused": "$ssl_session_reused",'
 '"ssl_session_id": "$ssl_session_id",'
 '"http_referrer": "$http_referer", '
 '"http_user_agent": "$http_user_agent", '
 '"http_x_referer": "$http_x_referer" }';
 
access_log syslog:server=192.168.251.3:12301,facility=local0,tag=nginx,severity=info graylog2_json;
error_log  syslog:server=192.168.251.3:12302,facility=local0,tag=nginx,severity=error warn;

(3)修改完毕后,执行nginx -t 查看配置是否无误,最后执行nginx -s reload 加载配置。选择导航条 Streams -> nginx 就能看到相关nginx日志已经收集并将各个字段解析完成了。
graylog_stream_nginx

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
存储 JSON 应用服务中间件
Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?
【2月更文挑战第30天】Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?
19 2
|
14天前
|
网络协议 应用服务中间件 Linux
centos7 Nginx Log日志统计分析 常用命令
centos7 Nginx Log日志统计分析 常用命令
27 2
|
16天前
|
运维 监控 应用服务中间件
LNMP详解(十四)——Nginx日志详解
LNMP详解(十四)——Nginx日志详解
16 2
|
23天前
|
存储 监控 数据可视化
Nginx+Promtail+Loki+Grafana Nginx日志展示
通过这些步骤,你可以将Nginx的日志收集、存储、查询和可视化整合在一起。这样,你就可以在Grafana中轻松地创建和展示Nginx日志的图表和面板。
30 3
|
1月前
|
域名解析 网络协议 应用服务中间件
nginx-ingress通过ipv6暴露服务,并在nginx ingress日志中记录客户端真实ipv6的ip地址
本文主要通过阿里云提供的clb和nlb来实现,建议是提前创建好双栈的vpc和vsw(使用clb可以不用双栈vpc和vsw)
181 1
|
3月前
|
网络安全 数据安全/隐私保护
使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1【优化篇】
使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1【优化篇】
29 0
|
3月前
|
JSON NoSQL 网络安全
业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1
业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1
41 0
|
3月前
|
负载均衡 应用服务中间件 nginx
【实践】使用Nginx作为GrayLog日志接入的负载均衡
【实践】使用Nginx作为GrayLog日志接入的负载均衡
47 0
|
应用服务中间件 Apache nginx
nginx自己写日志切割脚本
转自本人的博客:http://blog.teier.cn
1436 0
|
监控 应用服务中间件 nginx