在看了《服务器日志种种(1)》之后,对服务器上的日志大家已经有粗略的感受了吧,接下来这篇文章,小编给大伙具体讲讲,典型的服务器日志能够回答管理员哪几类问题。
用户如何访问
通常在线系统的最前端都是apache或者nginx类的HTTP服务器,它的日志记录了不同用户在特定时间的访问行为,举例而言,以下是一条常见的服务器访问日志:
213.60.233.243 - - [25/May/2004:00:17:09 +1200] "GET /internet/index.html HTTP/1.1" 200 6792 “http://www.aliyun-inc.com" "Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.6) Gecko/20040413 Debian/1.6-5"
|
日志中分别讲述了访问的来源IP,访问时间,访问对象,访问结果是否成功,返回大小,访问从哪个地方跳转 访问从哪种设备而来等等信息。
请求处理是否正常
在通过前端服务器处理完成后,请求会交由具体的后端服务进行处理,常见的包括php或者java应用程序,通过观察是否有异常日志可以判断请求是否都处理正常,举例而言,以下是java应用服务异常日志:
[2013-10-25 00:00:29 Production Mode] – GET /search_checked_form.htm/i25587486i ERROR c.a.c.w.impl.WebxRootControllerImpl – Full stack trace of the error TemplateNotFoundException: Could not find template “/screen/search_checked_form.htm/i25587486i” com.alibaba.citrus.service.pipeline.PipelineException: Failed to invoke Valve[#3/3, level 3] |
日志中包含了错误发生的页面,传递的参数,错误发生的接口和具体错误堆栈,通过该内容开发人员可以定位具体的错误逻辑进行修复。
各个模块状态如何
通常系统都会包含多个模块,对于每个模块运行状态日志一般由开发人员自定义并通过类似log4j和log4php等第三方库写入日志文件,举例而言,以下是某用户信息模块日志:
[2013/11/19 18:44:39][INFO][demo.log4j.Log4jDemo-20] Method:AddUser Latency:100 Status:OK[2013/11/19 18:44:39][INFO][demo.log4j.Log4jDemo-21] Method:GetUserInfo Latency:200 Status:OK[2013/11/19 18:44:39][INFO][demo.log4j.Log4jDemo-21] Method:DelUser Latency:100 Status:FAIL |
日志包含了对应模块中操作的类型,操作延时和最终是否成功等相关状态,通过该内容开发管理人员可以通过自定义键值获悉模块指定操作的相关状态。
是否有安全隐患或漏洞
在正常提供服务的同时,系统管理人员也会十分关心是否有漏洞或者安全隐患可能对存储的数据或者其它敏感信息造成泄漏。所以需要记录各种审计日志对用户敏感访问行为进行审查和预警。举例而言,以下是用户登录访问日志:
2014-06-03 15:47:26&@#!abcusr_base4&@#!10.128.10.147&@#!&@#!def101500219 2014-06-03 15:47:26&@#!abcusr_base2&@#!10.128.10.47&@#!&@#!def70198810 2014-06-03 15:47:26&@#!jusrabc35u&@#!10.132.161.36&@#!&@#!wfp |
日志中包含一个时间点用户从何处登录特定账号的记录,通过对日志的监控可以获悉是否有用户有异常的登录行为以进行预警和处理。
服务器本身是否正常
在服务器运行期间,硬件或者系统本身可能出现各种各样的故障,通过系统日志(类似/var/log/messages)用户可以获悉是否有异常发生。举例而言,以下是一条linux服务的的系统日志:
2013 Jun 8 23:01:01 Out of memory: Kill process 9682 (mysqld) score 9 or sacrifice child Killed process 9682, UID 27, (mysqld) total-vm:47388kB, anon-rss:3744kB, file-rss:80kB |
日志内容中说明了mysqld进程由于内存使用超过内核限制而被kill,通过监控此类可以及时响应系统的相关异常。
其实以上只是典型在线服务系统的一部分日志,还有其它依赖的相关日志包括数据库,网络服务,文件系统等等都能够帮助管理人员在出现问题时及时处理,除此之外,大家在管理服务时还关心哪些日志呢?比如:
- 数据库请求日志:搞明白为什么一个用户的读取请求迟迟不能返回
- 模块性能日志:当前系统的各个模块都占用多少时间进行处理
…期待大家的回复。