设为首页 收藏本站
查看: 1090|回复: 0

[经验分享] Nginx_PHP的LOG设计

[复制链接]

尚未签到

发表于 2018-11-12 12:08:41 | 显示全部楼层 |阅读模式
  作者:diege
  时间:2012-0-22
  一、nginx
  1、  nginx错误日志
  1)       配置位置
  Nginx.conf顶层,第三行。
  error_log               /data/logs/nginx_error.log;
  2)       存放路径
  /data/logs/
  3)       备份切割:无
  如果要定位到站点的错误,可以按access.log设计
  在站点配置文件server{}块中
  error_log       /data/logs/$hostname_error.log;
  2、  nginx访问日志
  1)       配置access.log格式和说明
  http{}顶层
  #log_format 有一个默认的,无需设置的combined日志格式设置
  #其格式为
  log_format  combined  '$remote_addr - $remote_user [$time_local]  '
  '$request "$status" $body_bytes_sent '
  '"$http_referer" "$http_user_agent" '
  #默认LOG中有'$remote_addr和$remote_user中间 有-
  #其他自定义的LOG
  log_format  main  '$remote_addr - $remote_user [$time_local] $request '
  '"$status" $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  #后端记录真实访问IP
  log_format download  '$remote_addr - $remote_user [$time_local] '
  '"$request" $status $bytes_sent '
  '"$http_referer" "$http_user_agent" '
  '"$http_range" "$sent_http_content_range"';
  log_format  timelog  '$remote_addr - $remote_user [$time_local] $request '
  '"$status" $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"'
  '$request_time $upstream_response_time
  说明
  $remote_addr 远程地址
  $remote_user  远程用户
  $time_local 写入普通日志格式的当地时间(服务器时间)
  $request  请求的方法和连接
  $request_length 请求主体的长度。
  $request_time nginx处理请求的时间,单位为毫秒(0.5.19版本后可以使用秒为单位)
  $status 应答的状态(代码)
  $upstream_response_time 后端处理时间,代理的响应时间
  $upstream_status 后端服务器的状态
  $upstream_addr : 后端服务器的IP地址和端口
  $body_bytes_sent 减去应答头后传送给客户端的字节数,这个变量兼容apache模块mod_log_config的%B参数(在0.3.10前这个变量为$apache_bytes_sent)。
  $bytes_sent 传送给客户端的字节数。
  $http_referer 跳转$request的链接,就是从那里访问到$request
  $http_user_agent 浏览器操作系统信息等
  $http_x_forwarded_for 访问用户真实服务器的IP
  $http_range ?
  $sent_http_content_range ?
  $connection,连接数。
  $msec,正在写入日志条目的当前时间(精确到百万分之一秒)
  $pipe,如果请求为管道的。
  $status  $upstream_status :  响应的状态码。前端服务器响应状态,后端服务器响应状态
  $request_time  $upstream_response_time :  关注性能必备!看看前端传输文件的时间,以及后台处理的时间。前者对了解网络状态有益,后者对了解服务性能有益。
  $remote_addr  $upstream_addr :  用户的IP地址,后端服务的IP地址
  $bytes_sent $body_bytes_sent  :  发送给用户端的数据量(包含HTTP头和不包含HTTP头)
  $host $request :  最重要的,搞定具体域名具体URL,不抓瞎。
  LOG测试
  log_format timelog  '$remote_addr - $remote_user [$time_local]  '
  '"$request" $status $bytes_sent '
  '"$http_referer" "$http_user_agent" '
  '"$http_range" "$sent_http_content_range" '
  '"$request_time nginx" "$upstream_response_time" '
  '"$upstream_status" "$connection"';
  访问后LOG内容
  172.17.2.160 - - [23/Apr/2012:15:43:16 +0800]  "GET /getinfo.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2710 "http://www.example.com/getinfo.php" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0" "-" "-" "0.004" "0.004" "200" "1"
  172.17.2.160 - - [23/Apr/2012:15:43:16 +0800]  "GET /getinfo.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2332 "http://www.example.com/getinfo.php" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0" "-" "-" "0.005" "0.005" "200" "5"
  172.17.2.160 - - [23/Apr/2012:15:43:16 +0800]  "GET /getinfo.php?=SUHO8567F54-D428-14d2-A769-00DA302A5F18 HTTP/1.1" 200 3000 "http://www.example.com/getinfo.php" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0" "-" "-" "0.005" "0.005" "200" "4"
  '"$http_range" "$sent_http_content_range" 这个字段是空的。
  代理(包括php-fpm代理)LOG
  设计LOG
  log_format proxylog  '$remote_addr $remote_user [$time_local]  '
  '$request" $status $bytes_sent '
  '$http_referer $http_user_agent '
  '$request_time $upstream_response_time '
  '$upstream_addr $upstream_status ';
  172.17.2.160 - [23/Apr/2012:15:53:56 +0800]  GET /getinfo.php HTTP/1.1" 200 10496 - Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0 0.030 0.030 172.18.17.223:9000 200
  172.17.2.160 - [23/Apr/2012:15:53:56 +0800]  GET /getinfo.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2710 http://www.example.com/getinfo.php Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0 0.003 0.003 172.18.17.223:9000 200
  172.17.2.160 - [23/Apr/2012:15:53:56 +0800]  GET /getinfo.php?=SUHO8567F54-D428-14d2-A769-00DA302A5F18 HTTP/1.1" 200 3000 http://www.example.com/getinfo.php Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0 0.004 0.004 172.18.17.223:9000 200
  172.17.2.160 - [23/Apr/2012:15:53:56 +0800]  GET /getinfo.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2332 http://www.example.com/getinfo.php Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0 0.003 0.003 172.18.17.223:9000 200
  压缩测试 错误 gzip是格式。不是压缩日志、
  2)       配置位置
  各个虚拟站点server{}块下
  access_log  /data/logs/sitelogs/$servername.cn.access.log  main;
  access_log /data/logs/sitelogs/$servername.cn.access.log  gzip  buffer=32k;
  nginx直接调用gzip压缩,不知道对性能印象有多大。所以,还不压缩。到凌晨再切割压缩。
  3)       存放路径
  /data/logs/sitelog
  4)       备份切割:
  凌晨0点对日志切割,压缩备份到/data/backup/httplogs,如果有需要再同步到其他服务器进行分析或导入数据库
  脚本
  #!/bin/sh
  # Name :            gzip_allvhosts_log.sh
  # Date created :    2012-4-22
  # Whom :            diege
  # Version :         V1.1,2012-4-22
  # Description :     处理所有nginx vhost的access log和error.log(如果有)
  yesterday=`/bin/date -v -1d +%Y-%m-%d`
  logbak_dir=/data/backup/httplogs
  httplog_dir=/data/logs/sitelogs
  allvhost=`ls -1 /data/logs/sitelogs/ | awk -F'-' '{print$1}' | uniq`
  #move all vhost log to backup dir
  for vhost in $allvhost
  do
  src_access_log=${httplog_dir}/${vhost}-access.log
  dst_access_log=${logbak_dir}/${vhost}/${vhost}_${yesterday}_access.log
  src_error_log=${httplog_dir}/${vhost}-error.log
  dst_error_log=${logbak_dir}/${vhost}/${vhost}_${yesterday}_error.log
  if [ ! -d ${logbak_dir}/${vhost} ];then
  mkdir -p ${logbak_dir}/${vhost}
  fi
  if [ -f $src_access_log ];then
  /bin/mv  $src_access_log $dst_access_log
  fi
  if [ -f $src_error_log ];then
  /bin/mv  $src_error_log $dst_error_log
  fi
  done
  # nginx log rotate
  kill -USR1 `cat  /var/run/nginx.pid`
  #compress back log
  for vhost in $allvhost
  do
  cd ${logbak_dir}/${vhost}/ && /usr/bin/gzip *.log
  done
  二、php LOG
  1、错误日志error_log
  # vim /usr/local/etc/php.ini
  648 error_log = /data/logs/php_errors.log
  三、php-fpm 日志
  php的所有日志都存放在/data/logs/php-fpm/目录下
  # vim /usr/local/etc/php-fpm.conf
  1、  配置php-fpm_error.log
  [global]
  error_log =  /data/logs/php-fpm/php-fpm_error.log
  2、  配置php-fpm slowlog 慢日志
  [www0]
  slowlog = /data/logs/php-fpm/$pool.log.slow
  3、  配置php-fpm access.log 访问日志 一般是nginx调用php-fpm处理php文件的日志
  [www0]
  access.log = /data/logs/php-fpm/$pool.access.log


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-634135-1-1.html 上篇帖子: D7-Nginx-SSL 下篇帖子: nginx 的安装及与php、jsp 的整合
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表