跟我学:分布式链路跟踪之ELK初搭建

725 阅读2分钟

「这是我参与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 配置

  1. 编辑根目录下文件:filebeat.yml
  2. 配置文件来源
filebeat.inputs:  
  enabled: true    //这边必须要设置为true
  paths:           //设置日志文件路径,用*号代表文件夹下层次日志文件,无法递归
    - /Users/zyq/project/study-project/track/logs/*.log
  1. 配置输出到Logstash
output.logstash:
  hosts: ["localhost:5044"]

3.1.3 启动

在根目录下 ./filebeat -e -c filebeat.yml

3.2 LogStash

3.2.1 下载链接

3.2.2 配置

  1. 在根目录的config文件夹下创建sync.conf
  2. 输入下方代码区的内容
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看到的结果。 image.png