MongoDB自动同步数据到ElasticSearch工具mon

2023-12-26  本文已影响0人  一个没有感情的程序员

monstache简介

Monstach是一个用Go编写的同步守护进程,它将MongoDB集合连续索引到Elasticsearch中。Monstach使您能够使用Elasticsearch对MongoDB数据进行复杂的搜索和聚合,并轻松构建实时Kibana可视化和仪表板。

安装monstache

Monstach只是一个单一的二进制文件,不依赖于Ruby、Python或PHP等运行时。Monstach是用Go编写的,但除非你决定自己编写Go插件,否则你不需要安装Go语言。
如果你只是想运行Monstach,你只需要下载最新版本。对于版本的选择可以参考下表

Monstache version Git branch (used to build plugin) Docker tag Description Elasticsearch MongoDB Status
6 rel6 rel6, latest MongoDB, Inc. go driver Version 7+ Version 2.6+ Supported
5 rel5 rel5 MongoDB, Inc. go driver Version 6 Version 2.6+ Supported
4 master rel4 mgo community go driver Version 6 Version 3 Deprecated
3 rel3 rel3 mgo community go driver Versions 2 and 5 Version 3 Deprecated

基本可以说,对于mongodb大部分的版本都是支持的,而ES版本也是基本覆盖。下载的话直接去github上下载编译好的,路径:/rwynn/monstache/releases
解压后会看到各平台的文件夹,进入对应文件夹,这里会有以.toml为结尾的配置文件

monstache配置

配置文件如下


# mongo连接串
mongo-url = "mongodb://root:xxx@XXX:XXX/XXX?authSource=XXX"
# ES地址
elasticsearch-urls = [ "http://192.168.0.1:9200"]


# 这里配置的是mongodb数据库+集合名字,这里配置的集合会在monstache启动的时候启动全量同步
direct-read-namespaces = ["xxx.xxxx"]

# 这里配置的是mongodb数据库+集合名字,这里配置的集合会在monstache启动后根据mongodb的变化实时同步到es
change-stream-namespaces = ["xxx.xxxx"]

# 打印日志
verbose = true

# 配置collection和es索引的对应关系上面namespace是mongodb数据库+集合名字,下面index是es里面的索引名字
[[mapping]]
namespace = "xxx.xxxx"
index = "indexName"

# 这里是脚本部分,可以控制同步的字段
[[script]]
namespace = "xxx.xxxx"
script = """
module.exports = function(doc, ns) {
    return _.pick(doc, "field0","field1","field2","field3","field4","field5","field6");
}
"""
[logs]
info = "/var/logs/monstache/info.log"
warn = "/var/logs/monstache/warn.log"
error = "/var/logs/monstache/error.log"
trace = "/var/logs/monstache/trace.log"

以上的配置就可以满足绝大部分场景了,mongoDb同步到es,使用monstache是不需要提前创建索引的,没有的字段会自动创建类型,也可以提前创建好索引,但是默认monstache是全量同步字段的,所以也可以在配置里面额外配置[[script]]来控制同步的字段,其中脚本是js脚本,会消耗一定的性能

monstache 注册服务

把这个工具注册成服务并设置开机启动会比较好运维和管理使用
vim /usr/lib/systemd/system/monstache.service
然后编辑文件

[Unit]
Description=monstache sync service

[Service]
Type=notify
ExecStart=/usr/local/build/linux-amd64/monstache -f /usr/local/build/linux-amd64/config.toml
WatchdogSec=30s
Restart=always

[Install]
WantedBy=multi-user.target

然后执行命令

systemctl daemon-reload
systemctl enable monstache.service 

就完成了注册启动的配置

monstache优缺点

monstache的优点很明显,配置简单功能强大且社区活跃度不低源码持续更新。
monstache的缺点是略微消耗monstache运行服务器的性能和mongodb的性能。每次启动的时候需要注意配置文件有没有配置全量同步。
在不考虑性能的情况下monstache还是非常值得选择的同步组件,非常简单方便。

上一篇下一篇

猜你喜欢

热点阅读