数据采集 采集源配置 MongoDB Oplog 数据采集
MongoDB Oplog 数据采集
简介
通过 Oplog 采集 MongoDB 数据指标上报到 DataFlux 中。
前置条件
- 已安装 MongoDB(MongoDB 安装文档)
- 已安装 DataKit(DataKit 安装文档)
配置
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="testdb"
# collection 名称
collection="testcollection"
# 配置 tags 数据所在路径,可以为空
tagList=[
"/path",
"/a/b/c/e"
]
# 配置 fields 数据所在路径,并且指定数据类型,不可以为空
# 支持 int float bool string 四种类型
# 必填
[inputs.mongodb_oplog.fieldList]
"/a/c/d" = "int"
"/a/c/f[1]/e/f" = "int"
# 自定义 tags,建议配置以分清数据来源
# [inputs.mongodb_oplog.tags]
# database="testdb"
# collection="testcollection"
注意,MongoDB 连接时如果
user
或password
中含有@
等字符需要使用百分比编码替换,替换内容查看文档
配置注意事项
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