安装Elasticsearch
配置
要配置Logstash,您需要创建一个配置文件,指定您要使用的插件以及每个插件的设置。 您可以引用配置中的事件字段并使用条件来处理符合特定条件的事件。 当你运行logstash时,你使用-f来指定你的配置文件。
让我们逐步创建一个简单的配置文件并使用它来运行Logstash。 创建一个名为“logstash-simple.conf”的文件并将其保存在与Logstash相同的目录中。
input { stdin { } }
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
Then, run logstash and specify the configuration file with the -f flag.
bin/logstash -f logstash-simple.conf
藏起你的第一个事件
首先,我们通过运行最基本的Logstash管道来测试Logstash安装。
Logstash管道有两个必需的元素,即输入和输出,以及一个可选元素filter。 输入插件使用来自数据源的数据,过滤器插件修改您指定的数据,并且输出插件将数据写入目标。
要测试Logstash安装,请运行最基本的Logstash管道。 例如:
cd logstash-6.2.4
bin/logstash -e 'input { stdin { } } output { stdout {} }'
遇到错误
[2018-05-29T17:03:32,836][FATAL][logstash.runner ] Logstash could not be started because there is already another instance using the configured data directory. If you wish to run multiple instances, you must change the "path.data" setting.
[2018-05-29T17:03:32,850][ERROR][org.logstash.Logstash ] java.lang.IllegalStateException: org.jruby.exceptions.RaiseException: (SystemExit) exit
关闭之前启动的Logstash,因为bin/logstash -e ‘input { stdin { } } output { stdout {} }’也是启动命令。
-e标志使您能够直接从命令行指定配置。 在命令行指定配置可让您快速测试配置,而无需在迭代之间编辑文件。 示例中的管道从标准输入stdin中获取输入,并将输入移动到标准输出stdout中,并采用结构化格式。
启动Logstash之后,请等到您看到“Pipeline main started”,然后在命令提示符处输入hello world,之后会得到类似结果
{
"@version" => "1",
"message" => "hello world",
"@timestamp" => 2018-05-29T09:27:49.429Z,
"host" => "aoeai.local"
}
Logstash将时间戳和IP地址信息添加到消息中。 通过在运行Logstash的shell中发出CTRL-D命令来退出Logstash。
恭喜! 您已经创建并运行了一个基本的Logstash管道。 接下来,您将学习如何创建更实际的管道。
使用Logstash解析日志
在隐藏你的第一个事件中,你创建了一个基本的Logstash管道来测试你的Logstash设置。 在现实世界中,Logstash管道有点复杂:它通常具有一个或多个输入,过滤器和输出插件。
在本节中,您将创建一个使用Filebeat将Apache Web日志作为输入的Logstash管道,解析这些日志以从日志中创建特定的命名字段,并将解析的数据写入Elasticsearch群集。 而不是在命令行中定义管道配置,您将在配置文件中定义管道。
要开始,请前往此处下载本示例中使用的示例数据集。 解压文件。
配置Filebeat以将日志行发送到Logstash
在创建Logstash管道之前,您将配置Filebeat以将日志行发送到Logstash。 Filebeat客户端是一个轻量级的资源友好型工具,它从服务器上的文件收集日志,并将这些日志转发给Logstash实例进行处理。 Filebeat专为可靠性和低延迟而设计。 Filebeat在主机上占用的资源很少,Beats输入插件最大限度地减少了Logstash实例的资源需求。
在典型的用例中,Filebeat与Logstash分别在独立机器上运行。 为了本教程的目的,Logstash和Filebeat在同一台机器上运行。
默认的Logstash安装包含Beats输入插件。 Beats输入插件使Logstash能够从Elastic Beats框架接收事件,这意味着任何Beat框架编写的Beat可以将事件数据发送到Logstash,例如Packetbeat和Metricbeat。
要在您的数据源计算机上安装Filebeat,请从Filebeat产品页面下载相应的软件包。 您还可以参阅Beats文档中的Filebeat入门以获取其他安装说明。
安装Filebeat后,您需要对其进行配置。 打开位于Filebeat安装目录中的filebeat.yml文件,并用以下行替换内容。 确保路径指向您之前下载的示例Apache日志文件logstash-tutorial.log:
保存您的更改。
为了简化配置,您不会像在真实世界的场景中那样指定TLS / SSL设置。
在数据源计算机上,使用以下命令运行Filebeat:
sudo ./filebeat -e -c filebeat.yml -d "publish"
如果以root身份运行Filebeat,则需要更改配置文件的所有权(请参阅Beats平台参考中的配置文件所有权和权限)。
Filebeat将尝试在端口5044上连接。在Logstash以一个活动的Beats插件开始之前,该端口上将不会有任何答案,因此您在该端口上无法连接的任何消息现在都是正常的。
为Filebeat输入配置Logstash
请参考Filebeat入门
创建first-pipeline.conf
input {
beats {
port => 5044
}
}
# The filter part of this file is commented out to indicate that it is
# optional.
# filter {
#
# }
output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
port => 5044 监听端口,接收Filebeat的数据
elasticsearch 数据输出到elasticsearch
要验证您的配置,请运行以下命令:
bin/logstash -f first-pipeline.conf --config.test_and_exit
–config.test_and_exit选项解析您的配置文件并报告任何错误。
如果配置文件通过配置测试,请使用以下命令启动Logstash:
bin/logstash -f first-pipeline.conf --config.reload.automatic
–config.reload.automatic选项启用自动配置重新加载,因此每次修改配置文件时都不必停止并重新启动Logstash。
当Logstash启动时,您可能会看到一条或多条有关Logstash的警告消息,而忽略了这些pipelines.yml文件。 您可以放心地忽略此警告。 pipelines.yml文件用于在单个Logstash实例中运行多个管道。 对于这里显示的示例,您正在运行一个管道。
如果你的管道工作正常,你应该看到一系列的事件写入控制台:
{
"@timestamp" => 2017-11-09T01:44:20.071Z,
"offset" => 325,
"@version" => "1",
"beat" => {
"name" => "My-MacBook-Pro.local",
"hostname" => "My-MacBook-Pro.local",
"version" => "6.0.0"
},
"host" => "My-MacBook-Pro.local",
"prospector" => {
"type" => "log"
},
"source" => "/path/to/file/logstash-tutorial.log",
"message" => "83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] \"GET /presentations/logstash-monitorama-2013/images/kibana-search.png HTTP/1.1\" 200 203023 \"http://semicomplete.com/presentations/logstash-monitorama-2013/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36\"",
"tags" => [
[0] "beats_input_codec_plain_applied"
]
}
...
更新插件
deb, rpm, and mac:
./bin/logstash-plugin update logstash-input-beats