神器 awk

最近想研究下两大神器 awk/sed先学习了 awk看了这篇 AWK 简明教程写的不错推荐一下

awk 分析 nginx 日志

于是实践下正好想知道 nginx_proxy_cache 模块的命中状态于是写了这样一条命令来分析当天日志里面的命中率

awk '{if($NF=="\"HIT\"") hit++; else if($NF=="\"MISS\"") miss++; else if($NF=="\"EXPIRED\"") expired++; else other++} END {printf "KU.IO Nginx Cache Status:\n\nHit Rate: %.2f%\nMiss Rate: %.2f\nExpired Rate: %.2f%\nOther Rate: %.2f%\n",hit/NR*100,miss/NR*100,expired/NR*100,other/NR*100}' /var/log/nginx/ku.io.access.log

/var/log/nginx/ku.io.access.log 修改为你的日志文件路径即可复用

当然nginx 的日志格式应该这样设置

log_format  main  '$remote_addr - $remote_user [$time_local]"$request"''$status $body_bytes_sent "$http_referer" ''"$http_user_agent""$http_x_forwarded_for" ''"$upstream_cache_status"';

其中 Other Rate 包含两项

  • UPDATING
  • STALE

感觉这两项意义不大就没单独输出了

Happy Hacking~ :)