平时查看错误日志,都是登录到服务器,然后用命令进行查看,不是很好的定位问题,决定搭建一个ELK的日志查看平台。ELK是Elasticsearch、Logstash、Kibana三个的简称。Elasticsearch是一个分布式的实时搜索引擎,Logstash是一个日志的收集器,Kibana是在浏览器端用于展示的可视化工具。将他们三个结合起来,可以用于日志的可视化分析,大体功能如下图:
(一) 安装Elasticsearch
到官网下载ES的安装包,这里我下载的是5.5.0的版本,然后进行解压安装:
- unzip elasticsearch-5.5.0.zip
- cd /elasticsearch-5.5.0
- ./bin/elasticsearch -d (加上-d参数表示后台启动ES)
访问http://localhost:9200/,显示如下版本信息,说明安装成功
{
"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
- tar -zvxf logstash-5.5.1.tar.gz
- cd logstash-5.5.1
- touch simple.conf
- vi simple.conf
在simple.conf加入以下配置信息,其中hosts是ES的安装地址和端口号。ES是通过9200提供HTTP的服务,ES节点间的TCP通信是通过9300端口
input {
tcp {
port => 4560
codec => json_lines
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-test"
}
}
使用刚刚的simple.conf配置文件启动Logstash
- ./bin/logstash -f simple.conf
(三) 安装Kibana
解压Kibana
- tar -zvxf kibana-5.5.0-linux-x86_64.tar.gz
修改kibana.yml,监听ES的地址
- cd kibana-5.5.0-linux-x86_64/config
- vi kibana.yml
加入以下配置信息
server.port: 5601
server.host: "0.0.0.0" #修改监听地址,不然只能本机访问
elasticsearch.url: "http://localhost:9200"
后台启动kibana
- nohup ./bin/kibana &
访问http://localhost:5601,显示如下,说明安装kibana成功
(三) 将LogBack日志输入Logstash
pom.xml中添加Maven依赖
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.8</version>
</dependency>
在logback.xml添加配置,将项目日志输入到Logstash
<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控制台是否有日志输出
public static void main(String[] args) {
logger.info("服务启动");
logger.error("服务错误");
logger.warn("系统警告");
logger.info("服务结束启动");
}
在kibana查看日志,搜索"服务"关键字查看日志信息
此时kibana服务器端会看到日志的打印信息