本文為您介紹如何創建一個阿里云Logstash實例,并通過Logstash的管道配置,完成阿里云Elasticsearch實例間的數據同步。

背景信息

在開始本文操作前,請先了解以下背景信息:

前提條件

使用限制

  • 源Elasticsearch、Logstash和目標Elasticsearch實例在同一專有網絡。如果不在同一專有網絡,需要通過配置NAT網關實現與公網的連通,詳細信息請參見配置NAT公網數據傳輸
  • 源Elasticsearch、Logstash和目標Elasticsearch實例版本需滿足兼容性要求,詳細信息請參見產品兼容性

操作流程

  1. 步驟一:環境準備
    創建源和目標Elasticsearch實例、開啟目標Elasticsearch實例的自動創建索引功能、準備測試數據。
  2. 步驟二:創建阿里云Logstash實例
    創建阿里云Logstash實例,等待實例狀態變為正常后,才可以創建并運行管道任務。
  3. 步驟三:創建并運行管道任務
    創建并配置阿里云Logstash管道任務,運行任務完成數據同步。
  4. 步驟四:查看數據同步結果
    通過目標Elasticsearch實例的Kibana控制臺,查看數據同步結果。

操作視頻

步驟一:環境準備

  1. 創建阿里云Elasticsearch實例。
    1. 登錄阿里云Elasticsearch控制臺
    2. 在左側導航欄,單擊Elasticsearch實例
    3. Elasticsearch實例頁面,創建2個阿里云Elasticsearch實例。
      創建的2個阿里云Elasticsearch實例,分別作為Logstash的input和output,具體操作請參見創建阿里云Elasticsearch實例。本文創建的實例版本為通用商業版6.7,使用的數據遷移方案為:阿里云Elasticsearch 6.7.0 > 阿里云Logstash 6.7.0 > 阿里云Elasticsearch 6.7.0,提供的腳本僅適用于該數據遷移方案,其他方案不保證兼容。創建的阿里云Elasticsearch實例的具體配置如下。
      說明 如果您使用的是其他方案,可參見產品兼容性判斷是否存在兼容性問題。如果存在,可升級實例版本或新購實例。
      實例配置
      說明 訪問阿里云Elasticsearch實例的賬號默認為elastic(本文以此為例),如果需要使用自建用戶,要給予自建用戶相應的角色和權限,詳細信息請參見通過Elasticsearch X-Pack角色管理實現用戶權限管控
  2. 開啟目標阿里云Elasticsearch實例的自動創建索引功能。
    具體操作,請參見配置YML參數
    說明 阿里云Elasticsearch為了保證用戶操作數據的安全性,默認將自動創建索引配置設置為不允許。阿里云Logstash在傳輸數據的時候,使用提交數據的方式創建索引,而不是Create index API的方式。所以在使用阿里云Logstash上傳數據之前,需要先把集群的自動創建索引設置為允許,或提前創建好索引和Mapping。
  3. 準備測試數據。
    進入源阿里云Elasticsearch實例的Kibana控制臺,在Dev Tools頁面的Console頁簽下,執行如下命令創建待同步的索引和文檔。
    注意
    1. 創建名稱為my_index,類型為my_type的索引。
      PUT /my_index
      {
          "settings" : {
            "index" : {
              "number_of_shards" : "5",
              "number_of_replicas" : "1"
            }
          },
          "mappings" : {
              "my_type" : {
                  "properties" : {
                    "post_date": {          
                         "type": "date"       
                     },
                    "tags": {
                         "type": "keyword"
                     },
                      "title" : {
                          "type" : "text"
                      }
                  }
              }
          }
      }
    2. my_index索引中插入一個名稱為1的文檔。
      PUT /my_index/my_type/1?pretty
      {
        "title": "One", 
        "tags": ["ruby"],
        "post_date":"2009-11-15T13:00:00"
      }
    3. my_index索引中插入一個名稱為2的文檔。
      PUT /my_index/my_type/2?pretty
      {
        "title": "Two", 
        "tags": ["ruby"],
        "post_date":"2009-11-15T14:00:00"
      }

步驟二:創建阿里云Logstash實例

  1. 進入Logstash實例頁面。
    1. 在頂部菜單欄,選擇與目標阿里云Elasticsearch實例相同的地域。
    2. 在左側導航欄,單擊Logstash實例
  2. Logstash實例頁面,單擊創建
  3. 在購買頁面的前三個配置頁面,完成實例啟動配置。
    本文選擇實例的付費模式為按量付費,版本為6.7,其余配置均保持默認。更多配置信息,請參見創建阿里云Logstash實例
    說明
    • 在前期程序研發或功能測試期間,建議購買按量付費實例測試。
    • 購買包年包月實例,可以享受優惠條件。
  4. 單擊下一步:確認訂單,預覽實例配置。

    配置不符合預期時,可單擊修改實例配置圖標修改。

    本文的實例配置預覽如下圖。

    Logstash實例配置
  5. 選中服務協議,單擊立即購買
  6. 提示開通成功后,單擊管理控制臺
  7. 在頂部菜單欄,選擇實例所在地域。在左側導航欄,單擊Logstash實例,進入Logstash實例頁面,查看創建成功的實例。

