在上一节实验中,我们已经搭建好了基本的软件环境,但是这离我们成功获取日志并进行分析和可视化还有很长的路要走。
在上一节中初步介绍了一套完整的 ELK 技术栈结构,要一次性部署完这套日志分析系统的各个组件,是比较困难的。这里我们将架构进行简化,结果如下图所示:
配置Logstash
Logstash 是打通日志文件和 Elasticsearch 之间的一个枢纽。和各种服务一样,Logstash 也有着自己的一套配置规则。
Logstash 的配置主要分为三大部分:input
, filter
, output
。
在讲解 Logstash 之前,我们先在 Logstash 目录下执行如下命令:
$ cd logstash-7.4.1/bin
# 测试,`-e` 参数表示立即执行
$ ./logstash -e 'input { stdin { } } output { stdout {codec=>json} }'
这时,终端会等待输入,我们可以简单的输入 hello shiyanlou
这时会看到有如下输出:
执行过程可能比较慢,需要耐心等待一会儿:
使用
ctrl+c
关闭当前 Logstash 执行的配置。
配置语法
我们先来观察刚才命令中的字符串:
'input { stdin { } } output { stdout {codec=>json} }'
将其格式化后:
input {
stdin {}
}
output {
stdout {
codec => json
}
}
其中,stdin {}
表示标准输入,stdout {}
表示标准输出,在这个字符串中,其实定义了 Logstash 的两个行为 input
和 output
。
在 input
中,我们定义了一个标准输入,由于什么都没有,所以 Logstash 会从终端的标准输入中读取字符串,这也是为什么刚才在输入完命令后会出现等待输入的情况。
在 output
中,我们定义了一个标准输出,也就是说 Logstash 在处理完后会将结果从标准输出(终端)中输出,而 codec
字段,则说明了输出会遵循什么样的格式,这里定义的 codec
为 json
,所以我们刚才看到了一套标准的输出格式。
有了对 Logstash 配置语法的基本认识,我们可以开始配置从 Log 到 Logstash 再到 Elasticsearch 的配置文件了。
配置 Log->Logstash->Elasticsearch
由于 Logstash 的配置很长,所以我们不太可能在一行命令中把整个配置写好,所以我们可以提前创建 Logstash 配置文件:
cd /home/shiyanlou/logstash-7.4.1
mkdir