目前,服务端的反向代理服务Nginx,针对每一次服务端的访问请求,都会进行日志记录。这些日志信息包括,“请求时间”,“请求来源IP”, “User-Agent”,“请求URL” “Http Status Code”, “请求响应时长”等参数。
于是,通过分析这些Nginx访问日志,我们就可以了解到全站的访问请求状况。
但是,我们有多台Nginx服务器,所有的访问日志被分散存储到不同的机器上。在过去,服务端的做法是,如果我们需要分析某一天的请求访问状况,我们是通过人工去汇总那一天的所有Nginx日志文件,然后通过 grep、awk 和 wc 等Linux命令实现检索和统计。然而,这种方法非常地低效,因为这种分析方法非常地滞后,一般是我们已经发现某一天的流量访问出问题了,才会去分析那一天的日志。这些日志不能帮助我们提前发现问题,而且随着服务端Nginx服务器的增加,日志越来越多,越来越分散,过去这种分析日志的办法,越来越显得力不从心了。
于是,我们引入了开源实时的日志分析平台ELK。ELK由 ElasticSearch、Logstash和Kibana三个开源工具组成。
ElasticSearch 是个开源分布式搜索引擎,它的特点有:分布式、零配置、索引自动分片、索引副本机制、restful接口、自动搜索负载等
Logstash 是一个开源的日志收集工具,它可以对日志进行收集、分析和转换
Kibana 是一个开源的数据可视化平台,它可以让你通过强大的图表功能,来展现你的数据
这就是ELK的架构