My Avatar

licaibo

在JDK改来改去!

ELK日志平台搭建

2017年08月03日 星期四, 发表于 海南 海口

如果你对本文有任何的建议或者疑问, 可以在 这里给我提 Issues, 谢谢! :)

平时查看错误日志,都是登录到服务器,然后用命令进行查看,不是很好的定位问题,决定搭建一个ELK的日志查看平台。ELK是Elasticsearch、Logstash、Kibana三个的简称。Elasticsearch是一个分布式的实时搜索引擎,Logstash是一个日志的收集器,Kibana是在浏览器端用于展示的可视化工具。将他们三个结合起来,可以用于日志的可视化分析,大体功能如下图: cmd-markdown-logo

(一) 安装Elasticsearch

官网下载ES的安装包,这里我下载的是5.5.0的版本,然后进行解压安装:

访问http://localhost:9200/,显示如下版本信息,说明安装成功

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "name" : "dv8zjAU",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "vmNdDKGoTBy2w-tlqd8jtA",
  "version" : {
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

(二) 安装Logstash

在simple.conf加入以下配置信息,其中hosts是ES的安装地址和端口号。ES是通过9200提供HTTP的服务,ES节点间的TCP通信是通过9300端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
input {
  tcp {
    port => 4560
    codec => json_lines
  }
}

output {
  stdout {
    codec => rubydebug
    }
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "logstash-test"
  }
}

使用刚刚的simple.conf配置文件启动Logstash

(三) 安装Kibana

解压Kibana

修改kibana.yml,监听ES的地址

加入以下配置信息

1
2
3
server.port: 5601
server.host: "0.0.0.0" #修改监听地址不然只能本机访问
elasticsearch.url: "http://localhost:9200"

后台启动kibana

访问http://localhost:5601,显示如下,说明安装kibana成功 cmd-markdown-logo

(三) 将LogBack日志输入Logstash

pom.xml中添加Maven依赖

1
2
3
4
5
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.8</version>
</dependency>

在logback.xml添加配置,将项目日志输入到Logstash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.2.102:4560</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>

<root level="INFO">
    <appender-ref ref="STASH" />
    <appender-ref ref="STDOUT" />
    <appender-ref ref="ERROR" />
    <appender-ref ref="INFO" />
    <appender-ref ref="WARN" />
    <appender-ref ref="DEBUG" />
</root>

在项目启动打印日志,查看kibana控制台是否有日志输出

1
2
3
4
5
6
 public static void main(String[] args) {
        logger.info("服务启动");
        logger.error("服务错误");
        logger.warn("系统警告");
        logger.info("服务结束启动");
    }

在kibana查看日志,搜索”服务”关键字查看日志信息 cmd-markdown-logo

此时kibana服务器端会看到日志的打印信息 cmd-markdown-logo