设置高级的Logstash 管道

摘要:
设置高级Logstash管道:在许多实际示例中,Logstash管线具有一个或多个输入、过滤器和输出插件。在本节中,创建一个Logstash配置文件来指定插件,并讨论每个插件的作用。Logstash配置文件定义了Logstash管道。上面的示例假设Logstash和Elasticsearch在同一个实例中运行。
设置高级的Logstash 管道:

一个Logstash 管道在很多实用例子有一个或者多个输入,filter,和output 插件。

本节中 创建Logstash 配置文件来指定那些插件和讨论每个插件做什么


Logstash 配置文件定义你的Logstash 管道。当你开始一个Logstash 例子,实用 -f <path/to/file> 

选项来指定配置文件,定义实例的管道。


一个Logstash 管道有2个需要的元素, 输入和输出,和一个可选的元素,filter.

input 插件吸收源数据,

filter 插件修改你指定的数据,

ouput 插件写数据到一个目的地



下面的文本表示配置管道的骨架:

# The # character at the beginning of a line indicates a comment. Use
# comments to describe your configuration.
input {
}
# The filter part of this file is commented out to indicate that it is
# optional.
# filter {
#
# }
output {
}



filter 部分是注释掉的表明它是可选的

这个骨架是非功能的,因为输入 和输出章节没有任何有效的定义。在本教程中的例子创建配置文件来解决特定的使用案例。



解析 Apache Logs 到Elasticsearch:



这个例子 创建一个Logstash 管道让Apache web logs 作为输入, 解析那些logs 来创建特定的,命令的字段从logs,

写解析的数据到一个Elasticsearch cluster.


你可以下载相同的数据集用于这个例子,解压文件:

配置Logstash 用于文件输入:

开始你的Logstash 管道, 配置Logstash 实例从一个使用文件输入的插件读取数据

Edit the first-pipeline.conf file to add the following text:

input {
    file {
        path => "/path/to/logstash-tutorial.log"
        start_position => beginning 
        ignore_older => 0 
    }
}


默认文件的行为input 插件来监控一个文件对于新的信息, 方式类似于UNIX tail -f 命令。

改变这个默认的行为和处理整个文件, 我们需要指定位置 Logstash 开始处理文件的位置


默认的文件输入插件的行为是忽视文件最后修改是大于86400s,来改变这个默认行为和处理文件(一天前的文件),

我们需要指定忽略的日期


解析 Web Logs 使用Grok Filter 插件:



grok filter 插件是 其中的一种插件默认在Logstash里是可用的,对于细节如何管理Logstash 插件,

查看插件管理器的文档内容。


因为grok 过滤插件寻找模式在进来的日志数据,配置需要你做出如何确定模式 。

从Web服务器典型的行看起来像这样:

83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-search.png
HTTP/1.1" 200 203023 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel
Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"


在开始行的IP地址 是很容易识别, 在括号中的时间戳,在这种情况下,使用 %{COMBINEDAPACHELOG} 

grok 模式,Apache log 使用下面的模式 :

Information

Field Name

IP Address

clientip

User ID

ident

User Authentication

auth

timestamp

timestamp

HTTP Verb

verb

Request body

request

HTTP Version

httpversion

HTTP Status Code

response

Bytes served

bytes

Referrer URL

referrer

User agent

agent

filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
}


在处理后,简单的行有下面的JSON 输出:

{
"clientip" : "83.149.9.216",
"ident" : ,
"auth" : ,
"timestamp" : "04/Jan/2015:05:13:42 +0000",
"verb" : "GET",
"request" : "/presentations/logstash-monitorama-2013/images/kibana-search.png",
"httpversion" : "HTTP/1.1",
"response" : "200",
"bytes" : "203023",
"referrer" : "http://semicomplete.com/presentations/logstash-monitorama-2013/",
"agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 

Safari/537.36"
}

Indexing Parsed 数据到elasticsearch:



