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

[经验分享] 玩转apache之日志【转帖】

[复制链接]

尚未签到

发表于 2017-1-6 12:39:26 | 显示全部楼层 |阅读模式
  本文原出处 http://www.zhangyiqun.cn/26.html
  原作者 作者:张逸群
Mail:jeantoe@gmail.com
引言
  要有效地管理Web服务器,就有必须了解服务器的状态、性能以及出现的问题。Apache提供了非常全面而灵活的日志记录功能。本文将阐述如何配置文件以及如何理解日志内容。
1.使用combined获取更详细的日志
  编辑httpd.conf文件(下面几乎都是更改这个文件),搜索CustomLog
CustomLog logs/access_log combined
用这个格式不会有什么损失,而且还能获得一些额外的信息(referer和user-agent)。
2.让错误信息更全面
  通过定义loglevel来实现
搜索LogLevel
  日志级别如下。(debug产生的信息最多。emerg产生的信息最少)
  Level
  描述
  例子
  emerg
  紧急(系统无法使用)
  “Child cannot open lock file. Exiting”
  alert
  必须立即采取措施
  “getpwuid: couldn’t determine user name from uid”
  crit
  致命情况
  “socket: Failed to get a socket, exiting child”
  error
  错误情况
  “Premature end of script headers”
  warn
  警告情况
  “child process 1234 did not exit, sending another SIGHUP”
  notice
  一般重要情况
  “httpd: caught SIGBUS, attempting to dump core in …”
  info
  普通信息
  “Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)…”
  debug
  调试信息
  “Opening config file …”
3.记录以POST方式传送的数据
  使用mod_secutiry,增加如下配置
SecAuditLogType Concurrent
SecAuditLogStorageDir /var/www/audit_log/data/
SecAuditLog /var/www/audit_log/index
SecAuditLogParts ABCFHZ
注:
post方式与get方式
1、采用post方式传输数据时,不需要在URL中显示出来,而get方式要在URL当中进行显示(不安全性).
2、post方式的传输数据量较大,理论上来说是没有限制的,而get方式由于受到UEL长度的限制,只能传递GET方式提交的数据最多只能有1024字节.
3、post顾名思义,就是为了将数据传送到服务器端,Get就是为了从服务器端取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.post的信息作为http请求的内容,而Get是在Http头部传输的。
我们的form表单的method方法,post,get.它在页面传值的时候的区别也就是上面提到的三点.
4.记录cookie
  记录从客户端收到的cookie
  CustomLog logs/cookies_in.log “%{UNIQUE_ID}e %{Cookie}i”
CustomLog logs/cookies2_in.log “%{UNIQUE_ID}e %{Cookie2}i”
  记录由服务器发送的cookie
  CustomLog logs/cookies_out.log “%{UNIQUE_ID}e %{Set-Cookie}o”
CustomLog logs/cookies2_out.log “%{UNIQUE_ID}e %{Set-Cookie2}o”
注:本方法记录所有的cookie ,如何区分是个问题。我只在实验的时候用,真实生产环境用的不多。
cookie与Set-cookie标头字段是最常用到的。cookie2与set-cookie对应的字段比较新。
5.忽略来自本站的请求
  追踪盗链的时候比较有用。
定义后缀
SetEnvIfNoCase Referer “^http://www.example.com/” 你的网站 local_referrer=1
  CustomLog logs/access_log combined env=!local_referrer
  注:SetEnvIfNoCase与SetEnvIf相同,但是前者无视大小写。
6.按时间生产日志
  有时需要间隔N小时生产一次日志。
  CustomLog “| /path/to/rotatelogs /path/to/logs/access_log.%Y-%m-%d 86400″ combined
  注:使用了CustomLog和rotatelogs (red hat默认就有)。
使用秒来控制间隔时间。
7.在每月的第一天更新日志文件
  在每月的第一天结束上个月的日志文件,同时开始新的记录。
  CustomLog "|/usr/bin/cronolog /www/logs/access%Y%m.log" combined
  注:需要使用cronolog,十分好用的工具,下载地址请google之。
8.为虚拟主机建立各自的日志
  首先,需要将虚拟主机的信息放入日志中。
  LogFormat “%v %h %l %u %t /”%r/” %>s %b” vhost
CustomLog logs/multiple_vhost_log vhost
  这将用日志的普通格式来创建一个日志文件。但会在每条记录前加上正式的虚拟主机名(就是在ServerName指令中定义的那个)。
现在将日志文件分开(每个虚拟主机一个日志文件)
  split-logfile < /logs/multiple_vhost_log
  注:split-logfile不是自动安装的,而是在配置过程以后,装在”support”目录下的
附表
9.记录响应请求的ip地址
  当服务器有多个ip时想知道是哪个ip响应了请求。
  CustomLog logs/served-by.log “%A”
10.记录访客来源
  知己知彼,了解访客是从哪个网站过来的。
  %{Referer}i
  注:默认已经包含在logformat
11.记录访客使用的浏览器
  %{User-Agent}i
  注:默认已经包含在logformat
12.使用syslog记录apache日志
  第一步:配置syslog
/etc/syslog.conf是syslog的配置文件。
里面的每一行都用一个或者多个空格或者TAB隔开,分成两个段
如:
mail.info /var/log/maillog
意思是把日志对象mail的info级别及以上级别的日志记录到/var/log/maillog中去
在这里,前面一段是 : 日志对象.日志级别。后面一段是:日志的记录位置,这个位置可以是文件(如/var/log/maillog),可以是某个TTY(如/dev/tty1)可以是某个登录的用户的控制台(如用户名jean)也可以是当前所有的下在登录的用户所在的控制台(用*号表示所有用户)还可以是一台远程的主机(@remote_host_ip)
现在加入这一行
  local0.info /var/log/apache.log
  然后重新启动syslog。service syslog restart
第二步
在apache配置中加入
  CustomLog “|logger -t apache -p local0.info” combined
补充
  HTTP状态码
  编码
  描述
  Informational 1xx
  100
  Continue
  101
  Switching protocols
  Successful 2xx
  200
  OK
  201
  Created
  202
  Accepted
  203
  Nonauthoritative information
  204
  No content
  205
  Reset content
  206
  Partial content
  Redirection 3xx
  300
  Multiple choices
  301
  Moved permanently
  302
  Found
  303
  See other
  304
  Not modified
  305
  Use proxy
  306
  (Unused)
  307
  Temporary redirect
  Client error 4xx
  400
  Bad request
  401
  Unauthorized
  402
  Payment required
  403
  Forbidden
  404
  Not found
  405
  Method not allowed
  406
  Not acceptable
  407
  Proxy authentication required
  408
  Request timeout
  409
  Conflict
  410
  Gone
  411
  Length required
  412
  Precondition failed
  413
  Request entity too large
  414
  Request-URI too long
  415
  Unsupported media type
  416
  Requested range not satisfiable
  417
  Expectation failed
  Server error 5xx
  500
  Internal server error
  501
  Not implemented
  502
  Bad gateway
  503
  Service unavailable
  504
  Gateway timeout
  505
  HTTP version not supported

运维网声明 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.yunweiku.com/thread-324757-1-1.html 上篇帖子: Apache配置假的二级域名转发(二) 下篇帖子: Apache Commons Digester使用方法详细介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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