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