服务器日志种种(2)—-日志类型详解

在看了《服务器日志种种(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,通过监控此类可以及时响应系统的相关异常。

其实以上只是典型在线服务系统的一部分日志,还有其它依赖的相关日志包括数据库,网络服务,文件系统等等都能够帮助管理人员在出现问题时及时处理,除此之外,大家在管理服务时还关心哪些日志呢?比如:

  • 数据库请求日志:搞明白为什么一个用户的读取请求迟迟不能返回
  • 模块性能日志:当前系统的各个模块都占用多少时间进行处理

…期待大家的回复。

时间: 2014-06-19

服务器日志种种(2)—-日志类型详解的相关文章

MySQL binlog中的事件类型详解_Mysql

MySQL binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型,ROW格式下的DML操作对应的是ROWS_EVENT类型. 首先,看看源码中定义的事件类型 源码位置:mysql-5.7.14/libbinlogevents/include/binlog_event.h enum Log_event_type { /** Every time you update this enum (when you add a ty

TIMESTAMP列类型详解(怎样设列的默认值为Now())

详解 TIMESTAMP列类型详解(怎样设列的默认值为Now()) MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认值为当前更新日期与时间的功能,你可以使用TIMESTAMP列类型下面就详细说明TIMESTAMP列类型 TIMESTAMP列类型TIMESTAMP值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示.TIMESTAMP值显示尺寸的格式如下表所示::+---------------+----------------+| 列类型      

Linux bash Shell中的变量类型详解

  这篇文章主要介绍了Linux bash Shell中的变量类型详解,变量类型共分为本地变量.局部变量.环境变量.位置变量和特殊变量等,需要的朋友可以参考下 在Linux系统中进行日常运维或者是编写脚本时,变量是再熟悉不过的了,但这些变量都有哪些类型,具体的用法又有哪些差异呢?本文整理分享给大家: 一.bash变量类型: 本地变量 局部变量 环境变量 位置变量 特殊变量(内置) 二.本地变量: varname=value:作用域为整个bash进程可以使用; 变量命名规范: 1. 只能含字母.数

C#基础语法:可空类型详解

  这篇文章主要介绍了C#基础语法:可空类型详解,本文分析了可空类型的源码.研究了可空类型强制转换为常规类型.可空类型的运算等内容,需要的朋友可以参考下 以下是System.Nullable在FCL中的定义. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

Swift类型创建之自定义一个类型详解

  这篇文章主要介绍了Swift类型创建之自定义一个类型详解,本文讲解了自定义原型.实现默认值.支持基本布尔型初始化.支持Bool类型判断.支持兼容各们各派的类型.完善OCBool的布尔基因体系等内容,需要的朋友可以参考下 小伙伴们,Swift中的Bool类型有着非常重要的语法功能,并支撑起了整个Swift体系中的逻辑判断体系,经过老码的研究和学习, Bool类型本身其实是对基础Boolean类型封装,小伙伴们可能咬着手指头问老码,怎么一会Bool类型,一会Boolean类型,其区别在于,前者是

javascript类型系统_正则表达式RegExp类型详解_javascript技巧

前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String和RegExp都定义了方法,使用正则表达式可以进行强大的模式匹配和文本检索与替换.本文将介绍正则表达式的RegExp对象,以及正则表达式涉及 到的属性和方法 对象 javascript中的正则表达式用RegExp对象表示,有两种写法:一种是字面量写法:另一种是构造函数写法 Perl写法 正则表达式字面量写法,又叫Perl写法,因为javascript的正则表达式特性

JavaScript类型系统之布尔Boolean类型详解_javascript技巧

前面的话 布尔值Boolean类型可能是三种包装对象Number.String和Boolean中最简单的一种.Number和String对象拥有大量的实例属性和方法,Boolean却很少.从某种意义上说,为计算机设计程序就是与布尔值打交道,作为最基本的事实,所有的电子电路只能识别和使用布尔数据.本文将介绍布尔Boolean类型 定义 布尔Boolean类型表示逻辑实体,它只有两个值,保留字true和false,分别代表真和假这两个状态 Boolean包装类型是与布尔值对应的引用类型,在布尔表达式

Javascript类型系统之String字符串类型详解_javascript技巧

javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串String是javascript基本数据类型,同时javascript也支持String对象,它是一个原始值的包装对象.在需要时,javascript会自动在原始形式和对象形式之间转换.本文将介绍字符串String原始类型及String包装对象 定义 字符串String类型是由引号括起来的一组由16位Unicode字符组成的字符序列 字符串类型常被用于表示文本数据,此时字符串中的

Swift编程之枚举类型详解_Swift

想必写过程序的童鞋对枚举类型并不陌生吧,使用枚举类型的好处是多多的,在这儿就不做过多的赘述了.Fundation框架和UIKit中的枚举更是数不胜数,枚举可以使你的代码更易阅读并且可以提高可维护性.在Swift语言中的枚举可谓是让人眼前一亮.在Swift中的枚举不仅保留了大部分编程语言中枚举的特性,同时还添加了一些好用而且实用的新特性,在本篇文章中将领略一些Swift中枚举类型的魅力. 有小伙伴会问,不就是枚举么,有什么好说的.在Swift中的枚举怎不然,Swift中的枚举的功能要强大的多,不仅