为什么要使用日志分析平台
对于日志的重要性,都会很认同,不管是一个小网站,还是一个大系统,都会用到日志
网站初期,一般就是查看web服务器访问日志,例如,平时关注一下404访问,有的话及时处理一下;网站访问变慢了,查看一下是哪些访问比较频繁、哪些资源占流量等等
如果管理员很勤劳,这时可能都不需要什么工具,直接打开日志文件用肉眼就能看个差不多了
随着网站规模的发展,访问日志越来越多,勤劳的管理员肉眼搞不定了,需要学习使用一些日志处理小程序,例如linux下,要使用 grep、sed、awk 等命令实现检索和统计
这时系统、安全方面也会时不时出现一些小问题,那么就不能只关注web访问日志了,还需要查看系统和安全方面的日志信息来排查问题
单服务器时怎么都好说,累点就累点了,管理员还能捣腾得过来,但到后来,单服务器撑不住了,要上集群
那么多台服务器中的大量日志怎么分析统计?管理员挨个服务器折腾是肯定不行了
随着网站规模的变大,日志的重要性越发突出,作用越来越大,例如
(1)监控系统健康状况
(2)帮助分析查找bug根源
(3)追踪安全问题
(4)做为网站策划活动的数据依据
……
并且日志的存储也不满足于普通的日志文件了,会把日志保存到数据库,如mysql、mongodb、hbase
日志的发展趋势就是:源头分散、产生速度快、数据量巨大
所以,传统日志分析手段力不从心,需要专业的日志分析平台
携程案例
携程分享过他们的日志发展历程
作为中国最大的OTA网站,每日产生的各类日志有好几十种,有数个TB大小,如果采用Splunk这样的商业软件,每年的授权费用就要近千万,必须要有自己的日志平台
当时有基于MySQL和HBase的日志分析工具,但不好用,只能做简单的查看和过滤,一旦有复杂的查询和统计就很慢,体验比较差
运维部门对日志分析工具需求如下:
(1)支持多种数据源
(2)日志解析方式灵活、简单
(3)支持关键词搜索和浏览,能支持组合条件搜索
(4)能够按照时间窗对特定字段做数值统计,比如计算某个时间段的平均响应时间,或者出现某种错误类型最多的URL等
后来通过技术分析调研,携程便使用了ELK日志分析平台,并在此基础上进行了扩展开发
ELK平台介绍
ELK是三个开源工具 ElasticSearch、Logstash、Kibana 组成的软件栈
通过他们3个的完美配合,就可以完成对大型系统日志的 采集、存储、统计展示
Elasticsearch
是一个开源分布式搜索引擎,提供对大量日志信息的搜索统计能力
特点是 分布式、自动发现、索引自动分片、restful 风格接口、多数据源、自动搜索负载等
Logstash
是一个完全开源的工具,可以对日志进行收集、分析,并将其存储供以后使用
kibana
也是一个开源工具,配合Elasticsearch的强大搜索能力,对日志进行汇总、分析、搜索,以用户体验非常好的方式将结果展现出来
他们的协作流程如下
在需要收集日志的服务器上部署 logstash ,作为 logstash agent,用于过滤和收集日志
每个 logstash agent 将内容发送到 logstash indexer 汇总
logstash indexer 将日志收集在一起,交给全文搜索服务 ElasticSearch,管理员对 ElasticSearch 进行自定义搜索配置
最后通过 Kibana 来结合自定义搜索进行页面展示