search
数据采集 采集源配置 MongoDB Oplog 数据采集

MongoDB Oplog 数据采集

简介

通过 Oplog 采集 MongoDB 数据指标上报到 DataFlux 中。

前置条件

配置

MongoDB 配置

MongoDB 需要开启 Replica Oplog 功能,程序启动时添加参数--replSet mongo-set,启动成功后可以在 MongoDB 的数据库交互终端查看:

rs:PRIMARY> use local
rs:PRIMARY> db.oplog.rs.find()

Oplog 配置详情可以查看官方文档

DataKit 配置

进入 DataKit 安装目录下的 conf.d/db 目录,复制 mongodb_oplog.conf.sample 并命名为 mongodb_oplog.conf。示例如下:

[inputs.mongodb_oplog]
    # MongoDB 连接 URL, mongodb://user:password@host:port/database
    # 必填
    mongodb_url="mongodb://127.0.0.1:27017"
    
    # 数据库名称
    # 必填
    database="<your-database>"
    
    # collection 名称
    collection="<your-collection>"

    # 数据上传类型,可选: "metric", "logging"
    # 如果为空,则默认上传到 "metric"
    categories = ["metric"]
    
    # 配置 tags 数据所在路径,可以为空
    tagList=[
    # "/<path>",
        # "/a/b/c/e"
    ]
    
    # 配置 fields 数据所在路径,并且指定数据类型,不可以为空
    # 支持 int float bool string 四种类型
    [inputs.mongodb_oplog.fieldList]
        # "<path>" = "<type>"
    # "/a/c/d" = "int"
        # "/a/c/f[1]/e/f" = "bool"
        # "/a/c/f\\[0\\]" = "int"
    
    # 自定义 tags,建议配置以分清数据来源
    # [inputs.mongodb_oplog.tags]
    # database="testdb"
    # collection="testcollection"

注意,MongoDB 连接时如果 userpassword 中含有 @ 等字符需要使用百分比编码替换,替换内容查看文档

配置注意事项

MongoDB 是文档型数据库,可以包含多层嵌套,需要在配置文件中指定最终数据的路径,以 / 分隔,数组数据以 [index] 定义下标。假设 MongoDB 插入数据如下:

{ 
    "name": "tony", 
    "age": 12, 
    "info": {
        "school": "shanghai",
        "home": "beijing"
        "score": [
            {
                "cource":"yuwen",
                "number": 87
            },
            2020,
            "hello"
        ]
    }
}
  • 若要取得 name 字段的数据,需要配置的路径为 /name
  • 若要取得 info.home 字段的数据,需要配置的路径为 /info/home
  • 若要取得 info.course 字段的数据,需要配置的路径为 /info/score[0]/cource
  • 若要取得 info.score 字段的数据(例如hello),需要配置的路径为 /info/score[2]

示例输出

输出为配置文件中路径的查找所得,路径查找为空则无数据。当使用示例配置和示例数据时,输出为:

mongodb_oplog,/info/home=beijing,/name=tony /info/score[2]=87i,/info/score[0]/cource="yuwen" 1560455990829955922