文档章节

logstash 介绍

1
 18356087258
发布于 07/12 16:57
字数 1667
阅读 6
收藏 0
点赞 0
评论 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
合肥
[Logstash]使用详解

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

青夜之衫
2017/12/04
0
0
logstash日志系统搭建

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

ylw6006
2015/12/02
0
0
利用filebeat推送mysql慢查询日志

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

arezone
2017/04/21
0
0
使用 Nlog 将日志打印到 Logstash 的监控接口

Logstash提供了多种监听日志打印的方式,而Nlog也提供了多种输出日志的方式,当Nlog的输出配置与Logstash的输入配置相对应,就能够让Nlog打印出来的日志都存储到Elasticsearch中 以下介绍3种...

VenyoWang
2016/10/26
481
0
ELK日志处理之使用logstash收集log4J日志

介绍一下如何从Java工程中导出log4J日志到Logstash。 一、log4j基础 不能免俗的官方介绍: Log4j 是一个使用 Java 语言编写的,可靠、快速、灵活的日志框架(API),使用 Apache Software Li...

napoay
2017/03/11
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用法实例

首先提供一些参考的网站: https://www.gitbook.com/book/chenryn/kibana-guide-cn http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html https://www.gitbook.com/book/chenryn/......

shawnplaying
2016/03/17
223
0
采用 Logstash 采集 tomcat access 日志和应用程序日志

Logstash 的安装 Logstash 的安装非常简单,直接官网下载对应的版本(需要和 Elasticsearch 的版本匹配)解压缩即可 # tar -zxvf logstash-2.3.2.tar.gz -C /usr/local/ # mv logstash-2.3.2...

walle-Liao
2016/04/30
3.5K
1
Logstash整合zabbix 过滤Nginx 错误日志并进行报警

通过logstash过滤nginx-error日志,筛选日志中比较严重报错,并进行报警。 由于网络上很多帖子都是要么写了怎么筛选报错,要么就只翻译了logstash-zabbix-output插件的使用说明,并没有一个完...

千_面
2017/05/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

EOS智能合约与DApp开发入门

EOS的是Block.One主导研发的一个区块链底层公链系统,它专门为支撑商业去中心化 应用(Decentralized Application)而设计,其代码开源。 比特币被称为区块链1.0,因为它开辟了数字加密货币的...

笔阁
16分钟前
0
0
编译cjson到dll

https://blog.csdn.net/mengzhisuoliu/article/details/52203724 编译完成后 是纯lua实现的json decode 的10倍以上...

梦想游戏人
26分钟前
0
0
JS基础- Date 对象

Date 对象 Date 对象用于处理日期和时间。 创建 Date 对象的语法: var myDate=new Date() 注释:Date 对象会自动把当前日期和时间保存为其初始值。 Date 对象属性 属性 描述 constructor 返...

ZHAO_JH
28分钟前
0
0
Python数据分析numpy(1)

Python开源的科学计算基础库 1.表示N维数组对象ndarray 2.线性代数、傅里叶变换、随机数生成 3.广播函数,整合c++、c 一.数据的维度 1.数据 2.数据维度 3.一维数据 (1)特点 (2)Python中的...

十年磨一剑3344
30分钟前
0
0
csv导入Hive脚本

from pyspark.sql import HiveContexthivec = HiveContext(sc) # 创建一个hivecontext对象用于写执行SQL,sc为sparkcontext# 拼接一个字段类型字符串str_s = 'label String,'...

gulf
33分钟前
0
0
TensorFlow 隐含层 拟合 异或运算

a⊕b = (¬a ∧ b) ∨ (a ∧¬b) 数据 X = [[0, 0], [0, 1], [1, 0], [1, 1]]Y = [[0], [1], [1], [0]] 单层网络只能拟合线性问题,由于异或是非线性问题,需要使用多层网络 输入和输出 [[...

阿豪boy
47分钟前
0
0
SVN 教程

http://www.runoob.com/svn/svn-tutorial.html

yeahlife
48分钟前
0
0
在Python中,不用while和for循环遍历列表

a = [1, 2, 3, 8, 9]def printlist(l, index): if index == len(l): return else: print(l[index]) printlist(l, index + 1)printlist(a,......

丁典
49分钟前
0
0
Kubernetes使用中发现的错误及解决

运行 kubectl dashboard 时报错: Error validating service: Error getting service kubernetes-dashboard: services "kubernetes-dashboard" not found 排查 kubectl get po --all-names......

哎码
54分钟前
0
0
在git上面找开源项目遇到的坑

1,不写安装环境。 2,不写包版本 3,半成品 4,写了自动部署脚本,但是里面没有都是用默认最新包名

NLGBZJ
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部