美文网首页
MongoDB自动同步数据到ElasticSearch工具mon

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

作者: 一个没有感情的程序员 | 来源:发表于2023-12-26 15:49 被阅读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还是非常值得选择的同步组件,非常简单方便。

    相关文章

      网友评论

          本文标题:MongoDB自动同步数据到ElasticSearch工具mon

          本文链接:https://www.haomeiwen.com/subject/kwmlndtx.html