关于尚观
最新课程体系
企业服务
零起点咨询
开放课程
报名咨询
免费资源申请
授权加盟
学员专区&薪资
认证课程
  • 尚观首页
  • 尚观简介
  • 师资力量
  • 尚观文化
  • 尚观动态
  • 加入尚观
  • 联系我们
  • 珍贵瞬间
  • Linux系统与集群
  • 数据库集群架构师
  • 嵌入式内核驱动开发
  • 服务器开发架构师
  • 研发型测试架构师
  • RHCE/LPI认证体系
  • Oracle OCP认证
  • 企业高级技术培训
  • 批量人才供应及研发团队建设
  • 软件外包及研发项目合作
  • 人力外包及人力供应
  • 猎头服务
  • 开启职业生涯
  • 如何入门
  • Unix/Linux职业方向
  • 嵌入式职业方向
  • 集群(Cluster)Oracle(DBA)方向
  • 新手专栏
  • Unix/Linux新手专栏
  • Unix/Linux管理
  • 嵌入式及POSIX开发
  • Linux开源文化及市场
  • 最近网络课堂
  • P2P教学视频
  • 精彩Linux培训视频
  • 零起点数据库集群(长期)
  • 嵌入式驱动(长期)
  • Linux金牌三证(RHCE级)
  • Linux架构师(RHCA级)
  • 嵌入式/驱动加速课程
  • 其他咨询
  • Linux免费网络安全公开课
  • 免费Linux资料申请
  • 免费Linux安全&DDOS防御课程
  • 免费嵌入式Linux开发课程
  • 免费Linux网络安全机制
  • 授权加盟&报名点申请
  • 如何加盟
  • 我们的优势
  • 成功案例
  • 行业市场分析
  • 授权加盟中心
  • 学员毕业薪资(不断更新中)
  • 加入尚观猎头服务(仅限老学员)
  • 学员交流论坛
  • OCP认证
  • Intel认证
  • RHCE认证
  • RHCE+OCP
  • RHCE+LPI


    您现在的位置:尚观Linux培训 - 嵌入式Linux培训专家尚观Linux培训 » Linux开源文化及市场 » 定制嵌入式系统中 Apache 的日志回滚工具

定制嵌入式系统中 Apache 的日志回滚工具

 
咨询热线
  • 免费咨询电话:
    400-700-0056
    800-810-0056

    教学就业监督电话:
    400-810-3016
  • QQ在线咨询:
    517589021 在线咨询
    82555789 在线咨询
    962895738 在线咨询


  • MSN在线咨询:
    upadv05@hotmail.com
    upadv20@hotmail.com
免费资源
  • -3月13日
  • [沈阳]Linux嵌入式-3月20日
  • [上海]DDos攻防-3月20日
  • [上海]Linux嵌入式-3月13日
  • [深圳]DDos攻防-3月20日
  • [深圳]Linux嵌入式-3月13日
  • [北京]DDos攻防-3月13日
五万年薪就业保证课程
  • UTA-高级研发型测试架构师
  • UDA-Linux服务器开发架构师
  • UEA-嵌入式内核驱动开发者
  • UOA-Oracle数据库集群架构
  • ULA-Linux系统与集群架构师
八万年薪就业保证课程
  • UOM- Oracle集群大师
  • UEM-嵌入式开发大师
Linux培训●最新开班
  • [沈阳]UEA课程3月班热招!
  • [沈阳]ULA课程3月班热招!
  • [北京]UEA课程3月班热报!
  • [北京]UOA/ULA课程1月班!
  • [上海]UEA课程3月班热招!
  • [上海]ULA/UOA课程1月班!
  • [深圳]UEA课程3月班热招!
  • [深圳]ULA/UOA课程1月班!
 
