新彩天欢迎您!
幻海优品

Logstash - 内部架构

在本章中,我们将讨论内部体系结构和Logstash的不同组件.

Logstash服务架构

Logstash处理日志来自不同的服务器和数据源,它的行为与托运人一样.托运人用于收集日志,这些日志安装在每个输入源中.像 Redis,Kafka RabbitMQ 这样的经纪人是保存索引器数据的缓冲区,可能有多个代理作为故障转移实例.

Lucene 这样的索引器用于索引日志以获得更好的搜索性能,然后输出存储在Elasticsearch或其他输出目标中.输出存储中的数据可用于Kibana和其他可视化软件.

Logstash服务架构

Logstash内部架构

Logstash管道包含三个组件输入,过滤器输出.输入部分负责指定和访问输入数据源,例如 Apache Tomcat服务器的日志文件夹.

Logstash内部架构

解释Logstash管道的示例

Logstash配置文件包含有关这三个组件的详细信息Logstash.在这种情况下,我们创建一个名为 Logstash.conf 的文件名.

以下配置从输入日志"inlog.log"中捕获数据并写入到没有任何过滤器的输出日志"outlog.log".

Logstash.conf

Logstash配置文件只复制

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

inlog.log

以下代码块显示输入日志数据.

  Hello it1352.com

outlog.log

Logstash输出包含消息字段中的输入数据. Logstash还为输出添加了其他字段,如时间戳,输入源路径,版本,主机和标签.

{   "path":"C:/tpwork/logstash/bin/log/inlog1.log",   "@timestamp":"2016-12-13T02:28:38.763Z",   "@version":"1", "host":"Dell-PC",   "message":" Hello IT屋.com", "tags":[]}

尽可能地,Logstash的输出包含的不仅仅是通过输入日志提供的数据.输出包含源路径,时间戳,版本,主机名和标记,用于表示错误等额外消息.

我们可以使用过滤器处理数据并使其有用我们的需求.在下一个示例中,我们使用过滤器来获取数据,这会将输出限制为仅使用动词(例如GET或POST)后跟唯一资源标识符的数据.

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 /IT屋/LogstashInput 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 /IT屋/logstash", "uri":"/IT屋/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"]}

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除