1. 引言

之前一篇文章《Logstash 介绍及linux下部署》,我们实现了logstash的安装以及简单的控制台标准输入输出测试,那么logstash能不能做更多的事情呢?答案是肯定的,logstash就是为了处理日志数据而生的。一个最直接的应用是,我们从事web开发,将应用放到apache中,apache会生成大量的访问日志,那么如何实现对大量访问日志的搜集、处理、分析呢?logstash里面各种优秀的插件可以帮我们做这些事情。

2. logstash插件管理

在logstash的目录下,通过命令:

bin/logstash-plugin -h

我们可以看到logstash plugin管理的命令帮助

Usage:
bin/logstash-plugin [OPTIONS] SUBCOMMAND [ARG] ... Parameters:
SUBCOMMAND subcommand
[ARG] ... subcommand arguments Subcommands:
list List all installed Logstash plugins
install Install a Logstash plugin
remove Remove a Logstash plugin
update Update a plugin
pack Package currently installed plugins, Deprecated: Please use prepare-offline-pack instead
unpack Unpack packaged plugins, Deprecated: Please use prepare-offline-pack instead
generate Create the foundation for a new plugin
uninstall Uninstall a plugin. Deprecated: Please use remove instead
prepare-offline-pack Create an archive of specified plugins to use for offline installation Options:
-h, --help print help

比较常用的有:

bin/logstash-plugin list                    #查看已安装插件列表
bin/logstash-plugin install plugin_name #安装插件
bin/logstash-plugin update plugin_name #卸载插件
bin/logstash-plugin uninstall plugin_name #卸载插件

我们通过list命令查看插件列表时候,无非下列三种类型的插件:

logstash-codec-*    #编码解码插件
logstash-filter-* #数据处理插件
logstash-input-* #输入插件
logstash-output-* #输出插件

这里需要完善上一篇文章的一个概念。Logstash 不只是一个input | filter | output 的数据流,而是一个 input | decode | filter | encode | output 的数据流!上面插件中的codec 就是用来 decode、encode 事件的。

3. 利用logstash-filter-grok完成Apache访问日志处理

logstash 给我们提供了很多插件,上一篇文章中也提到了Grok 目前是logstash最好的方式对非结构化日志数据解析成结构化和可查询化 ,那么我们今天就用Grok来处理apache的访问日志。

为了说明该插件的作用,一切从简,我们只是从标准输入输入一条Apache的访问日志,然后通过grok插件处理,然后输出到控制台。

3.1 新建配置文件apache.conf

input {
stdin {}
} filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}"}
}
} output {
stdout{codec=>rubydebug}
}

3.2 启动logstash

bin/logstash -f tomcat.conf

3.3 测试数据

测试数据为:

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"

等待logstash启动完成后,我们输入测试数据到控制台中,看到logstash的输出如下:

{
"request" => "/presentations/logstash-monitorama-2013/images/kibana-search.png",
"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\"",
"auth" => "-",
"ident" => "-",
"verb" => "GET",
"message" => "Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36\"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\"",
"referrer" => "\"http://semicomplete.com/presentations/logstash-monitorama-2013/\"",
"@timestamp" => 2017-09-15T08:17:55.133Z,
"response" => "200",
"bytes" => "203023",
"clientip" => "83.149.9.216",
"@version" => "1",
"host" => "yangyue",
"httpversion" => "1.1",
"timestamp" => "04/Jan/2015:05:13:42 +0000"
}

截图如下: 

从处理结果我们可以看到,referrer、时间、请求ip、相应状态码等都被切割出来了,这非常方便我们之后使用ElasticSearch进行搜索。当然,logstash还有很多其他优秀的插件,大家可以多试试。比如从kafka中接收输入,数据定向到ElasticSearch或kafka中等,这些插件可以帮助我们省去很多麻烦,我们后面再聊。