文章内容
  • Apache 是目前世界上使用最广泛的 web 服务器。随着 Apache 的广泛使用,访问次数越多,日志就越多,如何有效的管理日志将是一个很重要的问题,因此选择一个好的日志管理程序是很有必要的。

    引言

    目前,为了方便地管理和配置嵌入式设备,很多嵌入式设备都提供了 Web 的接入访问模式。Apache服务器是目前各种的 Web 服务器中最被广泛使用的。为了有效地管理 Web 服务器,掌握和反馈服务器的活动、性能以及出现的问题,通常我们都会开启 Web 服务器的日志文件(访问日志和错误日志)以方便后续的查询和统计。虽然目前的嵌入式设备较之以往在性能和存储容量上都有很大的提高,但是相比硬盘来说,嵌入式设备中的 flash 存储容量还是很小的。即使是一个并不繁忙的服务器,当长时间的运行以后,日志文件就会变得越来越大。如果不进行处理,那么日志文件就会影响 Web 服务器运行效率、速率,还可能耗尽嵌入式设备本来就小的存储空间,导致系统变慢甚至无法正常运行,因此就有必要定期回滚日志文件。如何定制日志处理程序来管理日志就是本文讨论的重点。





    Apache 的日志模式

    Apache 服务器有两种开启日志的方式:普通模式和管道模式。

    1) 普通日志使用模式

    Apache 服务器在默认的情况下会自动打开2个日志文件:访问日志文件和错误日志文件。我们通过在配置文件 httpd.conf 中分别对 CustomLog 访问指令使用命令 “CustomLog /usr/local/apache/logs/access_log common“和对 ErrorLog 错误指令使用命令 “ErrorLog /usr/local/apache/logs/error_log common”来指示。其中错误日志文件,更为重要。Apache 服务器会将运行中的诊断信息和处理请求中出现的错误存放到该文件中,以供将来的错误诊断和解决。通过这种方式产生的默认日志文件是不分割的,并随着时间越变越大。这样一个大文件既不易于管理,也不易于后期的分析与统计。因此就有必要定期回滚日志文件。

    2) 管道模式

    最新的 Apache 服务器版本提供了一种新的日志处理方式,即服务器不是直接将日志写入一个文件中,而是通过管道将访问记录和出错信息传递给另一个通常被称为日志回滚的进程,由其根据用户的设定进行分割(回滚)。

    该模式无须对主服务器进行编程,同时又允许在不重新启动服务器的状态下可以进行日志回滚,这个功能显著地增强了日志的灵活性。

    管道模式的使用是比较简单的,只需要在配置文件的 ‘CustomLog’ 或 ‘ErrorLog’ 指令中以管道操作符 "|" 开始,并在其后给出一个回滚工具文件路径,就可以使这个程序从标准输入设备获得日志记录。Apache 提供了一种可靠的管道日志技术,在其启动时,会同时启动这个管道日志进程,并且在运行过程中,如果该回滚进程崩溃的话,会重新启动此进程。





    当前流行的日志回滚工具

    下面将介绍当前最流行的三种日志文件回滚工具,简单描述其使用方法,分析各自的优势、劣势及其适用的场景。

    1) logrotate 工具

    logrotate 工具是一个 Linux 系统自带的日志回滚程序,由系统计划服务工具 cron 程序启动,可以对各种系统日志进行回滚。对于 web 服务器的日志管理,只需要在 logrotate.conf 配置文件中添加相应的指令即可轻松实现。

    这是一种不使用其它第三方工具就可以实现日志文件回滚的方式。该工具可以通过指定回滚时间或日志文件大小来回滚日志,同时还可以指定保留的备份文件的数目。对于存储空间有限的嵌入式系统是非常不错的选择。但是 logrotate 工具存在一个严重的缺点,即通过对 web 服务器进程发送 HUP 重新启动命令来实现对当前日志文件的截断和轮循。通过这种方式实现日志的回滚会严重的影响 web 服务的连续性,因此对于实时监控的系统来说是不实用的。

    2) rotatelogs 工具

    rotatelogs 工具是 Apache 自带的一个比较简单的日志回滚程序,可以通过在 Apache 配置文件中添加如下命令来启动: errorlog “|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/apache_error_log 86400”。

    这是一种通过管道方式、可以不重启服务器就实现对日志文件的回滚,大大加强了对日志的处理能力。该工具提供了按时间或按文件大小来控制日志的方式。对于按时间回滚日志文件时,所指定的时间是指回滚的时间间隔,并且是相对于服务器启动时间的。即如果 web 服务器在中途被重启时,会产生一个新的日志文件,并且新产生的文件与上次产生的文件时间间隔不是设定的回滚时间间隔,这可能对日志文件后续分析程序产生影响。按文件大小回滚时,指定的文件大小最小是以兆为单位。这对于存储有限的嵌入式系统不是很恰当。此外 rotatelogs 工具不会删除旧的日志文件,也不能指定要保留的旧的回滚日志文件数目,因此,如果对于产生的旧日志文件不进行及时的转移或删除,就会越来越占用存储空间,这对于嵌入式系统来说也是不合适的。

    3) cronolog 工具

    cronolog 是一个简单小巧而高效的日志文件回滚工具,其启动方式与 rotatelog 一样,即ErrorLog  "|/usr/sbin/cronolog /web/logs/%Y/%m/%d/errors.log"。但是其生成的日志文件的名字是由指令中的文件名模板和当前的日期时间组成。

    cronolog 工具只能按时间的方式来回滚日志文件,但是提供了可以按年、月、日等多种形式的方式回滚日志。同时你也设定目录结构的格式,使日志文件清晰的存放。例如按 %Y/%m/%d/error_log 的方式指定,将使 error_log 存放在年/月/日/的目录下面。但是该工具同样存在不删除旧的日志文件,使存储占用量越来越大,因此对嵌入式系统也是不合适的。





    如何定制日志回滚工具

    由于以上的工具并不适合嵌入式系统,下面将详细的讲解和实现一个满足日志回滚工具的原理并实现一个满足嵌入式系统的日志工具。该工具提供了与其他的日志工具相似的接口,可以设定的日志文件的大小,同时设定旧日志的保留数目。

    系统准备:

    第一,由 Apache 管道模式的原理可知,我们需要使用管道操作符“|”来启动 Apache 服务器的管道机制。因此为了确保能正确运行,需要确保当前的系统下面是否有 shell 脚本执行器存在。通常在嵌入式系统中一般都是使用最小的 linux 系统,使用 busybox 命令工具来提供最常用的系统命令。为了与 PC 上的 linux 系统具有相似性,建议在 /bin 文件夹下创建一个 sh 的链接文件。

    第二,许多的嵌入式系统的文件系统都是使用只读文件系统,因此为了确保能成功创建日志文件,请确保你要保存日志的文件系统是可写的。

    原理与实现:

    由于 Apache 服务器会把日志信息输出到屏幕,通过管道变成标准输入。因此,日志回滚首先需要读取屏幕获取输出的日志信息,其中0表示标准输入的文件描述符。

    n_log = read(0, log_buf, sizeof(log_buf)); 

    其次,在把读到的日志信息写入文件前,需要判断当前是否已存在日志文件可供写入。如果存在,并且该日志的大小还未达到指定的文件大小,就写入该文件。否则,新建一个日志文件。

    if(log_fd >= 0) { 	if( filesize(log_fd) >= f_size) { 	fclose(log_fd); 	log_fd = -1; } } if(log_fd == -1) { 	log_fd = create_new_log(); } 

    最后,当一切都准备就绪以后,我们可以放心地将该条信息写入日志文件中。

    write(log_fd, log_buf, n_log); n_log = read(0, log_buf, sizeof(log_buf)); 



    以上介绍了一个适合于的嵌入式系统的常用日志回滚工具。由于嵌入式系统差异性很大或需求不同,用户可以根据实际应用定制有针对性的日志工具。





    结束语

    本文详细的描述了 Apache 服务器的管道日志机制的原理,并比较了当前流行的日志回滚工具。在此基础上,介绍了日志回滚工具的工作原理和流程,并定制了一个针对嵌入式系统的日志回滚工具。




    精彩Linux视频,免费先学!

    查看:尚观Linux培训学员最新就业薪资待遇统计报告!

    查看:UTA-高级研发型测试架构师大纲
    查看:UDA-Linux服务器开发架构师大纲
    查看:UEA-嵌入式内核驱动开发者大纲
    查看:UOA-Oracle数据库集群架构大纲
    查看:ULA-Linux系统与集群架构师大纲

    填表获取 Linux、嵌入式、Oracle 技术资料

  • 姓    名:
  • 固    话:
  • 手    机:
  • E-Mail :
  • 所在地:
  •         

