人工智能时代前沿技术社区

首页 > 人工智能 > 热点

如何快速搭建智能化的统一日志管理系统

日志是设备、服务器或者程序对于自身状态和运作行为的记录,通过它可以了解设备、服务器和程序的运行情况。为了让大家进一步了解智能化的统

作者:时风 | 2018-07-25 16:08:37


日志是设备、服务器或者程序对于自身状态和运作行为的记录,通过它可以了解设备、服务器和程序的运行情况。为了让大家进一步了解智能化的统一日志管理系统,飞马网于724日晚,邀请到就职于七牛云数据科学与产品部的高级大数据架构师王珂老师为大家分享该领域的内容。

 

以下是这次线上直播的分享实录:

 

1.jpg


大家好,我是七牛云的王珂,今天我给大家分享的主题是“如何快速搭建智能化的统一日志管理”。

在上图中,我列举了一些例子,方便大家理解什么是日志。第一条是某网站的行为日志,在这条日志中大家可以清楚的看到这个用户访问的地点做了哪些操作、访问了哪些页面,最后还能标注用户的浏览器是哪个版本。第二条是典型的某网站nginx服务日志,第三条是比较标准的应用日志,第四条是Google analysis的上报日志,第五条是MongoDB日志,可以看到端口信息。第六条和第七条是mac操作系统日志和某机器的CPU监控日志。

一、什么是日志

3 拷贝.jpg

经过上面的日志样例,我们要对日志进行三个问答。第一个是什么是日志?基于维基百科的回答,日志是设备、服务器或者程序对于自身状态和运作行为的记录。第二条为什么需要日志?因为要通过日志了解设备、服务器和程序的运行情况,大概就是当前状态是否健康,是否出现过异常、出现了什么异常、完成了什么操作、处理了多少数据。最后一个是什么时间需要日志?一般情况下,系统出现问题时需要日志,为了了解系统运行情况、统计运行指标也需要日志。

二、日志采集方案选型和分析

业内最常见的日志管理方案是使用ELK进行日志管理。ELK具有三个特点:快速、易上手、可扩展,这里面的三个组件其中ES主要是指Elastisearch.Elastisearch是开源的实时分布式搜索分析引擎,被用作对日志数据进行全文检索以及指标的统计,第二个是Logstash,主要是用来把数据传输到Elastisearch之中,最后是Kibana,它是开源的展示工具,可以直接链接Elastisearch,并把其中的数据做图形可视化的展示。

ELK是使用最多的方案,但还是具有一些问题,主要是四个方面。第一个传输过程缺少监控,不能实时了解传输情况,第二是数据写入Elastisearch不平滑,Logstash没有缓存,数据量大的情况下Elastisearch的写入压力很大,第三个点是当数据达到一定程度时要求定期的管理,否则最新最热的数据写入靠近的机器上从而产生性能的热点,最后一个是本身不支持用户管理,权限设置。针对ELK的问题,主要有两种方法去升级它,第一个就是更换组件,第二个就是基于ES做一些开发。(图)

 


先看一下替换组件。对于日志采集方案,现在主流的比较多,比较好用的有Rsyslog、Fluentd、Flume等,主流工具采集完之后我们会考虑接入一些通用的缓存工具,如kafka和Redis,针对这两个问题,主要是考虑时效性、数量级和复杂度三个点。(图)

三、七牛云日志的分享以及案例分析

现在看一下七牛云平台的整体架构,主要存储的三个方面的日志,云存储日志、容器平台日志以及七牛客户日志。这个平台的技术架构是这样的,首先有一个统一入口——pipeline,在数据进入pipeline以后,可以自定义一个窗口,然后基于kafka实现离线计算的功能,传输到客户想要传输的地方。这种传输工具主要有三个:七牛云存储,基于ES形成的组件以及TSB组件。

 


七牛日志平台的客户比较多,所以面临的挑战也比较大。平台日均数据的流入大概有250个TB,最大客户日均数据流入大概超45TB,条数大概日均3650亿,在这么大的业务数量集面前最大的挑战就是如何把如此高的数量级数据接入到ES集群当中,同时不要占用太多的计算和存储资源。

七牛云大量的数据带来的一个核心问题就是存储问题,我们需要最有效的方式把数据从pipeline写入ES集群当中,吞吐量问题的本质就是数据传输效率。

这里有两种数据传输模式,首先是一个pull模式,然后是一个push模式。

数据传输的常见错误观点认为导出的上游数据产量是稳定不变的,导出的下游服务永远是稳定的,导出的速度仅受限于上下游中的一方影响,这没有考虑链路损耗严重的问题,这个最明显的就是kafka。

接下来看一个完整的transaction。

通过以上两张图片的展示,七牛实现了一种大量数据的稳定写入。

 

现在谈一下规划容器日志方案的要点,主要是两点。第一个是采集方式上面,分为容器内外两个方面;第二个是业务需求点方面。(2图)。

 

接下来简单介绍一下日志管理平台,由四个组件组成,能支持的功能很多,像logkit、pipeline、insight等。

基本上我们的平台能支持的组件也很多,logkit可以实现可视化的数据采集;在日志分析和日志搜索方面,使用兼容Lucene标准的搜索语法快速检索,在日志报表方面,我们提供黑白两种形式的展现,同时这种展现都支持大屏展示,而且不需要插件就能实现需求。

基于自己的insight平台,做了一个机器学习的组件,使用起来比较简单,如果定义到监控中,能自动找到异常值,最后也能基于历史数据做一些未来的预测。


以上就是本次线上直播的主要内容,相信你对日志管理系统有了一定的认识。想了解更多更详细内容的小伙伴们,可以关注服务号:FMI飞马网,点击菜单栏飞马直播,即可进行学习。


微信图片_20180530151141.jpg