面向微服务开发时会涉及到多系统的日志跟踪,一旦出现问题过滤起来系统间切换非常麻烦,所以需要采用特定工具将日志统一归类处理,方便查询排查错误,下面将介绍一种开源的工具ELK.
ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方下载地址:https://www.elastic.co/cn/downloads/
准备环境
客户机:win10
Java环境: jdk1.8(必须1.7以上版本!!!)
组件信息:
logstash: 日志收集过滤工具, 下载 https://artifacts.elastic.co/downloads/logstash/logstash-7.3.0.zip
kibana: 提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能,下载 https://artifacts.elastic.co/downloads/kibana/kibana-7.3.0-windows-x86_64.zip
elasticsearch: 开源分布式搜索引擎, 下载 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-windows-x86_64.zip
elasticsearch-head:es插件, 一个界面化的集群操作和管理工具, 下载https://github.com/mobz/elasticsearch-head/releases
第一步
下载组件并解压到本地磁盘(注意不要解压到带有空格的路径,否则后续的安装可能出错),如下图:
第二步
安装jdk1.8,并配置环境变量
第三步
安装logstash,在powershell中执行下面的命令:
logstash.conf: 在logstash文件夹的bin目录里新建logstash.conf配置文件
具体内容如下,
input {
file {
path => "D:/ELK/logs/*" ## 日志存放目录
start_position => "beginning"
codec => plain { charset => "GBK" }
}
}
filter {
mutate {
add_field => [ "[fields][path]", "%{[path]}"]
add_field => [ "message]", "%{[message]}"]
}
}
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "logstash-%{type}-%{+YYYY.MM.dd}"
template_overwrite => true
}
}
* 可以将运行logstash的命令"logstash.bat -f logstash.conf"保存到run.bat文件,方便下次启动
第四步
安装elasticsearch,为简化操作可以将把elasticsearch-7.3.0/bin路径加入到环境变量,那样就可以在powershell中的任意位置直接输入elasticsearch命令,用默认配置启动(默认传输端口为9300,接受HTTP请求的端口为9200),然后使用浏览器打开http://localhost:9200/,看到下图表示启动安装成功
1. 启用elasticsearch外网访问,修改config/elasticsearch.yml文件内容:
network.host: 0.0.0.0 #不限IP,须避免公网使用
2. 禁用X-Pack机器学习功能,仅限Windows
xpack.ml.enabled: false
3. 注册elasticsearch为windows系统服务,进入bin目录执行如下命令:
elasticsearch-service.bat install
elasticsearch-service.bat 可执行参数 :
install: 安装Elasticsearch服务
remove: 删除已安装的Elasticsearch服务
start: 启动Elasticsearch服务
stop: 停止服务
manager:启动GUI来管理已安装的服务
4. 重启elasticsearch服务
第五步
安装elasticsearch-head,此处需要提前安装nodejs url: https://nodejs.org/en/download/,然后依次执行下面的命令:
npm install -g grunt-cli #编译源码
npm install #安装服务
grunt server #启动服务
第六步
安装Kibana,为简化操作可以将把ibana-7.3.0-windows-x86_64/bin路径加入到环境变量,那样就可以在powershell中的任意位置直接输入Kibana命令启动
注意:连接远程elasticsearch时,需修改文件/config/kibana.yml内容 elasticsearch.hosts
启动成功后,在浏览器中输入:http://localhost:5601/,出现下面的界面
然后我们回到前面第三步中logstash.conf文件中指定的日志目录,新建日志txt文件,文件内容如图:
日志文件保存之后,在浏览器访问Url:http://localhost:5601/app/kibana#/management/kibana/index_pattern,就可以看到可以新建日志索引了
索引创建完成后就可以在下面的链接看到日志数据了,http://localhost:5601/app/kibana#/discover