-
Notifications
You must be signed in to change notification settings - Fork 255
MongoDB Reader
Sun Jianbo edited this page Jan 16, 2018
·
8 revisions
MongoDB reader 是logkit提供的从MongoDB读取数据的配置方式。MongoDB reader 输出的是json字符串,需要使用json的parser解析。
"reader":{
"mongo_host":"localhost:27017",
"meta_path":"./meta",
"mode":"mongo",
"mongo_database":"app123",
"mongo_collection": "collection1",
"mongo_offset_key":"_id",
"mongo_limit_batch":"100",
"mongo_cron":"00 00 04 * * *",
"mongo_exec_onstart":"true",
"mongo_filters":"{\"foo\": {\"i\": {\"$gt\": 10}}}"
},
-
mongo_host
选填 是mongodb的url地址,基础的是mongo的host地址以及端口,默认是localhost:9200
,扩展形式可以写为:mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
,用户名密码也可以写在这里。 -
meta_path
选填 默认自动生成,是reader的读取offset的记录路径,记录mongo读取时的Offset,路径必须是一个文件夹。 -
mode
必填 是读取方式,使用MongoDB Reader必须填写mongo
。 -
mongo_database
必填 mongo的数据库名称 -
mongo_collection
必填 mongo的表名。 -
mongo_offset_key
选填 指定一个mongo的列名,作为offset的记录,类型必须是整型(比如unixnano的时间,或者自增的primary key)。 每次查询会指定这个key做where条件大于上次查询最后的记录
这样的限制,避免单次查询性能消耗过大,同时也支持持续的数据导入过程中避免数据重复。 若不指定,则使用mongo的_id
键,_id
键是由时间戳(秒)+机器+进程号+自增位组成的,在低频数据写入的情况下是自增的,在多机器组成的mongo集群高并发写入的情况下,_id
不是自增的,存在漏数据的可能。 默认使用_id
,也保证了在纯粹从静态的mongo数据库导入pandora过程中,若重启logkit不会导致数据重复。 -
mongo_cron
选填 默认没有定时任务。定时任务触发周期,支持三种写法。- 直接写"loop",任务会不停的循环,执行完一次再接着执行下一次,后面可以跟循环的间歇时间,如"loop 10s",表示每次循环间隔10s,支持的单位还有"m(分钟)","h(小时)"
- crontab的写法,类似于
* * * * * *
,对应的是秒(0~59
),分(0~59
),时(0~23
),日(1~31
),月(1-12
),星期(0~6
),填*号表示所有遍历都执行。 - 描述式写法,类似于"@midnight", "@every 1h30m",必须
@
符合开头,目前支持@hourly
,@weekly
,@monthly
,@yearly
,@every <time duration>
-
mongo_limit_batch
选填 默认为"100", 表示单次请求获取的数据量。 -
mongo_exec_onstart
选填 默认为false
,true
表示启动时执行一次,以后再按cron处理;false
则表示到cron预设的时间才执行,默认为true。 -
mongo_filters
选填 表示collection的过滤规则,默认不过滤,全部获取。最外层是collection名称,里面对应的是json的规则。如示例所示,表示foo
这个collection,i
字段的值大于10的全部数据。 -
tag_file
可选项,可以读取一个json格式的文件,并把json的数据作为标签附着在所有数据之上。典型的应用场景为一些机器或者容器相关的元数据存以json格式放在文件中,logkit发送的数据都带上这些元数据,以便查询时可以快速定位机器元数据,并根据元数据做报警等后续事宜。
导出mongo的字段中,包含"_id" 的话,在打入Pandora的数据中,默认也会包含"_id",这份数据如果再要导出到LogDB,就会出现错误,因为_id
是LogDB的保留字段。此时可以在Pandora Sender中指定 pandora_schema
字段设置别名,如 "pandora_schema":"_id id,...",
这样就可以正常导入。其他出现字段冲突的情况都可以使用别名功能处理。
快速开始 | Pandora | Readers | Parsers | Senders | Download | 七牛智能日志管理平台 | logkit-pro专业版