Skip to content

MongoDB Reader

Sun Jianbo edited this page Aug 3, 2017 · 8 revisions

MongoDB reader 是logkit提供的从MongoDB读取数据的配置方式。

典型配置如下

    "reader":{
        "mongo_host":"localhost:27017",
        "meta_path":"./meta",
        "mode":"mongo",
        "mongo_database":"app123",
        "mongo_collection": "collection1",
        "mongo_offset_key":"_id",
        "mongo_cron":"00 00 04 * * *",
        "mongo_exec_onstart":"true",
        "mongo_filters":"{\"foo\": {\"i\": {\"$gt\": 10}}}",
        "mongo_cacert": "/path/to/cert.pem"
    },
  1. MongoDB reader 输出的是json字符串,需要使用json的parser解析。
  2. mongo_host 必填 是mongodb的url地址,基础的是mongo的host地址以及端口,扩展形式可以写为: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]],用户名密码也可以写在这里。
  3. meta_path 是reader的读取offset的记录路径,记录mongo读取时的Offset,路径必须是一个文件夹。
  4. mode 是读取方式,使用MongoDB Reader必须填写mongo
  5. mongo_database mongo的数据库名称
  6. mongo_collection mongo的表名
  7. mongo_offset_key 指定一个mongo的列名,作为offset的记录,类型必须是整型(比如unixnano的时间,或者自增的primary key)。 每次查询会指定这个key做where条件大于上次查询最后的记录这样的限制,避免单次查询性能消耗过大,同时也支持持续的数据导入过程中避免数据重复。 若不指定,则使用mongo的_id键,_id键是由时间戳(秒)+机器+进程号+自增位组成的,在低频数据写入的情况下是自增的,在多机器组成的mongo集群高并发写入的情况下,_id不是自增的,存在漏数据的可能。 默认使用_id,也保证了在纯粹从静态的mongo数据库导入pandora过程中,若重启logkit不会导致数据重复。
  8. mongo_cron 定时任务触发周期,支持两种写法。
    • crontab的写法,类似于* * * * * *,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行。
    • 描述式写法,类似于"@midnight", "@every 1h30m",必须@符合开头,目前支持@hourly,@weekly,@monthly,@yearly,@every <time duration>
  9. mongo_exec_onstart true表示启动时执行一次,以后再按cron处理;false则表示到cron预设的时间才执行,默认为true。
  10. mongo_filters 表示collection的过滤规则,最外层是collection名称,里面对应的是json的规则。如示例所示,表示foo这个collection,i字段的值大于10的全部数据。
  11. mongo_cacert 存放mongo的鉴权证书,目前暂时不支持
Clone this wiki locally