Logstash是一個開源的數據收集引擎,具有實時傳輸數據,并過濾數據的能力。如果您對遷移實時性要求不高,可以使用Logstash進行數據遷移。本文介紹在ECS上部署自建Logstash,并通過該Logstash將一個日志文件遷移到阿里云Elasticsearch(ES)中。
前提條件
已創建阿里云ES實例,并開啟實例的自動創建索引功能。
說明本文以通用商業版8.5.1為例。
具體操作,請參見創建阿里云Elasticsearch實例和快速訪問與配置。
已創建ECS實例,ECS實例需要能夠同時訪問自建Logstash集群和阿里云ES集群。 具體操作,請參見自定義購買實例。
說明建議您購買與阿里云ES在同一區域、同一可用區、同一專有網絡VPC下的ECS實例。
在ECS實例中安裝JDK。 具體操作,請參見安裝JDK。
說明JDK版本選擇Temurin 17及以上。Java JDK版本與Logstash版本的兼容情況,請參見JVM兼容表。
準備待遷移的數據,本文以ECS的日志數據為例。
操作步驟
(可選)步驟一:創建角色和用戶
自建Logstash訪問ES或在Kibana中查看Logstash監控時,需要使用ES的賬號,您可以使用elastic
用戶或自建用戶。
實際業務中建議使用自建用戶,并給自建用戶分配相應的角色和權限。使用elastic用戶會降低系統安全性。
創建角色
以添加具有logstash-*
讀寫權限的角色為例。
登錄目標阿里云ES實例的Kibana控制臺。
具體步驟,請參見登錄Kibana控制臺。
單擊Kibana頁面左上角的圖標,選擇Management > Stack Management。
在左側導航欄,選擇安全 > 角色。
在角色頁面,單擊創建角色,配置角色參數。
部分參數說明:
參數
說明
角色名稱
角色名稱,自定義輸入。
索引
選擇對應的索引文件。需要輸入logstash-*。
權限
為角色分配索引權限。需要添加read、write、create、delete以及create_index權限。
單擊創建角色,完成創建。
創建用戶
以創建監控Logstash服務的用戶為例。 您可以選擇以下任一方式創建用戶:
阿里云ES集群默認會禁用logstash_system
用戶,因此您需要創建一個角色為logstash_system
的用戶名,但需要注意用戶名不可以配置為logstash_system
。
方法一:通過Kibana控制臺添加用戶
登錄目標阿里云ES實例的Kibana控制臺。
具體步驟,請參見登錄Kibana控制臺。
單擊Kibana頁面左上角的圖標,選擇Management > Stack Management。
在左側導航欄,選擇安全 > 用戶。
在用戶頁面,單擊創建用戶。
在創建用戶頁面,配置用戶信息。
部分參數說明:
參數
說明
Username
用戶名,可以自定義。本章節以創建Logstash監控用戶為例,設置用戶名為logstash_system_monitor。
Roles
用戶的角色,需要選擇logstash_system角色。
單擊創建用戶,完成創建。
方法二:通過命令行方式創建用戶
連接ECS實例,通過以下命令添加用戶。
curl -u elastic:<es-password> -XPOST http://<instanceId>.elasticsearch.aliyuncs.com:9200/_xpack/security/user/logstash_system_monitor -d '{"password" : "<logstash-monitor-password>","roles" : ["logstash_system"],"full_name" : "<your full name>"}'
參數
說明
es-password
阿里云ES實例的密碼,即您登錄Kibana控制臺的密碼。
<instanceId>
阿里云ES實例的ID,可在實例的基本信息頁面獲取。
<logstash-monitor-password>
您創建的
logstash_system_monitor
用戶的密碼。<your full name>
當前用戶名的全名描述。
添加成功后,結果如下。
步驟二:在ECS上安裝Logstash
連接ECS實例。
具體步驟請參見連接ECS實例。
下載Logstash。
進入Elastic官網,下載與阿里云ES實例版本一致的Logstash。
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.5.1-linux-x86_64.tar.gz
說明下載Logstash7.4版本
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gz
對下載的Logstash壓縮包進行解壓縮。
以8.5.1版本為例。
tar -xzvf logstash-8.5.1-linux-x86_64.tar.gz
步驟三:配置并執行Logstash遷移任務
進入Logstash目錄。
cd logstash-8.5.1
創建conf文件。
touch test.conf
配置test.conf文件。
配置示例如下。
input { file { path => "/your/file/path/xxx" } } filter { } output { elasticsearch { hosts => "<http://<instanceId>.elasticsearch.aliyuncs.com:9200>" index => "<index-name>" user => "<user-name>" password => "<logstash-password>" } }
參數
說明
path
日志文件的路徑。本文以/var/log/messages為例。
hosts
阿里云ES實例的訪問地址。
instanceId
為實例ID,可在實例的基本信息頁面獲取。例如:http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200
。index
文件寫入目標ES中的索引名字,索引名字自定義。
user
訪問阿里云ES實例的賬號。 本文使用elastic。
重要實際業務中建議使用自建用戶,使用elastic用戶會降低系統安全性。
用戶名上需要加英文引號(""),防止在啟動Logstash時,因出現特殊字符報錯。
password
阿里云ES實例賬號的密碼。
重要密碼上需要加英文引號(""),防止在啟動Logstash時,因為特殊字符報錯。
Logstash提供了豐富的input、filter、output插件,只需要簡單的配置即可實現數據的流轉,詳情請參見官方配置文件結構文檔。
啟動logstash。
bin/logstash -f test.conf
命令執行成功后,系統會自動通過Logstash獲取日志文件的變化,并提交到阿里云ES集群。只要監控的日志文件有新增內容,Logstash就會自動同步數據到ES集群中。
步驟四:查看遷移成功的數據
登錄目標阿里云ES實例的Kibana控制臺。
具體步驟,請參見登錄Kibana控制臺。
單擊Kibana頁面左上角的圖標,選擇Management > 開發工具。
在Kibana控制臺中,執行以下命令。
GET /logstash-*/_search
(可選)步驟五:監控Logstash節點
進入Logstash安裝目錄的config文件中。
cd logstash-8.5.1/config
配置logstash.yml文件。
打開logstash.yml文件。
vim logstash.yml
在logstash.yml文件中,去掉以下幾個參數的注釋,并配置參數值。
xpack.monitoring.enabled:true xpack.monitoring.elasticsearch.username:"<user-name>" xpack.monitoring.elasticsearch.password:"<logstash-password>" xpack.monitoring.elasticsearch.hosts:["http://es-cn-nwy3fwjp8xxxxxxx.elasticsearch.aliyuncs.com:9200"]
參數
說明
xpack.monitoring.enable
默認為
false
,需要設置為true
。xpack.monitoring.elasticsearch.username
您創建的Logstash監控賬號,本文使用elastic用戶。
重要實際業務中建議使用自建用戶,使用elastic用戶會降低系統安全性。
xpack.monitoring.elasticsearch.password
Logstash監控用戶的密碼。
xpack.monitoring.elasticsearch.hosts
阿里云ES實例的訪問地址。例如:
http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200
。
返回Logstash安裝目錄,啟動Logstash服務。
cd ../ bin/logstash -f test.conf
登錄目標阿里云ES實例的Kibana控制臺。
具體步驟,請參見登錄Kibana控制臺。
單擊Kibana頁面左上角的圖標,選擇Management > 堆棧監測。
(可選)在彈出的Create rules對話框,單擊OK。
在集群概覽頁面,查看Logstash監控信息。
相關文檔
阿里云ES插件能夠提升集群在穩定性、查詢和寫入性能、分詞查詢、數據檢索等各方面的能力,請參見插件配置概述。