日志管理与分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

序言

每位IT工程师,无论是从事开发、运维还是安全工作,都不可避免地要与IT日志打交道。IT日志,无论是系统日志、网络日志、还是应用日志,都是IT系统最重要的数据之一。

我20多年前进入IT行业,在思科从事网络设备的软件开发,为了知道开发的软件是否正常运行,以及出错时及时定位问题,需要查看网络设备的日志。最早我是用编辑器如 vi手工查看日志的,靠肉眼搜寻日志里的信息或异常。为了提升效率,我也用 grep 等命令,或者写shell脚本程序,以及使用awk、sed等高级工具,对日志进行半自动化处理。

后来,我加入谷歌从事网页搜索工作。十多年前谷歌每天都要爬取100多亿个网页,在爬取各个网页时,可能遇到各种各样的错误,网页爬虫软件每天产生的日志就达数百 TB。那么大的日志文件,已经无法用vi这样的编辑器打开查看,使用shell脚本程序或awk、sed等工具来查看日志,效率也非常低。当时谷歌内部已经普遍开始使用 MapReduce 编程架构(类似Hadoop的软件),我们就写MapReduce程序来分析日志,每天生成分析报表。每当遇到需要新的分析项时,又得添加MapReduce程序,还得运行MapReduce程序几十分钟甚至几个小时,才能生成分析结果。这是程序化处理海量日志的开始。

再后来我加入腾讯和高德地图,都需要处理数据中心或后台系统产生的大量日志,面对每天产生的海量日志,shell命令或脚本程序,以及awk、sed等工具,已经满足不了需求。我尝试过自己开发软件处理日志,以及使用Hadoop处理日志。当时,业界也有使用数据库存储、分析日志的解决方案,但日志是非结构化数据,数据库这种处理结构化数据的系统完全不适合处理日志。

大约10年前,IT进入大数据时代。运用大数据技术分析海量日志,属于IT运维分析(IT Operation Analytics,ITOA)这个新领域。在ITOA产生之前,IT运维主要还是IT运维管理(IT Operation Management,ITOM)。ITOA是ITOM的升级,是用大数据技术分析IT运维产生的海量数据的方法。数据源除了日志,还可能是网络流量,以及应用性能管理(Application Performance Management,APM)的探针数据。

Hadoop 是广泛使用的大数据分析框架,后来又出现了更实时的 Spark、Flink 等框架。使用Hadoop/Spark/Flink等框架分析日志需要研发投入,每次有新的分析需求或新的日志,都需要投入研发资源。也有使用各种NoSQL来存储、分析日志的,如Clickhouse,MongoDB等,但这些基于Key-Value的NoSQL系统,适合预先抽取了日志里需要分析的字段,或者程序已经做了改造,使用JSON等格式,输出的日志已经基本结构化。

对于大多数难以改造的应用系统,输出的日志是自由文本格式,实时搜索引擎是最好的解决方案。使用搜索引擎分析日志,可以搜索日志里的任何字段,如同网页搜索引擎可以搜索任何网页一样方便。对于需要分析的日志字段,可以在日志进入搜索引擎前抽取字段(Schema on Write)或在搜索分析日志时才抽取字段(Schema on Read,Schema on Fly,Schemaless)。与网页搜索引擎相比,日志搜索分析引擎更注重实时性,要求日志从产生到搜索分析出结果,只有几十秒的延时,而对于网页搜索的核心功能搜索相关性、搜索排序等,则基本用不上。

2003年Splunk在美国硅谷横空出世,这是第一个使用实时搜索引擎分析日志的产品。2010年Elasticsearch诞生,虽然Elasticsearch是个通用搜索引擎,但因为其开源免费,也被业界广泛应用于日志搜索分析。2014年日志易在中国诞生,中国用户有了更多的选择。

日志分析主要用于业务运维的可用性分析及应用性能分析,也可用于安全分析,以及实时业务分析。随着信息安全的发展,基于大数据的安全分析已经成为行业趋势。各种安全攻击层出不穷,需要基于全量日志和网络流量,对IT系统进行全面监测、分析,及时发现安全攻击。由此,诞生了基于日志的安全信息事件管理(Security Information Event Management,SIEM)及用户端点行为分析(User&Entity Behavior Analytics,UEBA)解决方案,SIEM与UEBA已经成为安全运营中心(Security Operation Center,SOC)不可或缺的核心组件。

基于日志做实时业务分析,相较于基于数据库的商业智能(Business Intelligence,BI),更加实时,而且不会对主要用于支撑交易的数据库造成压力,影响业务交易,这也是现在普遍应用的在线分析处理(On-Line Analytics Processing,OLAP)技术。

物联网(Internet of Things,IoT)的兴起,产生了海量物联网数据需要分析,这些物联网数据与日志类似,都是带时间戳的时间序列机器数据,同样可以用日志搜索分析引擎进行分析。

近年来,日志分析又有了进一步发展。人工智能的普及,也应用到日志分析上,诞生了智能运维(AI for IT Operations,AIOps)技术,把机器学习、人工智能算法应用到分析日志等IT运维产生的数据上。同时,结合IT系统指标数据(Metrics),系统调用链数据(Tracing),及日志(Log),共同分析,实现IT系统可观察性(Observability)。

现在,苹果手机、微信等广泛使用的系统每天在后台产生的新增日志量已经达到PB级。IT日志数据这座金矿亟待开发,日志分析大有可为。

越来越多的公司在采集、管理、分析日志,为了帮助 IT 运维、安全及研发人员及管理人员更好地理解日志、实现日志的价值,日志易团队结合过去多年在日志管理分析领域积累的经验,凝聚集体智慧,耗时近两年,写成了《日志管理与分析》一书。这本书涵盖了日志管理、分析的各个方面,全面介绍了日志分析在运维和安全方面应用,以及智能运维。

IT运维工程师通过本书,可以了解日志系统的选型,如何分析日志,实现系统可用性监控及应用性能监控、故障发现与根因分析,以及智能运维。安全工程师通过本书,可以了解如何基于大数据进行安全分析,以及SIEM和UEBA。研发工程师通过本书,可以了解开发日志管理分析系统的关键点。IT架构师和管理人员通过本书,可以了解日志分析系统在企业IT管理中的作用及如何建设高效的日志管理分析系统。

本书由多位作者合作完成,具体分工如下:

 第1章:张梦梦

 第2、7章:王洪福

 第3、4章:刘康

 第5章:陈熠祺

 第6、8章:刘诗韵

 第9章:王刚、张梦梦

 第10章:江付、赵中山

 第11章:胡明昊、张梓聪、孟猛

 第12章:任海峰

全书各章由郝香山、万梦晨完成统稿校对。

在本书写作过程中,得到清华大学孙雪老师、电子工业出版社朱雨萌老师及审稿专家的专业指导,得到饶琛琳、梁玫娟、丘木子、尹云飞、黄俊毅、黎吾平、詹凯、马阳光等日志易同事的支持与帮助,在此一并致谢。

经验所限,书中内容难免有错误不当之处,欢迎读者朋友批评指正。

陈军

日志易CEO

2021年春节于北京