您的位置:奥门新浦京网址 > 奥门新浦新京官方网站 > 使用SeasLog打造PHP项目中的高性能日志组件,H3C数

使用SeasLog打造PHP项目中的高性能日志组件,H3C数

发布时间:2019-11-06 11:15编辑:奥门新浦新京官方网站浏览(113)

    使用SeasLog打造PHP项目中的高性能日志组件(1)

    什么是SeasLog

    SeasLog是一个C语言编写的PHP扩展,提供一组规范标准的功能函数,在PHP项目中方便、规范、高效地写日志,以及快速地读取和查询日志。

    为什么使用SeasLog

    无论在什么应用中,log日志都是架构中不可缺少的一个重要组成部分,它通常是系统或软件、应用的运行记录。通过log的分析,可以方便用户了解系统或软件、应用的运行情况;如果你的应用log足够丰富,也可以分析以往用户的操作行为、类型喜好、地域分布或其他更多信息;如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。

    我们知道,php内置了很多log函数,如error_log、syslog、file_put_content,这些函数功能强大且性能极好,但由于各种缺陷(error_log、file_put_content无错误级别、无固定格式像是信马由缰随处乱画;syslog不区分模块、而且与系统日志混合,读syslog记录会让人抓狂的。),灵活度降低了很多,很不能满足应用需求。基本上所有的开发者,都会自行设计封装log库,当然也会有很多开发者选择已有的开源日志库。

    也有很多开源log类库弥补了上述缺陷,如log4php、plog、Analog等(当然也有很多应用在项目中自己开发的log类)。其中以log4php最为著名,它的设计精良、格式完美、文档完善、功能强大。但是经过测试,log4php的性能非常差。

    图片 1

    这是log4php与SeasLog的性能对比图:

    设计思路

    那么有没有一种log类库同时满足以下需求呢:

    ●分模块、分级别

    ●配置简单(最好是勿须配置)

    ●日志格式清晰易读

    ●应用简单、性能很棒

    我们知道,PSR-3标准是一个国际化的日志标准,它要求了“模块、级别、清晰、易用”等日志工作应具备的特点。因此,只要我们遵循了PSR-3标准,则我们可以完成“分模块、分级别”以及“日志格式清晰易读”的要求。

    “配置简单”这个需求也很好完成。如果严格按照既定规则,其实只需要设置默认目录就可以了。

    OK,现在我们只剩下“性能”这一个要求。

    既然是日志,免不了会写文件,或者通过pipe通过网络传送到某个存储中心(我们暂不考虑存储中心的设计)。可以想见,假设一个请求中需要写出1000处log,那么势必会有1000次IO,这对性能将是一个很大的拖延点。一般对于处理这种多次相同的请求场景,我们要解决的其实也很简单,使用cache或buffer,把多次请求作归并,从而降低对磁盘或网络的IO,这是一个基本的思想。

    SeasLog也是这么做的。设定一个buffer_size(默认100条log),使用PHP请求内存,每写一次log,塞入内存,同时buffer_size加;当buffer_size等于设置值时,则进行一次IO,同时清除buffer; 当然,如果请求结束了、或执行了die、exit或其他异常退出时,不管buffer_size有没有攒够设置值,立刻进行一次IO,同时清除buffer。

    到目前为止,SeasLog的正式版本为1.1.6,采用Apache 2.0开源协议,同时可以在php.net官方,和Github库上获得它的完整代码。

    Php.net

    Github

    目前提供了什么

    ●在PHP项目中便捷、规范地记录log

    ●可配置的默认log目录与模块

    ●指定log目录与获取当前配置

    ●初步的分析预警框架

    ●高效的日志缓冲、便捷的缓冲debug

    ●遵循 PSR-3 日志接口规范

    怎么安装

    获得源码后,可自行编译。

    $ /path/to/phpize

    $ ./configure --with-php-config=/path/to/php-config 

    $ make && make install

    当然,使用PECL管理工具会更方便: 

    $ pecl install seaslog

    seaslog.ini的配置

    ; configuration for php SeasLog module extension = seaslog.so seaslog.default_basepath = /log/seaslog-test    ;默认log根目录 seaslog.default_logger = default                ;默认logger目录 seaslog.disting_type = 1                            ;是否以type分文件 1是 0否(默认) seaslog.disting_by_hour = 1                      ;是否每小时划分一个文件 1是 0否(默认) seaslog.use_buffer = 1                              ;是否启用buffer 1是 0否(默认) seaslog.buffer_size = 100                         ;buffer中缓冲数量 默认0(不使用buffer_size) seaslog.level = 0                                       ;记录日志级别 默认0(所有日志) 
    

    seaslog.disting_type = 1 开启以type分文件,即log文件区分infowarnerro

    seaslog.disting_by_hour = 1 开启每小时划分一个文件

    seaslog.use_buffer = 1 开启buffer。默认关闭。当开启此项时,日志预存于内存,当请求结束时(或异常退出时)一次写入文件。

    seaslog.buffer_size = 100 设置缓冲数量为100. 默认为0,即无缓冲数量限制.当buffer_size大于0时,缓冲量达到该值则写一次文件. 

    seaslog.level = 3 记录的日志级别.默认为0,即所有日志均记录。当level为1时,关注debug以上级别(包括debug),以此类推。level大于8时,所有日志均不记录。


    图片 2


    ) 什么是SeasLog SeasLog是一个C语言编写的PHP扩展,提供一组规范标准的功能函数,在PHP项目中方便...

    近日,H3C正式发布了全新版本的iMC数据中心管理解决方案。相比2010年发布的1.0版方案,全新的iMC数据中心管理解决方案简称:iMC DCM 2.0)版在自动化和虚拟化管理方面,有着更为卓越的表现。作为面向“云时代”的数据中心管理的产品,iMC DCM 2.0版通过在融合、智能、开放、安全等方面的系列解决方案,为资源池化的云计算环境提供了更高智能的管理保障,帮助用户更好地管理云时代的数据中心。

    我看ITIL在中国之特色的IT运维管理平台的建设

    在开始筹划建设有“中国特色的IT运维管理平台”之前,先来看看我们目前面临的情况:

    随着信息化建设的不断深入,各种企业的核心业务都逐步地迁移到IT平台上来,对IT管理的要求也越来越高,IT需要管理,向IT管理要效率,保证IT的有序化发展成为企业的一种共识,在这个过程中,ITIL作为最近几年IT界风头最劲的流行语,已经越来越广泛地被人们所认识和接受,并被很多企业选择作为IT管理优化和改造的首选工具,ITIL成为IT管理的一种标准,但在中国企业采用ITIL的方法来管理IT的时候,却出现了很多的问题,许多企业在落实ITIL流程化管理的过程中发现,管理的效率没有提高,宝贵的IT人力资源浪费惊人,许多管理岗位被淹没在大量的事件中,疲于应付,流程失去实质内容陷入空洞……

    图片 3

    所有这些都让企业感到失望和困惑,尽管ITIL拥有国外各大企业成功实践的“纯正血统”,但正如“南橘北枳”的道理一样,对他人成功的简单移植却并不一定能够确保自己的成功。根据我以往对国外各大企业的调查表明,国内企业上马ITIL的不少,但真正能够有效利用并体现其价值的却寥寥无几。为什么国外先进的管理方法在中国会遇到“水土不服”?结合之前几篇文章的分析,我认为还是要从更深的层面去看待这个问题。

    之前的文章中也说到过,国外企业的管理方法形成与其所处的环境有关,所以像ITIL这样的理论落地,是在其基本功已经很扎实或者已经不会受到来自于这些层面的困扰基础上才达成的。而对于我们大多数企业来说,很多都需要自己负责整个IT基础设施及应用的管理工作,依然遵循国外的方法来建设自己的IT运维管理平台,显然会事倍功半。

    在这里举些例子吧:

    例子一:某次的网络故障可能会造成多个应用系统的故障,产生多个事件,由于基础设施管理的不完整、不全面,无法及时归并这些事件,就有可能产生多个工单,需要多人去处理,其实,它只是一个事件,这时,事件管理流程执行的越高效对企业造成的混乱和损失也越大。

    例子二:对业务系统了解不全面,尤其是目前“云计算”的不断深化,很多的业务系统都开始运行在虚拟主机上,如果不能对这些业务进行有效的管理,不能构筑虚拟主机与实际物理主机的关系,在执行变更流程的时候,就会陷入盲目状态,造成变更失败和对其他业务的不可预测的影响。

    如何解决好这些问题,如何构筑符合中国企业需要的IT运维管理平台?我认为在规划IT运维管理平台时,可以站在一个比较高的层次进行统筹规划,依据“自上而下”的设计过程,但是在建设过程中应该遵循“自下而上,先易后难”的原则,逐步搭建符合本企业实际需要的IT管理平台。

    规划IT运维管理平台:自上而下,建设过程:自下而上,先易后难

    由于我国的很多企业IT管理还处于建设初期,首先需要将所有的IT基础设施纳入到一个平台上,进行统一的管理,建立IT基础设施的统一管理,这是IT管理的基石,如果不能对已有的IT基础设施实施有效的透明化管理,是很难去实施其他管理的。之所以要建立统一的管理平台,一方面是今后进一步进行业务管理的需要,也是实施流程化管理的必然要求。

    我国企业在落实基础设施透明化管理中,碰到的第一个现实问题就是综合管理平台的选择,用户需要采用怎样的管理系统,才能将IT基础设施的管理数据采集完整,展现在企业用户的面前?这是用户必须要考虑的问题,目前国外的大型软件都采用标准化(SNMP、RMON等等)的管理手段来管理基础设施,在国内,由于信息化经过了多年建设,采用了很多厂商的各种设备,非标的情况非常严重,即使是标准的设备,由于收集的MIB数据所表示的意义也各有不同,用户需要读懂这些数据,殊为不易。国内的一些厂商,正是看到了这样的情况,多年来坚持不懈的通过在实践中摸索和积累,屏蔽这些设备的差异性,为用户提供标准的基础设施数据,为了保护已有的IT投资,也为了更好更合理的管理这些基础设施,企业用户应该根据自己的实际情况,选择在基础设施管理上有多年实践经验的厂商的产品来搭建自己的综合管理平台,平台的管理对象应该涵盖从网络设备、主机、中间件到各种典型应用、机房环境等,只有这样才能够实现数据的紧耦合,为关联性分析和管理打下良好的基础。

    以上对如何选择符合自身实际需求的IT综合管理平台,提出了些建议。那么做好基础设施的透明化管理决不是我们的终点,而是我们真正可以落实BSM、落实ITIL的起点而已。在下一篇文章里,我将最后把这个系列里的一些想法和我的经验给大家做个小结,希望真的可以帮到大家。


    图片 4


    在开始筹划建设有中国特色的IT运维管理平台之前,先来看看我们目前面临的情况: 随着信息...

    H3C iMC数据中心管理解决方案是H3C基于iMC智能管理中心),融合SNMP、RADIUS、NetStream、ITIL等各种管理技术,面对云计算大背景下对IT管理的需求模式,推出的基于用户、开放式、自动化、智能化的数据中心管理方案。凭着帮助用户进行数据中心基础设施管理、IP资源管理、业务管理、运维管理等层面的优异表现,H3C iMC数据中心管理2.0解决方案一经推出就得到了用户的高度赞许。

    本文由奥门新浦京网址发布于奥门新浦新京官方网站,转载请注明出处:使用SeasLog打造PHP项目中的高性能日志组件,H3C数

    关键词: