nginx中用JSON格式记录日志的配置示例

nginx的日志配置可以参见《nginx日志配置指令详解》一文。如果要想以json格式记录nginx日志以便logstash分析,该如何指定日志格式呢?可以按照下面的格式来实现。

定义nginx日志格式:

代码如下:

log_format logstash_json '{ "@timestamp": "$time_local", '
                         '"@fields": { '
                         '"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", '
                         '"http_referrer": "$http_referer", '
                         '"body_bytes_sent":"$body_bytes_sent", '
                         '"http_x_forwarded_for": "$http_x_forwarded_for", '
                         '"http_user_agent": "$http_user_agent" } }';

指定记录日志格式:

代码如下:

access_log  /data/logs/nginx/www.jb51.net.access.log  logstash_json;

日志输出如下:

不利于阅读。复制到http://jsonlint.com/美化下格式。

(0)

相关推荐

  • nginx php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)

    很多站长转到nginx+php-fpm后,饱受500,502问题困扰.当nginx收到如上错误码时,可以确定后端php-fpm解析php出了某种问题,比如,执行错误,执行超时. php-fpm.conf的配置文件中有一个参数request_slowlog_timeout是这样描述的 复制代码 代码如下: ; The timeout for serving a single request after which a PHP backtrace will be; dumped to the 'sl

  • nginx关闭favicon.ico、robots.txt日志记录配置

    nginx日志最近发生大量访问favicon.ico无法找到的404错误日志,小编感觉很影响服务器性能,对于一个高并发的服务器每一个错误都会影响性能,所以需要关闭访问favicon.ico的日志记录功能. 复制代码 代码如下: # 把以下配置放到 server {} 块. #关闭favicon.ico不存在时记录日志location = /favicon.ico {log_not_found off;access_log off;} location = /robots.txt {allow a

  • Nginx实现浏览器可实时查看访问日志的步骤详解

    一.首先查看nginx版本,我使用的是1.9.7的版本,安装目录在/application/nginx-1.9.7 [root@AnSheng ~]# /application/nginx-1.9.7/sbin/nginx -V nginx version: nginx/1.9.7 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) configure arguments: --prefix=/application/nginx-1.9.7

  • nginx日志配置指令详解

    日志对于统计排错来说非常有利的.本文总结了nginx日志相关的配置如access_log.log_format.open_log_file_cache.log_not_found.log_subrequest.rewrite_log.error_log. nginx有一个非常灵活的日志记录模式.每个级别的配置可以有各自独立的访问日志.日志格式通过log_format命令来定义.ngx_http_log_module是用来定义请求日志格式的. 1. access_log指令 语法: access_

  • nginx日志切割shell脚本

    一.脚本思路 第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志.在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件. 第二步向nginx主进程发送USR1信号. nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者. 重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件.

  • Python 分析Nginx访问日志并保存到MySQL数据库实例

    使用Python 分析Nginx access 日志,根据Nginx日志格式进行分割并存入MySQL数据库.一.Nginx access日志格式如下: 复制代码 代码如下: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_f

  • nginx访问日志并删除指定天数前的日志记录配置方法

    说明: 操作系统:CentOS 站点1:bbs.jb51.net 站点2:sns.jb51.net Nginx安装路径:/usr/local/nginx Nginx配置文件路径:/usr/local/nginx/conf/nginx.conf 站点1配置文件路径:/usr/local/nginx/conf/vhost/bbs.jb51.net.conf 站点2配置文件路径:/usr/local/nginx/conf/vhost/sns.jb51.net.conf 目的: 1.对站点1和站点2的n

  • nginx日志分割 for linux

    使用方法,先将以下脚本保存为 cutlog.sh,放在/root 目录下,然后给予此脚本执行的权限 复制代码 代码如下: chmod +x cutlog.sh 然后使用crontab -e 将此脚本加入到计划任务中, 复制代码 代码如下: 00 00 * * * /bin/bash /root/cutlog.sh 让此脚本每天凌晨0点0分执行. 复制代码 代码如下: #!/bin/bash#function:cut nginx log files shell#设置您的网站访问日志保存的目录,我的

  • Linux服务器nginx访问日志里出现大量http 400错误的请求分析

    服务器中的错误记录类似于这种: 124.65.133.242 – – [27/Oct/2014:14:30:51 +0800] "-" 400 0 "-" "-" 124.65.133.242 – – [27/Oct/2014:14:31:45 +0800] "-" 400 0 "-" "-" 124.65.133.242 – – [27/Oct/2014:14:31:45 +0800]

  • 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法

    nginx与apache不一样,在apache中可以直接指定php的错误日志,那样在php执行中的错误信息就直接输入到php的错误日志中,可以方便查询. 在nginx中事情就变成了这样:nginx只对页面的访问做access记录日志.不会有php的error log 信息.nginx把对php的请求发给php-fpm fastcgi进程来处理,默认的php-fpm只会输出php-fpm的错误信息,在php-fpm的errors log里也看不到php的errorlog. 原因是php-fpm的配

随机推荐