在微服务架构下,微服务被拆分成多个微小的服务,每个微小的服务都部署在不同的服务器实例上,当我们定位问题,检索日志的时候需要依次登录每台服务器进行检索。

这样是不是感觉很繁琐和效率低下。所以我们还需要一个工具来帮助集中收集、存储和搜索这些跟踪信息。

集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products

  • Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
  • Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

wKiom1lKVFvyPZrvAAB8KwQilDM847.png

从左边看起,每一台webserver上都会部署一个logstash-agent,它的作用是用类似tailf的方式监听日志文件。日志需要定义统一的格式,利用log4j2定义好统一的日志格式,在配置文件input中需要指定收集的日志文件地址,利用logstash过滤日志内容。

然后把新添加的日志发送到redis队列里面,logstash-indexer负责从redis相应的队列里面取出日志,对日志进进行加工后输出到elasticsearch中,elasticsearch会根据要求对日志进行索引归集。

最后用户可以通过kibana来查看和分析日志。

参考:https://my.oschina.net/itblog/blog/547250