热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于logstash导入es库的配置文件的一些理解

参数类型是否必选默认值描述add_fieldhashNo{}在事件中加入一个fieldclose_oldernumberNo3600一个已经监听中的文件,如果超过这个值的时
参数 类型 是否必选 默认值 描述
add_field hash No {} 在事件中加入一个field
close_older number No 3600 一个已经监听中的文件,如果超过这个值的时间内没有更新内容,就关闭监听它的文件句柄。默认是3600秒,即一个小时。【时间点短】
codec codec No "plain" codec用于输入的数据,在数据进入到ipnput之前,可以使用input codecs对数据进行解码,从而省去了使用单独的filter来完成这项工作
delimiter string No "\n" 设置行与行之间的分隔符,默认使用”\n“
discover_interval number No 15 设置logstash每隔多久去检查一次被监听的path下是否有新文件。默认值是15秒
exclude array No   不想被监听的文件可以排除出去,这里跟path 一样支持glob展开
ignore_older number No 86400 在每次检查文件列表的时候,如果一个文件的最后修改时间超过这个值,就忽略这个文件。默认是86400秒,即一天
max_open_files number No   配置当前input可以监控的文件(句柄)的最大值。当我们需要处理的文件大于这个参数的值时,使用close_older参数将一些文件关闭
path array Yes   用来设置要监控的input目标文件的文件路径,可以使用通配符的方式描述文件路径,如/var/log/.log。如果设置的值为/var/log/**/.log, 会在/var/log路径下,递归的寻找后缀为log的目标文件
sincedb_path string No   如果你不想用默认的$HOME/.sincedb(windows平台上在C:\Windows\System32\Config\systemprpfile.sincedb),可以通过这个配置定义sincedb文件到其他位置
sincedb_write_interval number No 15 logstash 每隔多久写一次sincedb文件,默认是15秒
start_position string, "beginning"或“end” No “end“ logstash 从什么位置开始去读文件数据,默认是结束位置,也就是说logstash进程会以类似tail -F 的形式运行。如果你是要导入原始数据,把这个设置改为“beginning”,Logstash进程就从头开始读取,有点类似cat,但是读到最后一行不会终止,而是继续变成 tail -F。
stat_interval number No 1 logstash每隔多久检查一次被监听文件的状态(是否有更新),默认是1秒
tags array No   添加一个任意的数字作为当前事件的标签,这个标签对我们后续的工作会有帮助
type string No   input的所有事件都需要添加一个type属性,types属性主要在filter场景中使用。type会作为事件的一部分进行存储,因此后续也可以用type作为关键字在kibana中搜索



这个表格对于配置文件来说已经挺全的了,说一下自己的理解和实验得到的结果。logstash是默认每隔多少秒监听你要导入的文件是否增添了新的内容的。对于一个全新的待导入的文件,他会从头开始导入,并且创建一个 <文件inode,已写入的字节数>这样的一个记录,方便记录已经导入了多少数据到es库中,同时sincedb_path可以指定这个记录存放的位置。但是如果你把这个位置删了,再运行一遍logstash,好像没有什么影响,它照样 能按照之前的情况给你重新把记录拷贝了,所以我把索引、sindb_path指定的文件删除,再重新运行logstash,想重新导入原来删除的文件到es库里头,没有任何变化,可能logstash认为我们已经把这个文件导了多少字节进入es库了吧。所以这种情况,我觉得应该是把文件拷贝一份,导入拷贝后的文件入到es库里头,因为拷贝后的文件inode就变化了嘛。别的方法暂时还没想到,但是肯定有。

关于使用logstash将日志数据增量导入es库中,对于全新的日志文件,logstash是从开头开始导入的,但是对于已经写入一部分的日志文件,过了一段时间后日志文件又写入了一些数据,logstash能够自动监测到日志文件的变化并进行导入es库,它根据的机制应该就是<文件inode,已写入的字节数>这样的一个记录。自动进行监听,每当发现已写入的字数小于文件的大小了,就开始自动进行导入,从已写入的字节数之后的字节进行导入。

所以这部分的配置文件,我认为最终要的是 input部分 要有path(指明文件路径),codec=>json(解析日志的json格式),start_postion没有必要了(因为对于全新的文件他会自动从头开始导入,而对于已经导入的文件则会依据那个记录从上次导入之后的位置对新的东西导入),sindb_path也没有必要(除非是指定/dev/null这样的);output部分:指明elasticsearch 以及他的host和index就行了 ,stdout部分可以指明一下codec=>rubydebug作为验证导入的文件导入没


推荐阅读
author-avatar
胡慧君孟勋欣怡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有