ELK日志收集器构建

最近由于公司需要有一个统一的日志管理平台,由我负责将ELK日志收集器整合到项目中。作为开发者,我们都知道日志的重要性,单体架构的项目通常把日志统一输出到控制台或者某个文件中,但是在分布式架构下,尤其是微服务中,各个微服务都有自己的日志,我们不可能一一的检查所有服务器的日志,毕竟一一打开各个服务器可是一件很麻烦的事情,于是我们需要将日志进行集中化管理,这也是今天的主题。

那么,什么是ELK?

ELK是指elasticsearch、logstash以及kibina三大法宝。ELK实现日志收集的原理是什么?

让我们先来分析一下这三个软件的用途。Elasticsearch是一个基于Lucene的搜索框架,我们可以把它当成一个查询效率极高的数据库。Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后它可以将数据发送到elasticsearch中。Kibina提供了一个可视化的管理界面,方便我们对elasticsearch中的数据进行操作,网上有人形象的将它们和MVC结合起来理解。ELK收集日志的原理很简单,首先我们把需要打印的日志输出到logstash,logstash再把日志存进elasticsearch,最后通过kibina对日志进行分析和管理。

接下来是正题,教大家如何用spring boot构建一个ELK日志收集器。

ELK的安装和配置

首先,去官网下载ELK三大利器,并一一解压。在它们各自的目录下找到对应的配置文件,改动如下:

1. Elasticsearch配置文件

elasticsearch安装目录:

/config/elasticsearch.yml

其中network.host是你安装elasticsearch的机器的ip,也可以是127.0.0.1。

2. Logstash配置文件

(config文件夹下新建一个elk.conf文件)

其中的input是指你要作为输入源的东西,这里我们选择通过tcp插件监听本机的(安装logstash的那台)4560端口,一旦有日志输送过来,就把它输出到存到elasticsearch( hosts的ip是安装elasticsearch的机器ip)中去。

3.Kibina的配置:好吧,这货不需要配置。

配置完成后,先启动elasticsearch。我们接着通过配置文件elk.conf作参数启动logstash,

命令:在终端中cd到logstash的bin目录下执行

logstash -f ../config/elk.conf

最后启动kibina。

Spring boot创建一个测试项目

在idea中创建一个名为demo的springboot项目,pom依赖改动如下:

在resources文件夹下新建一个log4j2.xml文件,内容如下:

在resources文件夹下新建一个log4j2.xml文件,内容如下:

其中host是我们的logstash所在的机器的ip地址,port配置成我们logstash正在监听的4560端口。

修改DemoApplication.java:

启动spring boot然后访问http://localhost:8080/index

最终控制台输出:

与此同时,logstash终端会更新信息:

最后我们打开kibina:打开导航的Management->Index Management可以看到成功生成了索引

大功告成,ELK收集器的配置到此结束。

本文作者:

刘洪涛

芦苇科技 Java初级后台工程师

芦苇科技-广州专业软件外包服务公司

提供微信小程序、APP应用研发、UI设计等专业服务,专注于互联网产品咨询、品牌设计、技术研发等领域

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180801G1EXE700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券