北京(Beijing)

电子地图
电话:(010)62113016/17 68949060
地址:北京市 海淀区中关村南大街 甲10号 银海大厦南区410-418

上海(Shanghai)

电子地图
电话:(021)54510580 54070058
报名:徐汇区 华山路2088号 汇银广场南楼1307室
校区:漕河泾开发区 钦江路333号38号3楼

深圳(Shenzhen)

电子地图
电话:(0755)82995128 82995168
地址:深圳市 福田区 彩田路 中深花园B2005室

沈阳(Shenyang)

电子地图
电话:(024)31500816 31500817
地址:沈阳市和平区三好街54号物产科贸大厦2号楼201室

成都(Chengdu)

电子地图
电话:(028)66677820 66677828 66677829
地址:成都市青羊区上西顺城街252号顺吉大厦8楼A3


2005-2009高新技术企业

LPI授权培训考试中心

国家紧缺人才培养工程合作伙伴

CSDN战略伙伴

51Job战略伙伴

Oracle WDP授权培训与考试中心

Intel软件服务培训供应商

Redhat授权培训与考试中心

国家高新技术企业认证
 

友情链接:   LPI  RedHat  CSDN  ChinaUnix  ITPub  Eygle.Com  PHP中国  嵌入式世界  Linux培训  嵌入式培训  嵌入式在线  oklinux 
Linux联盟  Linux中国  Unix爱好者家园  ZOL服务器  php爱好者  看看Linux  嵌入式技术网  虚拟主机评测  大功率LED网   搜电网   深圳公交查询   杭州写字楼网  互联网百科  苏州人才网  Linux技术中心  泉州人才网  广州招聘网  天天健康  上海商铺  北京赶集网  SVN中文技术网  中国别墅网  网罗天下  工具软件下载  Oracle视频教程  北京法律咨询  天津赶集网  嵌入式资讯网  天极导航  Fedora中文爱好者 (申请友情链接请发信至:info#uplooking.com)


COPYRIGHT © 2000-2009 北京尚观科技有限公司 - Linux培训及嵌入式培训专家 ALL RIGHTS RESERVED

咨询热线:400-700-0056    800-810-0056
京ICP备05058027号 | Linux就业信息 | 免责声明 |