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

3.1 日志管理与分析系统的基本功能

3.1.1 日志采集

日志采集一般有两种模式:日志推送和日志拉取。

在生产环境中,一般采用日志推送模式,即在日志产生端部署一个Agent(日志采集代理程序),由Agent发送数据。这种做法的好处是能够最大限度地控制采集过程。例如,当网络带宽比较小时,为了防止日志传输占用生产环境的大量带宽,可以对日志采集进行限速处理;如果需要节省流量,还可以通过Agent进行压缩发送,一次性发送更多的数据等。

日志拉取模式在生产环境中很少采用。前文提到的发送过程中各种额外的限制操作很难在拉取模式下实现。此外,以下两类棘手问题在拉取模式下也很难找到有效的解决方案。

(1)深层次目录下的大量小文件。

(2)日志轮转问题。

3.1.2 数据清洗

日志数据本质上是字符串,字符串通常需要经过预处理才能从中分析出有用结果。数据清洗就是将字符串按照一定的规则处理成结构化数据的过程,这样能使后面的数据分析更加容易。

数据清洗不只是数据修剪,有时也需要增加额外的数据来进行标识。例如,可以在数据清洗过程中增加所在的主机环境、主机负责人、业务系统等数据,为后续的精细化分析做准备。

3.1.3 日志存储

对日志数据进行清洗之后,下一步就是日志存储,即将日志按照一定的规则进行存储,以便在搜索时能够非常迅速地给出结果。日志存储需要选择存储引擎。常见的开源技术方案有HBase和Elasticsearch。

HBase 是基于 RowKey 的列簇存储引擎,自身不支持二级索引,查询和聚合均基于RowKey,所以在无法使用RowKey的情况下会变为全表扫描,导致效率降低。HBase组件较多,存储大量数据时可以考虑使用HBase,但其响应速度非常慢。

Elasticsearch是基于Apache Lucene的分布式文档存储、文本查询引擎,其采用了倒排索引、FST(Finite State Transducers)等设计思想,维护起来也比较方便。目前市场上最常见的日志分析开源方案ELK中的“E”就是指Elasticsearch。它可以通过分片的方式进行线性横向扩展,也支持大量数据存储。

3.1.4 日志告警

日志告警是日志管理与分析系统的重要功能之一,可以帮助运维人员监控数据。日志告警是指按预设计划周期性执行搜索语句,当监控数据结果满足触发条件时,就通过指定的告警方式及时通知运维人员。通用的告警方式是电子邮件,也有Syslog和HTTP转发、微信、短信等其他方式,可根据需要灵活选择。监控所需信息一般包括常规信息、告警类型、告警阈值和告警方式。

3.1.5 日志分析

经过数据清洗、日志存储流程,可以将非结构化数据存储为结构化数据。接下来,需要将这些结构化数据取出来进行分析。

例如,通过日志分析可以获取网站每类页面的 PV(PageView,页面访问量)值、独立IP数(去重之后的IP数量);稍微复杂一些的,可以计算得出用户所检索的关键词排行榜、用户停留时间最长的页面等;更复杂的分析还有构建广告点击模型、分析用户行为特征等。此外,还可以分析某个故障是应用程序问题还是主机或网络问题导致的。

3.1.6 日志可视化

在数据分析要求不高的情况下,输出一个类似Excel文件的数据表格即可。但是,随着技术进步及数据分析要求日益增加,BI报表应运而生。BI(Business Intelligence)即商业智能,它是一个完整的解决方案,可以有效地集成企业现有数据,快速准确地生成报表,为企业决策提供依据。

日志可视化的目标类似于 BI 报表,即根据存储的数据(不仅仅是日志数据)进行关联绘图,实现实时多维分析、分析化建模等。这样做的好处是如果有问题,运维人员可以及时发现;如果没有问题,则无须持续关注。

3.1.7 日志智能分析

日志智能分析是指将机器学习和人工智能算法应用到日志分析中,常见的有 KPI(Key Performance Indicator)异常检测、大数据智能分析、收敛和抑制告警、大数据智能预测故障、基于数据挖掘的故障诊断、应用性能预测及优化、智能安全态势感知、运维知识库智能检索回复,以及计算、存储、网络容量的预测等。KPI 异常检测中的KPI 指的是关键性能指标,一般包括服务KPI和机器KPI,服务KPI如网页响应时间、网页访问量、连接错误数量等,机器KPI如CPU利用率、内存利用率等。KPI存储形式为按时间排列的数列,也就是时间序列。

3.1.8 用户与权限管理

在一个日志管理与分析系统中,不同类型的数据往往由不同部门的不同人员进行管理,非本部门的人是无权查看数据的,甚至某些脱敏的数据连本部门初级人员也无权查看,这就需要鉴权这一必不可少的功能来支持。

用户ID常用邮箱或电话号码进行唯一匹配。权限一般分为数据权限和功能权限。数据权限是指对某类数据的操作权限,数据类型可以是日志数据,也可以是脱敏及检索等相关操作得到的结果。功能权限是指系统某项功能的使用权限,如能否创建告警等。为了便于管理,通常将多个权限的集合建立为角色,将人员分成不同用户组,并将角色和用户组进行关联。

3.1.9 系统管理

系统管理是日志管理与分析系统的重要功能之一。

思考下面这些场景:

(1)因为数据量很大,所以需要很多节点来运行系统。

(2)需要对系统所使用的资源进行监控。

(3)因为节点多,所以需要统一启停服务的功能。

(4)系统中程序太多,需要根据不同的程序、节点进行配置管理。

(5)系统出现Bug,需要进行修复。

(6)系统需要增加一个新功能。

遇到以上场景时,如果一台一台地登录主机来启停服务、修改配置、上传补丁包、更新系统,节点少时还可以,节点多了之后就会产生很大的工作量,而且这种工作完全依赖个人经验,稍有不慎就会造成系统宕机事故。

在这种情况下,如果有一个后台管理程序,专门负责日志管理与分析系统自身的运行与维护,上述所有操作都可在此后台管理程序上执行,那么对运维人员而言将是很大的解放。