数据中心如何面对日志海洋
数据中心里有成千上万台设备,每台设备在运行过程中都会产生这样那样的日志信息,有些是无关紧要的,而有些则是发生故障的预警,及时发现异常日志,可减少故障发生,保证业务平稳运行。一方面数据中心要求设备商将设备运行的故障信息一定要通过日志打印出来,以便数据中心运维的人员通过日志就可以知道设备发生了故障,提前做准备;另一方面数据中心都要对日志进行甄别,哪些需要关注,哪些不用关心,哪些需要立即进行处理。然而,由于数据中心里设备数量非常多,如果每台设备输出一条日志信息,一万台设备就是一万条,靠人工去查看,是根本不可能的事儿。那么数据中心该如何高效处理这些海量日志信息呢。
数据中心的日志主要来自三个方面:一是设备层,对数据中心内的各种设备进行监控,如:交换机、路由器、安全设备、服务器、UPS、精密空调等,实现物理层实时监控和数据采集;二是系统层,对数据中心主机(Linux主机和x86服务器)、操作系统 (Linux/Winwdos)、数据库(Oracle、Mysql等主流)、中间件、存储系统、应用软件API、HTTP端口、备份系统、容灾系统、数据同步系统、虚拟化系统,云平台等进行实时监控、预警分析和故障定位;三是业务层,采集一定的业务数据,如用户数、连接数、业务并发量、日志量等等,通过多维关联和分析,对未来的业务运行进行分析和预测。这些日志有些是设备运行中主动输出的,有些则是运维的人员通过特定命令到设备上采集到的,通过对这些日志进行分析,从而对设备、系统以及业务的运行情况进行评估,一旦发现异常,立即采取处理。
显然,海量的日志如不经过处理,直接输出到监控平台,那将是非常多的。首先,做标准化处理。数据中心要有各种日志的采集系统,将所有日志汇集起来,这些日志来自不同设备、不同系统、不同业务,格式和含义都不一样,数据中心要做标准化处理,转换成统一识别的格式,这个格式完全由数据中心定义,由技术人员进行转义,形成标准化的日志语言;第二,做日志过滤。日志经过标准化处理,整齐划一,格式统一,但数量仍没有减少,所以需要做过滤。过滤的原则是将级别低的、操作类的、提示类的日志过滤掉,将级别高的、异常类的日志留下来。具体到各种设备的日志,要由设备商提供全系列的日志信息,并标注优先级和表达的含义,由数据中心将这些信息输入到知识库中,作为过滤判断的条件,知识库是一个逐渐积累的过程,不仅是日志的过滤,还包括各种故障的处理方法、经典案例、解决方案等等,经过知识库的过滤,将大部分的无用日志排除掉;第三,做压缩归并,将过滤后的日志同类的要归一化,尤其是在知识库中已经存在过的,这类日志如何处理,在知识库中可以找到答案,这时可以直接按照知识库的指导来做。如果没有遇到过的日志,则要交给下一级继续处理,通过压缩归并也可以将日志的数量再次减少;第四,做关联分析,很多日志的来由都是有根源的,比如在一台运行中的网络设备上突然有一条OSPF链路震荡了,那么可以检查一下在同一时间,是否也有其它OSPF邻居也震荡了,如经过日志检查,在另外多台设备上也有OSPF震荡,并且都集中连接到一台设备,而这台设备再查日志原来有人正在做reset ospf主动运维的操作,当通过这系列的关联分析,就可以找到原因,及时将这种人为操作的原因告诉监控中心,并不会作为一种异常的故障告警出现;第五,做定位分析。将预期内产生的日志消除后,来到第五步,这时的日志往往需要深入分析,如果在现有的知识库里找不到解决方案,并且日志本身的告警级别还很高,这时就要输出告警了,经过这五步处理,能够输出告警的日志已经很少了。
日志经过以上五个步骤处理,能够精简多少,这取决于现有的知识库,知识库内容越丰富,信息越准确,精简下来的日志就越少。试想哪个数据中心会天天发生故障,一个月发生一次都了不得,否则早就关门大吉了,所以数据中心里每天产生的日志很多很多,而绝大部分的日志都影响不大,甚至无影响。当然,这种日志过滤也不排除将一些关键日志过滤掉了,导致出了问题,却没有告警,这是一个逐步完善的过程。现在AI技术这么火,也火到了数据中心运维领域,其实就是利用AI技术,对数据中心的知识库进行学习,以便可以对新增的日志进行准确判断,这个过程靠人工完成效率太低了,而利用机器学习,则可以瞬间完成,这也是智能运维研究的一个重要方向,通过AI处理数据中心的海量日志。
数据中心如何面对日志海洋?归纳起来就三个字:“简、智、深”,精简日志数量,过滤无用或无害日志;利用现有知识库学习,智能分析日志产生的影响和后果;深度学习日志,输出学习结果,根据日志做出判断和自决,数据中心系统自动执行解决方案:切流量或者隔离故障设备,也可能是调整配置等等,自动进行处理,这种情况只要将处理结果反馈到监控平台即可,甚至都可以不用给出日志告警,作为普通事件处理。只有AI不知如何处理时,再将告警日志交给监控平台,由人工干预,处理完毕后再将本次的日志处理交给AI学习,同类日志再次出现时,系统就可以自行处理,不再需要人工干预,构建这样一个学习日志系统,就是智能运维的开始。