3.2 日志管理与分析系统技术选型
3.2.1 日志分析的基本工具
Linux和UNIX操作系统内建了一些简单而强大的工具,可用来对日志进行分析。但是,这些工具无法对各种复杂的数据进行关联分析,而且遇到大批量数据时,其分析效率极低。
1.grep
grep 最初是一个用于 UNIX 操作系统的命令行工具。在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,然后输出匹配(或者不匹配)的行或文本。
命令格式:
数据示例:
想要获取上述数据示例中 ip=192.168.1.142的记录,可以采用以下命令:
2.awk
awk是一个优良的文本处理工具,比grep更进一层,但其实现效果完全取决于使用者的水平,而且学习成本较高。awk可用于分析某类数据,但对于多维度分析、多数据关联分析,awk实现起来非常困难。
命令格式:
或
以上文中的数据为例,用grep可以获取 ip=192.168.1.142的日志记录。但是,如果只想请求uri,就可以使用awk来提取,命令如下:
命令执行结果:
3.其他工具
1)tail
tail可用于查看文件尾部的内容。
命令格式:
例如:
上述命令会把filename文件尾部的内容显示在屏幕上,并且不断刷新,只要filename更新就可以看到最新的文件内容。
2)head
head可用于查看文件开头的内容。
3)sed
sed是一种流编辑器,它是文本处理中非常重要的工具之一,可配合正则表达式使用。
命令格式:
3.2.2 开源+自研
最常见的日志分析开源方案为 ELK(Elasticsearch+Logstash+Kibana),其次是 Flume-ng+Kafka+Storm。除此之外,还有单系统方案,如Flume、Scribe和Chukwa。很多企业在开源方案的基础上进行修改与完善,以开发适合自身业务的日志管理与分析系统。
3.2.3 商业产品
进入互联网时代,日志数据量越来越大,数据类型也越来越多样化,仅仅依赖传统工具已经很难从日志中提取想要的信息。在这一背景下,一些处理日志的商业产品应运而生,如Splunk、日志易、ELK商业版等,这些产品支持搜索处理语言(Search Processing Language,SPL)语法,能让用户的查询检索变得更容易。
Splunk 是机器数据引擎。使用 Splunk 可收集、索引和利用所有应用程序、服务器和设备生成的快速移动型计算机数据。
日志易是国产日志管理与分析系统,提供部署版及 SaaS 产品,并且针对国内等保合规等要求,包含Beaver搜索引擎,能够快速实现数据接入、分析及展示。
ELK商业版是在ELK社区版的基础上构建的,功能和社区版差不多,但比社区版多了X-Pack功能包。
除了支持单独部署的日志管理商业产品,也有基于云服务的产品,如阿里云、腾讯云等均有日志服务。
1.SpIunk
1)什么是Splunk
Splunk 是机器数据引擎。使用 Splunk 处理计算机数据,可让运维人员在几分钟内解决问题和调查安全事件,监控用户端对端基础结构,避免服务性能降低或中断,以较低成本满足合规性要求,关联并分析跨越多个系统的复杂事件,获取新的运营可见性及IT和业务智能。
2)适用场景
Splunk可以处理各种类型的数据,适用场景广泛。
(1)应用程序交付:快速定位并修复应用程序问题,减少宕机时间,提高DevOps协作效率。
(2)大数据:从某个位置搜索、探究、浏览、导航、分析、可视化PB级的数据。
(3)业务分析:作为现有BI环境的补充,借助机器数据提供实时洞察力和分析能力。
(4)物联网:为探究传感器、设备和工业系统提供洞察力。
(5)IT运维管理:对IT基础设施提供端到端的可见性,提高IT投资的转化率,更好地为企业服务。
(6)日志管理:实时收集、搜索、监控、报告和分析所有日志数据。
(7)安全与防欺诈:使用实时搜索、监控、告警、报告和可视化图表驱动基于分析的安全。
3)Splunk的优势
(1)能以任意格式定义。
(2)具有功能强大的搜索和报表语句。
(3)具有灵活的报表生成、分析和可视化展示功能。
(4)具有优异的可扩展性(从单机到分布式架构)。
(5)具有开放的、可扩展的平台。
(6)拥有活跃的用户社区群体。
2.日志易
1)什么是日志易
日志易是一款文本日志搜索引擎,借助自身强大的日志分析功能,帮助用户及时发现问题。
日志易旨在为企业提供一个配置简单、功能强大、容易使用的日志管理工具,通过对日志进行集中采集和准实时索引,提供搜索、分析、可视化和监控告警等功能,帮助企业进行线上业务实时监控、业务异常原因定位、业务日志数据统计分析、安全与合规审计。
2)适用场景
(1)统一日志管理。对分散在生产环境各环节的日志进行统一收集、统一保存、集中查看、集中搜索,无须人工登录每台服务器查看日志。
(2)运维和应用性能监控。
■ 通过日志实时监控网络设备、服务器及应用程序状态,迅速定位问题根源。
■ 通过日志实时监控应用程序性能,及时发现性能瓶颈。
■ 关联不同系统或模块的日志,进行端到端的服务监控和故障排查。
(3)安全信息与事件管理。
■ 通过服务器日志发现端口扫描和非法入侵。
■ 防火墙、网络设备、服务器日志安全跟踪分析。
■ 信息安全合规审计。
(4)业务统计分析。
■ 网站用户及手机用户访问统计,客户端设备、操作系统、浏览器统计。
■ 社交、视频、电商、游戏等网站的用户行为及交易行为分析。
■ 交易日志统计分析。
(5)程序研发 Bug 分析。快速关联分析大规模分布式系统各模块产生的大量 Debug日志。
3)日志易的优势
(1)功能强大。
■ 能自动识别各种日志类型,自动抽取关键字段,将非结构化数据转化为结构化数据。
■ 能对日志做全文索引。
■ 能对不同来源的日志做关联分析,以便及时定位问题。
■ 具有丰富的统计及可视化功能,日志情况一目了然。
■ 能对日志进行监控告警,并以电子邮件的形式通知用户。
■ 能对日志、解析规则、分析模型等进行分组管理,赋予使用者不同的权限。
■ 提供开放API,可灵活对接第三方系统或二次开发日志应用。
(2)高性能、可扩展。
■ 采用高性能分布式架构,可支持每日 TB 级的新增日志量,EPS 可达数十万条日志,搜索分析结果具有秒级延时,能让用户查询到十几秒之前产生的日志。
■ 可在普通服务器上运行,可根据日志量的增长逐步扩容。
(3)简单易用。不需要用户掌握复杂的搜索语法,使用简单的搜索框查询,通过用户图形界面和友好的用户交互来实现强大的搜索分析功能。
(4)提供完善的API,方便与第三方系统集成。通过App机制,自动支持数百个主流IT设备与系统的日志分析,且数量仍在不断增长。