Logstash笔记(二) —-input插件


在”helloWorld”示例中,我们已经见到并介绍了Logstash的运行流程和配置的基础语法。请记住一个原则:Logstash 配置一定要有一个 input 和一个 output。在演示过程中,如果没有写明 input,默认就会使用 “hello world” 里我们已经演示过的input/stdin,同理,没有写明的 output 就是output/stdout 如果有什么问题的话,请查看该文档http://udn.yyuap.com/doc/logstash-best-practice-cn/input/index.html。以下是input插件的具体解释: (1),标准输入。type和tags是logstash事件中特殊的字段。type用来标记事件类型 —— 我们肯定是提前能知道这个事件属于什么类型的。而tags则是在数据处理过程中,由具体的插件来添加或者删除的。(2).读取文件。Logstash 使用一个名叫FileWatch的 Ruby Gem 库来监听文件变化。这个库支持 glob 展开文件路径,而且会记录一个叫.sincedb的数据库文件来跟踪被监听的日志文件的当前读取位置。所以,不要担心 logstash 会漏过你的数据.解释:
有一些比较有用的配置项,可以用来指定FileWatch库的行为:discover_intervallogstash 每隔多久去检查一次被监听的path下是否有新文件。默认值是 15 秒。exclude不想被监听的文件可以排除出去,这里跟path一样支持 glob 展开。sincedb_path如果你不想用默认的$HOME/.sincedb(Windows 平台上在C:WindowsSystem32configsystemprofile.sincedb),可以通过这个配置定义 sincedb 文件到其他位置。sincedb_write_intervallogstash 每隔多久写一次 sincedb 文件,默认是 15 秒。stat_intervallogstash 每隔多久检查一次被监听文件状态(是否有更新),默认是 1 秒。start_positionlogstash 从什么位置开始读取文件数据,默认是结束位置,也就是说 logstash 进程会以类似tail -F的形式运行。如果你是要导入原有数据,把这个设定改成 “beginning”,logstash 进程就从头开始读取,有点类似cat,但是读到最后一行不会终止,而是继续变成tail -F。通常你要导入原有数据进 Elasticsearch 的话,你还需要filter/date插件来修改默认的”@timestamp” 字段值。稍后会学习这方面的知识。FileWatch只支持文件的绝对路径,而且会不自动递归目录。所以有需要的话,请用数组方式都写明具体哪些文件。LogStash::Inputs::File只是在进程运行的注册阶段初始化一个FileWatch对象。所以它不能支持类似 fluentd 那样的path => "/path/to/%{+yyyy/MM/dd/hh}.log"写法。达到相同目的,你只能写成path => "/path/to/*/*/*/*.log"start_position仅在该文件从未被监听过的时候起作用。如果 sincedb 文件中已经有这个文件的 inode 记录了,那么 logstash 依然会从记录过的 pos 开始读取数据。开发云主机域名所以重复测试的时候每回需要删除 sincedb 文件。因为 windows 平台上没有 inode 的概念,Logstash 某些版本在 windows 平台上监听文件不是很靠谱。windows 平台上,推荐考虑使用 nxlog 作为收集端
(3).TCP输入。未来你可能会用 Redis 服务器或者其他的消息队列系统来作为 logstash broker 的角色。不过 Logstash 其实也有自己的 TCP/UDP 插件,在临时任务的时候,也算能用,尤其是测试环境。备注:先关闭8888端口的应用,再开启,会输出如下日志。
(4)编码插件Codec: Codec 是 logstash 从 1.3.0 版开始新引入的概念(Codec来自Coder/decoder 两个单词的首字母缩写)。在此之前,logstash 只支持纯文本形式输入,然后以过滤器处理它。但现在,我们可以在输入期处理不同类型的数据,这全是因为有了codec设置。我们在第一个“Hello world”列子中已经用过Codec编码了,rubydebug就是一种Codec虽然它一般只会在stdout插件中,作为配置测试或者调试的工具。(4.1)采用JSON编码,直接输入预定义好的 JSON 数据,这样就可以省略掉 filter/grok 配置!配置实例以nginx为例,具体步骤如下:a,编辑配置nginx配置文件nginx.conf。把原先的配置文件注释掉,换成json的格式,然后重启下你的nginxb,编辑下你的logstash配置文件json.confc,logstash加载启动测试:
(4.2)合并多行数据(Multiline):有些时候,应用程序调试日志会包含非常丰富的内容,为一个事件打印出很多行内容。这种日志通常都很难通过命令行解析的方式做分析。logstash 正为此准备好了codec/multiline插件。multiline 插件也可以用于其他类似的堆栈式信息,比如 linux 的内核日志。当启动logstash及配置文件时会让你输入一连串的字符,知道输入[ 时才终止当前输入,如下:[总之,这个插件的原理很简单,就是把当前行的数据添加到前面一行后面,直到新进的当前行匹配 “[” 正则为止。这个正则还可以用 grok 表达式。

相关推荐: linux怎么安装telnet服务

今天小编就为大家带来一篇linux怎么安装telnet服务的文章。小编觉得挺实用的,为此分享给大家做个参考。一起跟随小编过来看看吧。关闭防火墙:1、安装telnet服务如果未安装,配置YUM源,使用yum install telnet telnet-serve…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 04/02 15:40
Next 04/02 15:40