发布时间:2014-09-05 16:34:39作者:知识屋
一个稍大一点的系统,通常就需要考虑内嵌一个日志系统,无论这个系统是多么精简,至少能给开发人员定位问题。而常用的方法无过于使用控制台的printf和文件记录fwrite函数。
在一个大型系统中,日志该如何管理,当系统运行n天后,发现了一个BUG,难道要去控制台截取printf打印?生成一个巨大的日志文件吗?是这么做的吗?可行吗?这个问题的答案是非常明显的,我们不能用printf来做大型系统的日志管理,它只能在开发阶段用于简单的问题定位而已。
日志管理需要从系统架构上解决,而这个架构最终还是要取决于日志的用途和目的。先来看看日志管理究竟是干什么的?
日志管理主要为了提供一个方法来管理计算机产生的大量日志信息,其主要过程涉及信息的收集,存储和分析,主要目的是安全检查,审计检查,问题定位。
通常开发人员会自己构建日志系统和分析工具,来支撑模块开发,但实际情况是常常没有固定的格式和规范可循。因此系统级的日志管理将是一个复杂的过程,若在开发中不做适当的管控,经常容易产生混淆,降低系统级开发定位的效率。因此有效的系统级日志分析涉及很多挑战:大量日志,日志类型,日志格式等。
为了解决系统级日志分析【1】,当前有诸多方案:
模式识别(Pattern recognition)
归一化(Normalization)
分类和标示(Classification and tagging)
相关性分析(Correlation analysis)
人工过滤(Artificial Ignorance)
但是我们回过头来看下日志管理的目的和流程:来源于应用程序,操作系统,硬件设备的日志信息以消息流的方式组织成日志,经由日志管理系统的收集和存储环节,进入日志分析阶段。可以说,日志收集和存储的主要目的是为了分析,而分析是为了解决日志管理的目的:安全检查,审计检查,问题定位。
日志管理在大型系统中是一个系统架构问题。既然如此,日志管理就应该从系统架构上考虑。下面介绍下日志管理架构开发涉及的主要几个环节和步骤。
日志管理架构开发主要环节和步骤:
定义需求和目标:如安全日志分析,应用问题分析,控制管理报告等;
定义日志框架,类型,格式,规范;
确定日志管理目的:收集,分析,报告,远程监控?如果收集日志,多长时间需要归档一次?是否需要压缩?
日志中需要包含哪些信息:模块类型?日志级别?错误信息?
评估当前技术,参考开源项目,选择或者构建最合适的日志管理方案。
从源头上规范了日志管理,做好了日志管理的架构设计,对于后续模块,系统开发,定位将会带来深远的影响。
如果有朋友涉及了这些问题,可以讨论下,当前正在做一个系统级的日志管理方案。
参考文档:
【1】Log Analysis
摘自 lida2003的专栏
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能