步驟三:創建并運行管道任務

等到創建的Logstash實例狀態變為正常后,您可以創建并運行管道任務同步數據。

  1. Logstash實例頁面,單擊目標實例右側操作列下的管道管理
  2. 管道列表區域,單擊創建管道
  3. 輸入管道IDConfig配置
    本文使用的Config配置如下。
    input {
        elasticsearch {
            hosts => ["http://es-cn-0pp1f1y5g000h****.elasticsearch.aliyuncs.com:9200"]
            user => "elastic"
            password => "your_password"
            index => "*,-.monitoring*,-.security*,-.kibana*"
            docinfo => true
        }
    }
    filter {}
    output {
        elasticsearch {
            hosts => ["http://es-cn-mp91cbxsm000c****.elasticsearch.aliyuncs.com:9200"]
            user => "elastic"
            password => "your_password"
            index => "%{[@metadata][_index]}"
            document_type => "%{[@metadata][_type]}"
            document_id => "%{[@metadata][_id]}"
        }
        file_extend {
            path => "/ssd/1/ls-cn-v0h1kzca****/logstash/logs/debug/test"
        }
    }
    參數 說明
    hosts 阿里云Elasticsearch服務的訪問地址。input中為http://<源實例ID>.elasticsearch.aliyuncs.com:9200output中為http://<目標實例ID>.elasticsearch.aliyuncs.com:9200
    user 訪問阿里云Elasticsearch服務的用戶名,默認為elastic。
    password 對應用戶的密碼。elastic用戶的密碼在創建實例時設定,如果忘記可進行重置,重置密碼的注意事項和操作步驟請參見重置實例訪問密碼
    index 指定同步索引名。設置為*,-.monitoring*,-.security*,-.kibana*,表示同步除了.開頭的系統索引外的所有索引。%{[@metadata][_index]},表示匹配元數據中的index,即同步后索引的名稱和源索引名稱相同。
    說明 系統索引一般用來存儲Elasticsearch集群的監控日志,無需同步。
    docinfo 設置為true,將會提取Elasticsearch文檔的元信息,例如index、type和id。
    document_type 指定同步后索引的類型。設置為%{[@metadata][_type]},表示匹配元數據中的type,即同步后索引的類型和源索引類型相同。
    document_id 指定同步后文檔的ID。設置為%{[@metadata][_id]},表示匹配元數據中的id,即同步后文檔的ID和源文檔ID相同。
    file_extend 可選,用來開啟調試日志功能,并通過path參數配置調試日志的輸出路徑。建議您配置該參數,配置后,可直接在控制臺上查看輸出結果。如果未配置,需要去目標端確認輸出結果,再返回控制臺修改,這樣會耗費大量的時間和人力。詳細信息,請參見使用Logstash管道配置調試功能
    注意 使用file_extend參數前,需要先安裝logstash-output-file_extend插件。具體操作,請參見安裝或卸載插件。其中的path參數默認為系統指定路徑,請勿修改。您也可以單擊開啟配置調試獲取path路徑。

    Config配置的結構及支持的數據類型的詳細信息(不同版本支持的數據類型可能不同),請參見Structure of a Config File

  4. 單擊下一步,配置管道參數。
    在配置的管道參數中,管道工作線程配置為實例的CPU核數,其他參數均為默認值。詳細參數說明,請參見通過配置文件管理管道
  5. 單擊保存或者保存并部署
    • 保存:將管道信息保存在Logstash里并觸發實例變更,配置不會生效。保存后,系統會返回管道管理頁面。可在管道列表區域,單擊操作列下的立即部署,觸發實例重啟,使配置生效。
    • 保存并部署:保存并且部署后,會觸發實例重啟,使配置生效。
  6. 在創建成功提示框中,單擊確認
    確認后,可在管道列表中查看創建成功的管道。等待實例變更完成,并且管道的狀態顯示為運行中時,表示阿里云Logstash開始執行同步任務。完成創建管道

步驟四:查看數據同步結果

數據同步任務配置完成并開始運行后,您可以通過目標阿里云Elasticsearch的Kibana控制臺,查看數據同步結果。

  1. 登錄目標阿里云Elasticsearch實例的Kibana控制臺,根據頁面提示進入Kibana主頁。
    登錄Kibana控制臺的具體操作,請參見登錄Kibana控制臺
    說明 本文以阿里云Elasticsearch 6.7.0版本為例,其他版本操作可能略有差別,請以實際界面為準。
  2. 在左側導航欄,單擊Dev Tools
  3. Console中,執行如下命令查看數據同步結果。
    GET /my_index/_search
    {
      "query": {
        "match_all": {}
      }
    }
    預期結果如下。返回結果如果源端和目標端數據一致,表示數據同步成功。您也可以通過GET _cat/indices?v命令,查看源端和目標端相同索引的大小是否一致,來判斷數據是否同步成功。

相關文檔

常見問題