文档章节

logstash 介绍

1
 18356087258
发布于 07/12 16:57
字数 1667
阅读 15
收藏 0

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

事件的生命周期

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

Inputs

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

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

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数据发送到图形化组件中,一个很流行的开源存储图形化展示的组件。 http://graphite.wikidot.com/ 。
  • statsd:statsd是一个统计服务,比如技术和时间统计,通过udp通讯,聚合一个或者多个后台服务,如果你已经开始使用statsd,该选项对你应该很有用。

Codecs

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

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

获取完整的配置信息,请参考 Logstash文档 中 "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包含,所以如果你正尝试的解析一些常见的日志格式,或许已经有人为了做了这样的工作。如果查看详细匹配规则,参考 logstash grok patterns 。

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

本文转载自:https://blog.csdn.net/allthesametome/article/details/47356379

共有 人打赏支持
1
粉丝 1
博文 6
码字总数 1206
作品 1
合肥
私信 提问
利用filebeat推送mysql慢查询日志

介绍通过利用filebeat来收集mysql的慢查询日志,logstash解析后推送到elasticsearch,并创建自定义的索引,最终通过kibana进行web展示。 环境介绍: 操作系统版本:CentOS Linux release 7....

arezone
2017/04/21
0
0
[Logstash]使用详解

  Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。   本文针对官方文档进行...

青夜之衫
2017/12/04
0
0
logstash推送mysql慢查询日志

本文将将介绍通过logstash用来收集mysql的慢查询日志,然后推送给elasticsearch,并创建自定义的索引,最终通过kibana进行web展示。 环境介绍: 操作系统版本:centos6.6 64bit Mysql版本: ...

ylw6006
2015/12/03
0
0
Logstash迁移Elasticsearch数据方法解读

Elasticsearch中数据搬迁是工程师们经常会做的,有时是为了集群迁移、有时是为了数据备份、有时是为了升级等等,迁移的方式也有很多种,比如说通过elasticsearch-dump、通过snapshot、甚至是...

pcdog
05/21
0
0
logstash日志系统搭建

本文将介绍如果使用logstash,elasticsearch,kibana搭建一个日志分析系统。Logstash支持的日志类型非常的广泛,支持nginx,postfix.windows系统日志,java日志以及mysql慢查询日志,Docker日...

ylw6006
2015/12/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Fragment 退出动画导致fragment退出失败问题(罕见问题)

问题背景: Fragment: A , B; A is hidden; B is added; 操作: 返回键的时候执行操作: B transaction remove ; A transaction attach; 执行移除动画。transaction.setCustomAnimations(i......

Carlyle_Lee
19分钟前
1
0
Java并发编程学习四:CountDownLatch,CyclicBarrier,Semaphore以及原子类

上篇文章线程同步的关键字以及理解中介绍了一下多线程同步协作之间经常使用的关键字,今天这篇文章就介绍一下一些同步类以及原子类的使用吧。Java中提供了不少的同步类,如:CountDownLatch,...

JerryLin123
26分钟前
1
0
面试专题-框架

Spring Spring有哪些特点? 使用Spring有什么好处? 1 应用解耦 2 依赖注入 3 AOP 4 事务管理 5 MVC 6 集成开发 Spring应用程序看起来像什么? 一些接口及其实现 一些POJO类 一些xml配置文件 ...

这很耳东先生
37分钟前
2
0
锁和分布式锁

锁的由来: 多线程环境中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,这就需要某种机制来保证只有满足某个条件(获取锁成功)的线程才能访问资源...

Ala6
37分钟前
3
0
Vue + Vue-CLI + Mint-UI 移动端开发新手示例实战 - by dogstar

Vue + Vue-CLI + Mint-UI 移动端开发新手示例实战 - by dogstar 项目源代码,在码云上:https://gitee.com/dogstar/a-vue-mint-demo 快速使用 # 安装依赖npm install# 本地开发调试 lo...

暗夜在火星
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部