「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」。
1. 前言
因为某种原因,决定在项目里自己搭一套采用日志采集和分布式链路跟踪,之前都是直接使用阿里云。
毋庸置疑,这边采用的是经过充分验证的elk,也就是FileBeat + LogStash + Kibana + ElasticSearch。
如果你也有这样的需要,那就跟着车辙一起走下去吧~(ps:都是在Mac本机上进行的单机配置,采用7.12.0版本,并且保持一致)
2.简介
2.1 LogStash
Logstash 顾名思义:日志采集。 当然Logstash不仅仅是一个日志采集工具,它同样是一个日志搜集工具,比如说你可以搜集nginx的日志,同时Logstash还拥有丰富的input|filter|output插件可以使用。 不过由于Logstash是用Java编写的,对资源的要求较高,所以Elastic后续出了*Beat。
2.2 FileBeat
FileBeat 作为文件采集工具,相较于Logstash较轻。
2.3 ElasticSearch
ElasticSearch想必就不用多说了,占据了搜索的大半壁江山。主要用于储存LogStash收集到的信息,进行分词搜索。
2.4 Kibana
Kibana主要作为ElasticSeach的数据查询方式,同时自带各种仪表盘功能。相较于ES_HEAD,功能更加全面。
3. 下载安装
3.1 FileBeat
3.1.1 下载链接
3.1.2 配置
- 编辑根目录下文件:
filebeat.yml - 配置文件来源
filebeat.inputs:
enabled: true //这边必须要设置为true
paths: //设置日志文件路径,用*号代表文件夹下层次日志文件,无法递归
- /Users/zyq/project/study-project/track/logs/*.log
- 配置输出到Logstash
output.logstash:
hosts: ["localhost:5044"]
3.1.3 启动
在根目录下 ./filebeat -e -c filebeat.yml
3.2 LogStash
3.2.1 下载链接
3.2.2 配置
- 在根目录的
config文件夹下创建sync.conf - 输入下方代码区的内容
input {
beats{ ** 设置输入是filebeat的5044端口**
port => "5044"
}
}
output {
elasticsearch {
# 转换ES索引
index =>"filebeat" //设置在ES中创建的索引名,当然你也可以按照时间格式
document_type =>"_doc"
hosts =>["127.0.0.1:9200"]
}
}
3.2.3 启动
在bin目录下 ./logstash -f ../config/sync.conf
3.3 ElasticSearch
3.3.1 下载链接
3.3.2 启动
如果你完全是在自己本地安装,就不用进行配置(因为现在的ES都自带了JDK,所以不用再配置Java环境变量),进入bin目录,./elasticsearch启动。
3.4 Kibana
3.4.1 下载链接
3.4.2 启动
如果你完全是在自己本地安装,就不要更改Es的配置,进入bin目录,./kibana启动。
4 结尾
在软件全部启动完成后,filebeat会自动监听配置的文件路径,读取其中的log文件,并流转存储到Es中。,下图是通过kibana看到的结果。