先看一下Apache日志,这是一条Apache日志,它是文本信息,如果不是专业的运维工程师经常看日志的话,大家看到这个会像看天书,不知道是什么含义,使用日志易这个软件把日志做结构化,把它从非结构化数据转成结构化数据得出来的信息。一条日志包含的信息非常多,从这里面统计分析的话会得出多有价值的信息。日志可以用到哪些场景?一个是运维监控,IDC需要进行运维监控,保证系统的可用性,如果出现故障了,能够及时追溯故障根源,及时知道问题。应用性能监控,主要是知道性能的情况,你的网站是不是慢,为什么慢,慢在哪里,这方面属于应用性能监控。数据中心里还有一条很重要的就是安全,要保证数据中心的安全,防止黑客的入侵。这可以用在安全审计方面,主要是安全信息事件管理、合规审计、发现高级持续威胁APT,APT现在也是比较热门的话题。做APT的发现得通过日志、流量,全方位360无死角地进行监控。
日志用在业务和用户数据分析上。过去的做法是日志没有集中管理,散落在各台服务器上,事后出了问题就登录到各台服务器上用脚本命令,用VI去查看日志,有一些水平高的运维工程师用AWK写一些脚本分析程序去分析日志,这样的做法也有问题,因为登录到各台服务器,这些服务器都是生产服务器,一不小心的误操作可能就会导致事故。日志被删除,一个是磁盘满了,日志就被覆盖了,另外运维工程师把日志当做垃圾,看到磁盘快没了首先做的事情就是删除日志,删除日志之后如果事后发现有些措施或者故障需要分析需要追溯又找不到日志了。黑客入侵之后,聪明的黑客第一件事就是删除日志,因为日志记录了他入侵的痕迹,他删除日志就可以把他入侵的痕迹磨除掉。
系统出现故障的时候日志会包含信息,我们希望实时地发现这些信息,当日志出现错误信息的时候能够马上报警,而不是仅仅用在事后的追查上。后来有些公司开始重视日志,他们用数据库存储日志,现在是一个比较普遍的做法,但是用数据库存储日志有什么问题呢?
数据库是用来存结构化数据的,日志是非结构化的数据,数据库有固定的Schema,规定好数据库的表格是当有新的日志表格过来的时候表格又要改。
我看到有一些做法,为了让表的格式最大限度的灵活化,数据库就定义了三列,第一列是产生日志的机器IT地址,第二是时间戳,第三是日志本身的信息,把整个日志的文本当做一个字段放到数据库里,没办法针对日志里的信息进行抽取进行分析。数据库没办法适用TB级的海量日志,现在产生的日志越来越多,每台服务器一天产生几GB甚至几十GB的数据,一个数据中心上千台服务器一天可能产生几TB的数据,数据库没办法处理来。
一讲大数据都离不开Hadoop,Hadoop出来之后大家开始用Hadoop处理日志,首先Hadoop是批处理的框架,不够及时。用Hadoop处理分析都是今天看昨天的数据,或者是看几个小时之前的,最快也只能看到几十分钟之前的,想看几秒钟之前的Hadoop是做不到的。所以Hadoop基本是用来做数据的离线挖掘,没办法做在线数据分析。后来又开始出现Storm、Spark,但这些都是使用框架,我们希望有个东西拿来就可以用。后来出现NoSQL,但没办法全文检索,我们希望对日志进行实时的搜索分析,需要有一个搜索分析引擎,要有几个特点,一是快,日志从产生到分析出结果只有几秒的延时,二是大,每天处理TB级的日志量。三是灵活,Googlefor IT,可搜索、分析任何日志。FastBig Data,除了大之外还要快。
日志管理系统的进化,日志1.0数据库,日志2.0是用Hadoop或NoSQL处理,现在到了日志3.0,实时搜索引擎,FastBig Data。可编程的日志实时搜索分析平台,跟谷歌、百度的搜索引擎非常相似,有搜索框,但这个搜索框又比谷歌、百度更复杂,它定义了很多搜索处理语言。比如有管道符,还有各种命令,可以在搜索框里进行非常复杂的分析。它可以接入各种来源的数据,包括日志文件、数据库、恒生电子交易系统。有企业部署版和SaaS版,SaaS版处理每天500MB日志是免费的。
可以搜索、告警、统计,配置解析规则,识别任何日志,安全攻击自动识别,开放API,对接第三方系统。高性能、可扩展分布式。我们看一下案例,中国平安,使用日志易之前,逐台登陆服务器,无法集中查看日志,无法对海量数据进行挖掘、用户行为分析,日志查询方法比较原始,只能less、grep和awk等常见的Linux指令,无法多维度查询。无法进行日志的业务逻辑分析和告警。使用日志易之后,接入60多个应用的日志。