nginx的日志格式标准

相信互联网的从业人员,或多或少都会接触access_log进行一些信息的提取和分析,那么如何高效的达成目标,今天我就将业务线的实践分享给大家。

虽然我很羡慕那些能够把access_log分析命令写得足够长的人,但我并不建议在线上依然保持如此原始的方式,通过使用格式化的日志格式,我们会获取以下收益:

  • 日志需求分析标准化
  • 日志需求分析工具化|插件化
  • 日志字段含义清晰
  • 离线分析系统统计方法标准化

基于日志格式的规范,不论是单机分析,还是离线集群分析,效率都得到了大幅的提升,我们只需要做数据接入,通过各个产品线提供的插件即可满足绝大部分需求

log_format  access

‘[Remote_ip:$remote_addr] ‘

‘[Remote_user:$remote_user] ‘

‘[Querytime:$time_local] ‘

‘[Request_url:$request] ‘

‘[Request_status:$status] ‘

‘[Request_byte_B:$bytes_sent] ‘

‘[Request_time_s:$request_time] ‘

‘[Http_referer:$http_referer] ‘

‘[Http_agent:$http_user_agent] ‘;

注意事项

  • 要明确定义单位,从而让分析系统能够自适应
  • 含义要清晰和标准,便于各类角色都能够统一理解
  • 分隔符要避免使用url中可能出现的字符

日志示例

调整前:

10.10.10.10 – – [18/Mar/2016:09:47:16 +0800] “GET /test.php HTTP/1.1” 844 200

调整后:

[Remote_ip:10.10.10.10] [Remote_user:-] [Querytime:18/Mar/2016:09:47:16 +0800][Request_url:GET /test.php HTTP/1.1] [Request_status:200] [Request_byte_B:844]

问题:在日志中找出访问次数最多的几个分钟

  • 原始格式:awk ‘{print $4}’ access_log |cut -c 14-18|sort|uniq -c|sort -nr|head
  • 优化格式:cut -d “]” -f3 access_log|cut -d “:” -f2-4|sort |uniq -c |sort -nr|head

结论:优化格式,可以用最简单的命令,100%保证日志分析结果的可靠性和通用性,且越复杂的场景,其带来的收益越显著。

猜你喜欢

转载自blog.csdn.net/weixin_43947499/article/details/84942249