从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件
  • 首页
  • Nginx
  • Nginx日志格式和记录json格式以及记录真实IP

Nginx日志格式和记录json格式以及记录真实IP

发布:蔺要红03-29分类: Nginx


官方文档:ngx_http_log_module       Core functionality_error_log

错误日志:在nginx配置文件的main-核心功能模块

常见的错误日志级别:debut|ifo|notice|warn|error|crit|alert|emerg  级别越高,记录的信息越少
如果配置的等级过低,会带来磁盘I/O消耗。常用的 warn  error  crit

error_log  /server/logs/nginx_error.log  crit;
访问日志格式:在nginx配置文件的http段,默认是注释掉的、当使用了负载均衡的时候更需要打开注释

记录请求的真实IP----  $http_x_forwarded_for
当使用ELK收集日志的时候、日志需要写成json格式,以便于取相应字段的key做统计

 

Nginx反向代理最好不要开访问日志,如果访问量过大会增加磁盘I/O
日志权限如果不需要在线浏览以及其他需求、可以给600的权限,因为nginx主进程是root运行的,所以依然权限写入


http段配置
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

日志变量说明:

$remote_addr--请求地址 
$remote_user--http客户端请求时认证的用户名,如果未开启就没有
$time_local--nginx服务器时间
$status-http状态码,记录请求返回的状态列如:200 404 301
$request ----http请求头
$body_bytes_sent 响应体大小
$http_referer 记录此次请求是从哪个连接访问过来的,可以根据referer进行防盗链设置
$http_user_agent使用的浏览器类型
$http_x_forwarded_for前端有代理服务器时,记录客户端地址,此参数生效的前提是代理服务器上也要进行相关的x_forwarded_for设置

JSON格式日志配置

log_format json '{"@timestamp":"$time_iso8601",'
           '"host":"$server_addr",'
           '"clientip":"$remote_addr",'
           '"size":$body_bytes_sent,'
           '"responsetime":$request_time,'
           '"upstreamtime":"$upstream_response_time",'
           '"upstreamhost":"$upstream_addr",'
           '"http_host":"$host",'
           '"url":"$uri",'
           '"domain":"$host",'
           '"xff":"$http_x_forwarded_for",'
           '"referer":"$http_referer",'
           '"agent":"$http_user_agent",'
           '"status":"$status"}'; 
-------------------------------or---------------------------------------
log_format json '{"@timestamp":"$time_iso8601",'
               '"@version":"1",'
               '"client":"$remote_addr",'
               '"url":"$uri",'
               '"status":"$status",'
               '"domain":"$host",'
               '"host":"$server_addr",'
               '"size":$body_bytes_sent,'
               '"responsetime":$request_time,'
               '"referer": "$http_referer",'
               '"ua": "$http_user_agent"}';
    error_log  /data/wwwlogs/www.linyaohong.com.error.log;
    access_log  /data/wwwlogs/www.linyaohong.com.access.log main;
    access_log  /data/wwwlogs/linyaohong.com.access.log json;

把日志先写入到buffer,再定时写入到日志 (从来没用过,在官方文档中看到的)

官方:
access_log /spool/logs/nginx-access.log compression buffer=32k;   
access_log /path/to/log.gz combined gzip flush=5m; 
或者
access_log  /server/logs/www.linyaohong.com.access.log main gzip buffer=32k flush=5s;

说明:压缩大小32k 每5秒写入一次 
要使gzip压缩起作用,必须使用zlib库构建nginx
默认情况下,缓冲区大小等于64K字节

http段配置完日志格式以后在server段配置文件引用

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站