Logstash 内部架构
Logstash 管道由三个组件组成Input, Filters和Output. 输入部分负责指定和访问输入数据源,如日志文件夹Apache Tomcat Server.
解释 Logstash 管道的示例
Logstash 配置文件包含有关 Logstash 三个组件的详细信息。在这种情况下,我们正在创建一个名为Logstash.conf.
以下配置从输入日志“inlog.log”捕获数据,并将其写入输出日志“outlog.log”,没有任何过滤器。
Logstash.conf
Logstash 配置文件只是从inlog.log使用输入插件的文件并将日志数据刷新到outlog.log使用输出插件的文件。
input {
file {
path => "C:/tpwork/logstash/bin/log/inlog.log"
}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/outlog.log"
}
}
运行 Logstash
使用 Logstash–f用于指定配置文件的选项。
C:\logstash\bin> logstash –f logstash.conf
登录日志
以下代码块显示了输入日志数据。
输出日志
Logstash 输出包含消息字段中的输入数据。Logstash 还将其他字段添加到输出中,例如时间戳、输入源路径、版本、主机和标签。
{
"path":"C:/tpwork/logstash/bin/log/inlog1.log",
"@timestamp":"2016-12-13T02:28:38.763Z",
"@version":"1", "host":"Dell-PC",
"message":" Hello cainiaoya.com", "tags":[]
}
正如您所见,Logstash 的输出包含的不仅仅是通过输入日志提供的数据。输出包含 Source Path、Timestamp、Version、Hostname 和 Tag,用于表示错误等额外消息。
我们可以使用过滤器来处理数据并使其对我们的需求有用。在下一个示例中,我们使用过滤器来获取数据,这将输出限制为仅具有诸如 GET 或 POST 之类的动词后跟一个Unique Resource Identifier.
Logstash.conf
在这个 Logstash 配置中,我们添加了一个名为grok过滤掉输入数据。与模式序列输入日志匹配的输入日志事件仅到达输出目的地时出错。Logstash 在输出事件中添加了一个名为“_grokparsefailure”的标签,该标签与 grok 过滤器模式序列不匹配。
Logstash 提供了许多内置的正则表达式模式来解析流行的服务器日志,如 Apache。这里使用的模式需要一个动词,如 get、post 等,后跟一个统一的资源标识符。
input {
file {
path => "C:/tpwork/logstash/bin/log/inlog2.log"
}
}
filter {
grok {
match => {"message" => "%{WORD:verb} %{URIPATHPARAM:uri}"}
}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/outlog2.log"
}
}
运行 Logstash
我们可以使用以下命令运行 Logstash。
C:\logstash\bin> logstash –f Logstash.conf
inlog2.log
我们的输入文件包含两个由默认分隔符分隔的事件,即新行分隔符。第一个事件与 GROk 中指定的模式匹配,而第二个事件不匹配。
GET /jc2182/Logstash
Input 1234
outlog2.log
我们可以看到第二个输出事件包含“_grokparsefailure”标签,因为它与 grok 过滤器模式不匹配。用户还可以使用‘if’输出插件中的条件。
{
"path":"C:/tpwork/logstash/bin/log/inlog2.log",
"@timestamp":"2016-12-13T02:47:10.352Z","@version":"1","host":"Dell-PC","verb":"GET",
"message":"GET /jc2182/logstash", "uri":"/jc2182/logstash", "tags":[]
}
{
"path":"C:/tpwork/logstash/bin/log/inlog2.log",
"@timestamp":"2016-12-13T02:48:12.418Z", "@version":"1", "host":"Dell-PC",
"message":"t 1234\r", "tags":["_grokparsefailure"]
}