文档首页/ 云搜索服务 CSS/ 常见问题/ CSS集群迁移/ 使用华为云Logstash迁移Elasticsearch集群的Logstash配置文件样例
更新时间:2024-09-14 GMT+08:00

使用华为云Logstash迁移Elasticsearch集群的Logstash配置文件样例

本文以源端和目的端是相同类型的CSS Elasticsearch集群为例,介绍使用Logstash进行集群迁移的配置文件样例。当源端和目的端的Elasticsearch集群类型不同时,可以参考本文样例中的input和output模块自由组合出合适的配置文件。

查看集群类型

  1. 登录云搜索服务管理控制台。
  2. 在左侧导航栏选择“集群管理 > Elasticsearch”,进入Elasticsearch集群列表。
  3. 选择源端或目的端Elasticsearch集群,单击集群名称,进入详情页面。
  4. 在集群详情页面查看集群是否开启安全模式,是否开启HTTPS访问。如图1所示,表示该Elasticsearch集群是使用HTTPS访问的安全集群。
    图1 查看集群模式
    表1 不同集群类型之间进行数据迁移的Logstash配置文件样例

    迁移场景

    Logstash配置文件样例

    非安全集群之间进行数据迁移

    非安全集群的Logstash配置文件样例

    使用HTTP访问的安全集群之间进行数据迁移

    安全集群(使用HTTP访问)的Logstash配置文件样例

    使用HTTPS访问的安全集群之间进行数据迁移

    安全集群(使用HTTPS访问)的Logstash配置文件样例

非安全集群的Logstash配置文件样例

当源端和目的端的Elasticsearch集群都是非安全模式时,Logstash配置文件可参考如下。

input {
    elasticsearch {
        # 源端Elasticsearch地址
        hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
        # 需要迁移的索引列表,以逗号分隔
        index => "xxx,xxx,xxx"
        # 以下保持默认即可
        docinfo => true
    }
}
 
filter {
    # 去掉一些logstash自己加的字段
    mutate {
        remove_field => ["@timestamp", "@version"]
    }
}
 
output {
    elasticsearch {
        # 目的端Elasticsearch地址
        hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
        # 目的端索引名称,以下配置为和源端保持一致
        index => "%{[@metadata][_index]}"
        # 目的数据的_id,如果不需要保留原_id,可以删除以下这行,删除后性能会更好
        document_id => "%{[@metadata][_id]}"
        # 以下保持默认即可
        manage_template => false
        ilm_enabled => false
    }
}

安全集群(使用HTTP访问)的Logstash配置文件样例

当源端和目的端的Elasticsearch集群都是安全模型且未启用HTTPS访问时,Logstash配置文件可参考如下。

input {
    elasticsearch {
        # 源端用户名
        user => "xxx"
        # 源端密码
        password => "xxx"
        # 源端Elasticsearch的地址
        hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
        # 需要迁移的索引列表,以逗号分隔
        index => "xxx,xxx,xxx"
        # 以下保持默认即可
        docinfo => true
    }
}
 
filter {
    # 去掉一些logstash自己加的字段
    mutate {
        remove_field => ["@timestamp", "@version"]
    }
}
 
output {
    elasticsearch {
        # 目的端用户名
        user => "xxx"
        # 目的端密码
        password => "xxx"
        # 目的端Elasticsearch地址
        hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
        # 目的端索引名称,以下配置为和源端保持一致
        index => "%{[@metadata][_index]}"
        # 目的数据的_id,如果不需要保留原_id,可以删除以下这行,删除后性能会更好
        document_id => "%{[@metadata][_id]}"
        # 以下保持默认即可
        manage_template => false
        ilm_enabled => false
    }
}

安全集群(使用HTTPS访问)的Logstash配置文件样例

当源端和目的端的Elasticsearch集群都是安全模式且开启了HTTPS访问时,Logstash配置文件可参考如下。

input {
    elasticsearch {
        # 源端用户名
        user => "xxx"
        # 源端密码
        password => "xxx"
        # 源端Elasticsearch的地址
        hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
        # 需要迁移的索引列表,以逗号分隔
        index => "xxx,xxx,xxx"
        # 源端Elasticsearch集群的证书,云上的集群保持以下值不变;自建logstash集群可以在集群详情页面下载证书。这里输入对应的证书路径+证书名称。
        ca_file => "/rds/datastore/logstash/v7.10.0/package/logstash-7.10.0/extend/certs"
        # 以下保持默认即可
        docinfo => true
        ssl => true
    }
}
 
filter {
    # 去掉一些logstash自己加的字段
    mutate {
        remove_field => ["@timestamp", "@version"]
    }
}
 
output {
    elasticsearch {
        # 目的端用户名
        user => "xxx"
        # 目的端密码
        password => "xxx"
        # 目的端Elasticsearch地址
        hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
        # 目的端索引名称,以下配置为和源端保持一致
        index => "%{[@metadata][_index]}"
        # 目的数据的_id,如果不需要保留原_id,可以删除以下这行,删除后性能会更好
        document_id => "%{[@metadata][_id]}"
        # 目的端Elasticsearch集群的证书,云上的集群保持以下值不变;自建logstash集群,则需要在集群详情页面下载证书到节点里,这里输入对应的证书路径+证书名称
        cacert => "/rds/datastore/logstash/v7.10.0/package/logstash-7.10.0/extend/certs"
        # 以下保持默认即可
        manage_template => false
        ilm_enabled => false
        ssl => true
        ssl_certificate_verification => false
    }
}