现在web日志 是被分解成多个特定的字段,Logstash 管道可以索引数据到一个Elasticsearch cluster.

output {
    elasticsearch {
    }
}



在这个配置里,Logstash 使用http 协议来连接Elasticsearch。 上面的例子假设Logstash和Elasticsearch  运行在相同的实例。

你可以指定一个远程的实例使用主机配置像 hosts => "es-machine:9092".


加强你的数据使用 Geoip 过滤插件




除了解析log data 一伙的更好的搜索,filter 插件可以得到补充的信息从存在的数据。

比如一个例子,geoip 插件查找ip地址,获得地理位置信息从地址,增加位置信息到logs.



配置你的Logstash 实例 使用geoip 过滤插件通过增加下面的行到你的filter 章节:

geoip {
    source => "clientip"
}


 geoip plugin 配置需要数据是已经定义作为单独的字段,确保geoip 章节是在grok章节后面


指定字段的名字 包含IP地址来查询,在这里,字段名是clientip


测试你的初始化管道:

在这一点上,你的first-pipeline.conf 有input,filter,和output 章节合适的配置,看起来像这样;

input {
    file {
        path => "/Users/palecur/logstash-1.5.2/logstash-tutorial-dataset"
        start_position => beginning
    }
}
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }
}
output {
    elasticsearch {}
    stdout {}
}

校验你的配置,使用下面的命令:

bin/logstash -f first-pipeline.conf --configtest


多个输入和输出插件;


信息你需要管理经常来自多个不同的源,使用例子可以需要多个目的地对于你的数据。

你的Logstash  管道可以使用多个input 和output 插件来处理那些需求:


这个例子创建一个Logstash 管道 输入从一个 Twitter feed 和 Filebeat client, 


然后发送信息到 Elasticsearch cluster 也写信息到文件

免责声明:文章转载自《设置高级的Logstash 管道》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux开启nscd服务缓存加速win10安装docker步骤下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

logstash数据迁移

logstash是一个非常强大的数据迁移工具。这里主要记录今天使用到的几个简单用法。 其中比较需要注意的是 迁移到elasticsearch的时候,output 的 elasticsearch 中的 mappings 最好自己建。虽然不自己建立logstash会自动建立,但是自动建立出来的mappings里面有些参数可能就不是我们预期想要的,导致再查询的时...

一、CentOS7.4下Elastic Stack 6.2.4日志系统搭建

Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速,近实时地存储,搜索和分析大量数据。它通常用作支持具有复杂搜索功能和需求的应用程序的底层引擎/技术。         Logstash是一个开源的用于收集,分析和存储日志的工具。         Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ...

【原创】大数据基础之Logstash(3)应用之file解析(grok/ruby/kv)

从nginx日志中进行url解析 /v1/test?param2=v2&param3=v3&time=2019-03-18%2017%3A34%3A14->{'param1':'v1','param2':'v2','param3':'v3','time':'2019-03-18 17:34:14'} nginx日志示例: 1.119....

logstash使用supervisord

  关于supervisord: supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起。 一...

Elasticsearch logstsh同步mysql数据到ES中

1、准备: 1) 启动前面搭建的ES集群, 192.168.127.130,192.168.127.128,192.168.127.129 2) 准备要同步的数据库和数据 数据库所在的服务器IP为192.168.1.104 数据库端口为3306 数据库名shop,表名items items的表结构如下 items表的数据如下 这里有两条数据,实际环境会...

大数据采集和抽取怎么做?这篇文章终于说明白了!

本文来源于公众号【胖滚猪学编程】,转载请注明出处! 关于数据中台的概念和架构,我们在大白话 六问数据中台和数据中台全景架构及模块解析!一文入门中台架构师!两篇文章中都说明白了。从这一篇文章开始分享中台落地实战。 其实无论是数据中台还是数据平台,数据无疑都是核心中的核心,所以闭着眼睛想都知道数据汇聚是数据中台/平台的入口。纵观众多中台架构图,数据采集与汇聚都...