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 选择文件并上传

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

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

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

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

log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", '
'"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配置

log_format json_combined escape=json '{ "timestamp": "$time_iso8601", '
'"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日志已经收集并将各个字段解析完成了。

[日志分析]Graylog2采集Nginx日志 被动方式的更多相关文章

  1. [日志分析]Graylog2采集Nginx日志 主动方式

    这次聊一下Graylog如何主动采集Nginx日志,分成两部分: 介绍一下 Graylog Collector Sidecar 是什么 如何配置 Graylog Collector Sidecar 采 ...

  2. [日志分析]Graylog2采集mysql慢日志

    之前聊了一下graylog如何采集nginx日志,为此我介绍了两种采集方法(主动和被动),让大家对graylog日志采集有了一个大致的了解. 从日志收集这个角度,graylog提供了多样性和灵活性,大 ...

  3. [日志分析]Graylog2进阶 通过正则解析Nginx日志

    之前分享的 [日志分析]Graylog2采集Nginx日志 主动方式 这篇文章介绍了Graylog如何通过Graylog Collector Sidecar来采集nginx日志. 由于日志是未经处理的 ...

  4. elk系列3之通过json格式采集Nginx日志【转】

    转自 elk系列3之通过json格式采集Nginx日志 - 温柔易淡 - 博客园http://www.cnblogs.com/liaojiafa/p/6158245.html preface 公司采用 ...

  5. Centos7 搭建 Flume 采集 Nginx 日志

    版本信息 CentOS: Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x ...

  6. 通过filebeat、logstash、rsyslog采集nginx日志的几种方式

    由于nginx功能强大,性能突出,越来越多的web应用采用nginx作为http和反向代理的web服务器.而nginx的访问日志不管是做用户行为分析还是安全分析都是非常重要的数据源之一.如何有效便捷的 ...

  7. [日志分析]Graylog2进阶之获取Nginx来源IP的地理位置信息

    如果你们觉得graylog只是负责日志收集的一个管理工具,那就too young too naive .日志收集只是graylog的最最基础的用法,graylog有很多实用的数据清洗和处理的进阶用法. ...

  8. elk系列3之通过json格式采集Nginx日志

    preface 公司采用的LNMP平台,跑着挺多nginx,所以可以利用elk好好分析nginx的日志.下面就聊聊它吧. 下面的所有操作都在linux-node2上操作 安装Nginx nginx是开 ...

  9. Flume采集Nginx日志到HDFS

    下载apache-flume-1.7.0-bin.tar.gz,用 tar -zxvf 解压,在/etc/profile文件中增加设置: export FLUME_HOME=/opt/apache-f ...

随机推荐

  1. 如何模拟ip

    展开全部回答查看 https://segmentfault.com/q/1010000002990136 模拟国外ip https://gtmetrix.com/ 登录后才可以切换模拟的地区

  2. Python类变量与实例变量及成员函数修饰方式说明(与Java定义方式进行类比)

    Python类中的变量有类变量和实例变量之分. 类变量:变量绑定在类上,同一个类之间的共享变量,类比于Java中的静态变量static 公有变量定义 Java 的定义方式 class Test{ pu ...

  3. MAYA安装未完成,某些产品无法安装的解决方法

    MAYA提示安装未完成,某些产品无法安装该怎样解决呢?,一些朋友在win7或者win10系统下安装MAYA失败提示MAYA安装未完成,某些产品无法安装,也有时候想重新安装MAYA的时候会出现本电脑wi ...

  4. 公式化学习urllib(第一卷)

    Import urllib.request 正常爬取网页: url=网址 +代表 下面测试一下: 结果我就不显示了 令html为读取后的对象 先用正则表达式抓取数据 Import re 令rule是抓 ...

  5. SpringMVC学习笔记二:参数接受

    该项目用来介绍SpringMVC对参数接受的方法: 项目目录树:在前一个项目上修改添加 新添加了Student类和Group类,用来测试整体参数接受 Student.java package com. ...

  6. SpringMVC在使用过程中的错误

    HTTP Status 500 - Request processing failed; nested exception is org.springframework.validation.Bind ...

  7. js 网页运行原理

    当我们打开一个网页的时候,浏览器会首先创建一个窗口,这个窗口就是我所知道的window对象,也就是整个Javascript运行所依附的全局变量. 为了加载网页文档,当前窗口又需要创建一个Documen ...

  8. python 常用模块介绍

    1.定义 模块:用来从逻辑上组织python代码(变量.函数.类,逻辑),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test). 包:用来从逻辑上组织模块的,本质就是 ...

  9. Google Play来华 象征意义 跳板而已

    Play来华 象征意义 跳板而已" title="Google Play来华 象征意义 跳板而已">   每当有大事发生,伴随的就是接连不断的小道消息传出来.就像苹 ...

  10. 工业界 vs. 学术界: 一个年轻员工的视角

    本文发表于<中国计算机学会通讯>2015年第5期,转载已获得授权 作者:菲利普·郭 (Philip Guo),美国罗切斯特大学助理教授 译者:​王长虎,微软亚洲研究院主管研究员 如果你即将 ...