系统环境
系统版本:Centos 7
JDK版本:1.8
Logstash版本:7.0.0
安装Logstash
-
安装Java 8或Java 11,可以使用OpenJDK或者是Oracle发行版,配置
JAVA_HOME
环境变量; -
下载Logstash安装包,以下示例使用
.tar.gz
包,手动下载链接为:https://www.elastic.co/downloads
也可以通过Linux命令行进行下载:
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.0.0.tar.gz
-
解压文件
tar -zxvf logstash-7.0.0.tar.gz
测试Logstash
我们可以通过运行最基本的Logstash Pipeline
来测试Logstash的安装。
如图,Logstash Pipeline中input
和output
为必须元素,filter
为可选元素,input
插件使用来自源的数据,filter
插件在您指定时修改数据output
插件将数据写入目标。
我们可以通过运行最简单Logstash Pipeline来进行测试,步骤如下:
进入Logstash的解压目录,通过-e
参数运行一个管道
cd logstash-7.0.0
./bin/logstash -e 'input { stdin { } } output { stdout {} }'
-e
可以直接从命令行指定配置。通过在命令行指定配置,可以快速测试配置,而无需在迭代之间编辑文件。示例中的管道从标准输入stdin
获取输入数据,并以结构化格式将输入数据移动到标准输出stdout
。
运行之后等待一会儿之后可以看到如下日志,出现Successfully started Logstash API endpoint {:port=>9600}
标志着启动成功
[2019-08-16T10:45:47,813][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2019-08-16T10:45:47,831][INFO ][logstash.runner ] Starting Logstash {"logstash.version"=>"7.0.0"}
[2019-08-16T10:45:54,313][INFO ][logstash.javapipeline ] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>32, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>4000, :thread=>"#<Thread:0x72ba907b run>"}
[2019-08-16T10:45:54,429][INFO ][logstash.javapipeline ] Pipeline started {"pipeline.id"=>"main"}
The stdin plugin is now waiting for input:
[2019-08-16T10:45:54,489][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2019-08-16T10:45:54,798][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
管道启动完之后就可以在控制台发送信息了,控制台会返回我们输入的信息,如下:
输入:hello world
输出信息:
{
"@version" => "1",
"message" => "hello world",
"@timestamp" => 2019-08-16T02:50:53.851Z,
"host" => "0.0.0.0"
}
Logstash在我们发送的message中添加了timestamp
和host
信息,如果想停止当前正在运行的Logstash Pipeline,可以使用CTRL-D 命令。
参考链接
[1] https://www.elastic.co/guide/en/logstash/current/first-event.html