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