nginx的日志格式标准

作者:焦振清
时间:2017-11-08


相信互联网的从业人员,或多或少都会接触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%保证日志分析结果的可靠性和通用性,且越复杂的场景,其带来的收益越显著。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值