ELK是一款非常流行的日志分析系统,在微服务架构中,我们可以使用ELK来跟踪分析各个微服务的日志,从而来了解服务的运行情况。
ELK是由三个开源工具搭建而成一个系统,分别是:
ElasticSearch: ES是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash:一个完全开源的工具,可以对日志进行收集、分析、并将其存储供以后使用。
Kibana:一个开源和免费的工具,他Kibana可以为Logstash和ES提供的日志分析友好的Web界面,可以帮助您汇总、分析和搜索重要数据日志。
环境
- Window 10
- jdk 1.8
- ElasticSearch-6.4
- logstash-6.4
- kibana-6.4-windows-x86_64
ELK安装
需要先安装jdk 1.8,其实只需要java运行环境即可,具体安装与环境变量配置过程这时不记录了
ElasticSearch
Window下的安装比较简单。在官网下载对应平台的安装包即可。
官网:https://www.elastic.co/downloads/elasticsearch
下载下来后是一个zip的压缩文件,直接解压到安装目录即可。
ES的启动也非常简单,打开/bin
目录双击 elasticsearch.bat
即可。
当然我们也可以选择作为服务启动,在命令行模式下切换到ES的/bin
执行 Service install
再通过/bin
目录下的 elasticsearch-service-mgr.exe
来管理与启动服务。这里我选的第一种,使用的时候直接打开就行了。
启动后直接访问:http://localhost:9200/ 若出现如下页面表示ES已经启动成功了。
Logstash
官网下载:https://www.elastic.co/downloads/logstash
我下载的是ZIP格式的,将压缩包解压到安装目录即可。
配置
在其/config
目录可以看到已有一些配置文件,我们可以按自己的要求来新建一个配置文件,在此目录新建一个logstach-test.conf
内容如下 :
1 | input { |
这里的配置比较简单,logstash主要是收集日志给ElasticSearch。因此 input{}
中主要是配置logstash监听的端口,后面我们在项目中配置日志向这个端口传输,logstash就会收集。
output{}
则配置ElasticSearch的地址,logstash将收集的日志向ES的地址进行输出,index
可以指定索引名, stdout
是标准输出,会将收集到的日志进行输出,方便我们调试。
input
中 codec => json_lines
是一个json解析器,接收json的数据。这个要装logstash-codec-json_lines
插件。在命令行中切换到Logstash的 /bin
目录下,执行以下命令:
1 | logstash-plugin install logstash-codec-json_lines |
####启动
命令行中切换到Logstash的 /bin
目录下,执行以下命令,使用我们上面的配置文件启动Logstash
1 | logstash -f ../config/logstash-test.conf |
命令窗口中打印如下内容无报错并处于监听状态则启动成功:
1 | [2018-09-18T16:29:03,364][INFO ][logstash.agent] Successfully started Logstash API endpoint {:port=>9600} |
Kibana
官网下载:https://www.elastic.co/downloads/kibana
这里下载的是Window版本,下载下来是一个压缩包,直接解压到指定的安装目录即可。
启动则直接在/bin
目录双击kibana.bat
新建Spring Boot项目
这里使用之前写的项目作测试,项目的构建请看:微服务简单实例–电影购票 这里使用用户微服务(服务提供者)。需要稍微作修改为我们整合Logstash
添加依赖
1 | <!--添加logstas--> |
修改Controller
为了方便测试我们在findId方法中添加一条日志:
1 |
|
新建bootstrap.yml
在application.yml同目录下新建bootstrap.yml,并将application.yml中的 以下内容移动到bootstrap.yml中
1 | spring: |
配置logback-spring.xml
在resources
目录下新建logback-spring.xml
文件添加以下内容:
1 |
|
在上面的XML配置中添加了
<destination>localhost:5044</destination>
指定了我们上面配置logstash的监听地址,这样项目的日志才能被收集。
配置完成后可以启动项目,观察logstash窗口会有日志打印出来。
可视化查看
分别启动Es,Logstash,用户微服务,Kibana。打开kibana的地址:http://localhost:5601 默认是没有密码可以直接登陆的。
创建索引模式
我这里使用了汉化,默认为英文。点击发现
添加索引。索引名为Logstash配置方案中指定的index
。所以可以看到Kibana为我们列出了可用或使用过的索引名。在索引模式的输入框中填入 logstash-test
下一步即可。
索引名称可以使用匹配规则,可以匹配多个索引。
下一步需要选择过滤字段,这里我们先选择时间戳,并点击创建索引模式。创建完成后出现如下系统管理>索引模式界面
界面即创建成功,这里列出了可用的过滤字段,并可以在些删除该索引模式。
查看数据
点击发现
这里我们可以看到刚刚新建的索引模式的数据。为了测试效果我们访问项目:http://localhost:8000/1多刷新几次再次返回`发现`界面查看,可以看到项目的日志已经过来了。下方可以看到日志内容,柱形图可以看到时间点上日志统计,左边为可显示的字段。可以把左边的字段加到下方进入展示。
添加筛选器
我们可以添加筛选器message
筛选出我们打印的日志
可视化分析
在可视化界面中,我们添加一些视图。
通过一些条件定制,最后把视图放到仪表盘查看
总结
以上只是简单的记录了下ELK的搭建与基本使用,对于生产部署还需要做一些配置。在学习过程中找到一些资料分享: