1、为什么我们使用ELK
通过使用微服务,我们能够解决许多在单体应用中暴露的问题,并且它允许我们创建稳定的分布式应用程序,并对代码,团队规模,维护,发布周期,云计算等进行所需要的控制。但同时微服务也引入了一些挑战,例如分布式日志管理和查看。我们的系统需要提供在众多服务中查看分布的完整事务日志和分布式调试的能力。
大型系统通常都是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。
2、解决方案
3、详细开发步骤
3.1准备工作
安装elasticsearch、logstash和Kibana,选择相同的版本下载压缩包然后解压即可。
下载地址:
1.elasticsearchhttps://www.elastic.co/downloads/elasticsearch
2.logstashhttps://www.elastic.co/downloads/logstash
3.kibanahttps://www.elastic.co/cn/downloads/kibana
3.2具体开发步骤
3.2.1 elasticsearch启动
双击elasticsearch.bat启动,启动后浏览器访问http://localhost:9200/,出现以下json则说明启动成功。
3.2.2 logstash相关配置并启动
1)在logstash文件夹的下config目录创建配置文件logstash.conf,内容如下:
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 5044
codec => json_lines
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "logstash-%{+YYYY.MM.dd}"
document_type => "_doc"
#flush_size => 200
user => "root"
password => "123456"
}
stdout {
codec => rubydebug
}
}
2)在bin目录下创建run.bat写下一脚本:
logstash -f../config/logstash.conf
双击启动run.bat后访问http://localhost:9600/ 说明启动成功。
3.2.3 Kibana配置并启动
1)修改config目录下的kibana.yml文件,在最后添加配置默认设置配置Kibana运行localhost:5601,并配置连接Elasticsearch。
server.port: 5601
server.host: "localhost"
elasticsearch.hosts: ["http://localhost:9200"]
kibana.index: ".kibana"
2)双击bin目录下的kibana.bat启动后,访问http://localhost:5601/,出现类似如下界面。
3.2.4 项目与logstash建立连接
1)在pom.xml文件中引入logstash组件依赖
2)在logback-spring.xml中增加配置让logback的日志输出到logstash。
3)启动项目或服务
3.2.5 分析日志
1)访问http://localhost:5601/打开Kibana。
2)点击上图中管理按钮进入如下界面,创建索引模式
3)查看日志。点击Discover图标按钮,然后选择创建的索引模式就能看到logstash收集到的日志了。