博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
logstash 介绍
阅读量:7039 次
发布时间:2019-06-28

本文共 3580 字,大约阅读时间需要 11 分钟。

hot3.png

下来我们开始了解更多高级的配置项。在下面的章节,我们着重讨论logstash一些核心的特性,以及如何和logstash引擎交互的。

事件的生命周期

Inputs,Outputs,Codecs,Filters构成了Logstash的核心配置项。Logstash通过建立一条事件处理的管道,从你的日志提取出数据保存到Elasticsearch中,为高效的查询数据提供基础。为了让你快速的了解Logstash提供的多种选项,让我们先讨论一下最常用的一些配置。更多的信息,请参考  。

Inputs

input 及输入是指日志数据传输到Logstash中。其中常见的配置如下:

  • file:从文件系统中读取一个文件,很像UNIX命令 "tail -0a"
  • syslog:监听514端口,按照RFC3164标准解析日志数据
  • redis:从redis服务器读取数据,支持channel(发布订阅)和list模式。redis一般 在Logstash消费集群中 作为"broker"角色,保存events队列共Logstash消费。
  • lumberjack:使用lumberjack协议来接收数据,目前已经改为 。

Filters

Fillters 在Logstash处理链中担任中间处理组件。他们经常被组合起来实现一些特定的行为来,处理匹配特定规则的事件流。常见的filters如下:

  • grok:解析无规则的文字并转化为有结构的格式。Grok 是目前最好的方式来将无结构的数据转换为有结构可查询的数据。有120多种匹配规则,会有一种满足你的需要。
  • mutate:mutate filter 允许改变输入的文档,你可以从命名,删除,移动或者修改字段在处理事件的过程中。
  • drop:丢弃一部分events不进行处理,例如:debug events。
  • clone:拷贝 event,这个过程中也可以添加或移除字段。
  • geoip:添加地理信息(为前台kibana图形化展示使用)

Outputs

outputs是logstash处理管道的最末端组件。一个event可以在处理过程中经过多重输出,但是一旦所有的outputs都执行结束,这个event也就完成生命周期。一些常用的outputs包括:

  • elasticsearch:如果你计划将高效的保存数据,并且能够方便和简单的进行查询...Elasticsearch是一个好的方式。是的,此处有做广告的嫌疑,呵呵。
  • file:将event数据保存到文件中。
  • graphite:将event数据发送到图形化组件中,一个很流行的开源存储图形化展示的组件。  。
  • statsd:statsd是一个统计服务,比如技术和时间统计,通过udp通讯,聚合一个或者多个后台服务,如果你已经开始使用statsd,该选项对你应该很有用。

Codecs

codecs 是基于数据流的过滤器,它可以作为input,output的一部分配置。Codecs可以帮助你轻松的分割发送过来已经被序列化的数据。流行的codecs包括 json,msgpack,plain(text)。

  • json:使用json格式对数据进行编码/解码
  • multiline:将汇多个事件中数据汇总为一个单一的行。比如:java异常信息和堆栈信息

获取完整的配置信息,请参考  中 "plugin configuration"部分。

更多有趣Logstash内容

使用配置文件

使用-e参数 在命令行中指定配置是很常用的方式,不过如果需要配置更多设置则需要很长的内容。这种情况,我们首先创建一个简单的配置文件,并且指定logstash使用这个配置文件。如我们创建一个文件名是"logstash-simple.conf"的配置文件并且保存在和Logstash相同的目录中。内容如下:

 
  1. input { stdin { } }

  2. output {

  3. elasticsearch { host => localhost }

  4. stdout { codec => rubydebug }

  5. }

接下来,执行命令:

bin/logstash -f logstash-simple.conf

我们看到logstash按照你刚刚创建的配置文件来运行例子,这样更加的方便。注意,我们使用-f参数来从文件获取而代替之前使用-e参数从命令行中获取配置。以上演示非常简单的例子,当然解析来我们继续写一些复杂一些的例子。

过滤器

filters是一个行处理机制将提供的为格式化的数据整理成你需要的数据,让我们看看下面的一个例子,叫grok filter的过滤器。

 
  1. input { stdin { } }

  2.  
  3. filter {

  4. grok {

  5. match => { "message" => "%{COMBINEDAPACHELOG}" }

  6. }

  7. date {

  8. match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]

  9. }

  10. }

  11.  
  12. output {

  13. elasticsearch { host => localhost }

  14. stdout { codec => rubydebug }

  15. }

执行Logstash按照如下参数:

bin/logstash -f logstash-filter.conf

现在粘贴下面一行信息到你的终端(当然Logstash就会处理这个标准的输入内容):

127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] "GET /xampp/status.php HTTP/1.1" 200 3891 "http://cadenza/xampp/navi.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0"

你将看到类似如下内容的反馈信息:

 
  1. {

  2. "message" => "127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"",

  3. "@timestamp" => "2013-12-11T08:01:45.000Z",

  4. "@version" => "1",

  5. "host" => "cadenza",

  6. "clientip" => "127.0.0.1",

  7. "ident" => "-",

  8. "auth" => "-",

  9. "timestamp" => "11/Dec/2013:00:01:45 -0800",

  10. "verb" => "GET",

  11. "request" => "/xampp/status.php",

  12. "httpversion" => "1.1",

  13. "response" => "200",

  14. "bytes" => "3891",

  15. "referrer" => "\"http://cadenza/xampp/navi.php\"",

  16. "agent" => "\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\""

  17. }

正像你看到的那样,Logstash(使用了grok过滤器)能够将一行的日志数据(Apache的"combined log"格式)分割设置为不同的数据字段。这一点对于日后解析和查询我们自己的日志数据非常有用。比如:HTTP的返回状态码,IP地址相关等等,非常的容易。很少有匹配规则没有被grok包含,所以如果你正尝试的解析一些常见的日志格式,或许已经有人为了做了这样的工作。如果查看详细匹配规则,参考  。

另外一个过滤器是date filter。这个过滤器来负责解析出来日志中的时间戳并将值赋给timestame字段(不管这个数据是什么时候收集到logstash的)。你也许注意到在这个例子中@timestamp字段是设置成December 11, 2013, 说明logstash在日志产生之后一段时间进行处理的。这个字段在处理日志中回添到数据中的,举例来说... 这个值就是logstash处理event的时间戳。

转载于:https://my.oschina.net/xcOschina/blog/1845348

你可能感兴趣的文章
android 4.2.2_r1 SDK的一个错误
查看>>
Shutdown the ldap server in the domino
查看>>
同一word文档如何纵版、横版混用
查看>>
我的友情链接
查看>>
开启远程控制
查看>>
Mysql 5.6.18解压包版在Rhel6.7上安装
查看>>
Redis参数汇总
查看>>
Objective-C底层数据结构
查看>>
TPYBoard开发板搭建WHID通道实现隐秘通信
查看>>
未来程序员都会丢了饭碗么?
查看>>
Flink内部计算之EventTime WaterMark-调研最终版(终结篇)---思考
查看>>
源码编译安装PHP7
查看>>
Windows7首次使用XenApp初始化操作手册
查看>>
ubuntu15.04安装vm11
查看>>
设计模式——状态模式(State Pattern)
查看>>
Linux下的tar命令
查看>>
cisco路由器综合实验之二 访问控制列表的应用(ACL)
查看>>
Android中146种颜色对应的xml色值
查看>>
dokcer基础命令-详解
查看>>
rust语言初体验
查看>>