利用Logstash plugins做更多的事情的更多相关文章

  1. spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)转

    关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) 应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用 ...

  2. spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)

    关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) 应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用 ...

  3. 利用 yEd 软件做元数据管理

    利用 yEd 软件做元数据管理 yEd Diagram editor 是我常用的 flow chart 制图工具, 另外我也用它画 ER 和 use case 图. 总结一下我喜欢 yEd 的原因:1 ...

  4. 利用 Django admin 完成更多任务(转)

    利用 Django admin 完成更多任务   Django admin Django 为未来的开发人员提供了许多功能:一个成熟的标准库,一个活跃的用户社区,以及 Python 语言的所有好处.虽然 ...

  5. 第一百四十三节,JavaScript,利用封装库做百度分享

    JavaScript,利用封装库做百度分享 效果图 html代码 <div id="share"> <h2>分享到</h2> <ul> ...

  6. 以P2P网贷为例互联网金融产品如何利用大数据做风控?

    以P2P网贷为例互联网金融产品如何利用大数据做风控?   销售环节 了解客户申请意愿和申请信息的真实性:适用于信贷员模式. 风控关键点 亲见申请人,亲见申请人证件,亲见申请人签字,亲见申请人单位. 审 ...

  7. 如果一个网站存在CSRF漏洞,可以通过CSRF漏洞做下面那些事情?

    如果一个网站存在CSRF漏洞,可以通过CSRF漏洞做下面那些事情? 答:跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求.利用受害者在被攻击网站已经获取的注册凭证 ...

  8. 转:面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”

    转自:http://jeromecen1021.blog.163.com/blog/static/18851527120117274624888/ 面试题目: 地球人都知道,Java有个东西叫垃圾收集 ...

  9. /proc/sysrq-trigger该文件能做些什么事情-转载

    /proc/sysrq-trigger该文件能做些什么事情呢? # 立即重新启动计算机 (Reboots the kernel without first unmounting file system ...

随机推荐

  1. java 蓝桥杯算法提高 _2最大最小公倍数

    解题思路: 1. n是奇数,那就最大的三个数相乘2. n是偶数,得分两种情况了, ①如果n不是3的倍数,那就s=n*(n-1)*(n-3)---n与n-2同为偶数,故排除一个n-2: ②n是3的倍数, ...

  2. 如何了解一个Web项目

    一:学会如何读一个JavaWeb项目源代码 步骤:表结构->web.xml->mvc->db->spring ioc->log->代码 1.先了解项目数据库的表结构 ...

  3. Node.js基本使用(超基础)

    Node.js是什么 Node.js是一个能够在服务器端运行JavaScript的开放源代码.跨平台JavaScript运行环境 Node采用Google开发的V8引擎运行js代码,使用事件驱动.非阻 ...

  4. 在IIS和Nginx上通过代理部署基于ant-design-pro前端框架开发的应用

    一.本文解决的主要问题 通过对前端静态资源站点进行代理服务设置,实现对后端API接口的代理,从而实现前端的独立部署,即通过代理的设置实现对http://IP0:Port0/api/xxx的请求转发至h ...

  5. jQuery自动截取文字长度,超过部分

    <html> <head>     <meta charset="utf-8">     <script src="js/jqu ...

  6. BZOJ 2243 染色 (线段树+树链剖分)

    2243: [SDOI2011]染色 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 9895  Solved: 3735[Submit][Status ...

  7. 什么是awt ?

    http://docs.oracle.com/javase/6/docs/technotes/guides/awt/ Abstract Window Toolkit (AWT) The Abstrac ...

  8. iPhone Development – core data relationships tutorial part 1

    I’m going to start a short series on Core Data relationships and maybe throw in some general Core Da ...

  9. 洛谷P4234 最小差值生成树(lct动态维护最小生成树)

    题目描述 给定一个标号为从 11 到 nn 的.有 mm 条边的无向图,求边权最大值与最小值的差值最小的生成树. 输入输出格式 输入格式:   第一行两个数 n, mn,m ,表示图的点和边的数量. ...

  10. 第几天——第九届蓝桥杯C语言B组(省赛)第一题

    原创 标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 这题是送分题,只需要注意一下2000年 ...