通常情況下,我們使用ELK日誌分析平臺最常用的資料時間為1周或一個月(因業務場景不同,可能存在差別),時間比較長的資料沒有特殊情況可能我們就沒有必要再進行查詢了,但是因業務需求或者作為憑證,這些日誌需要長期儲存,就需要用到elasticsearch冷熱資料分離架構。
節點名稱 | 伺服器型別 | 儲存資料 |
---|---|---|
ES1 | SSD | hot |
ES2 | SSD | hot |
ES3 | SSD | hot |
ES4 | SATA | cold |
修改ES配置檔案
cluster.name: elk_cluster
node.name: ES1
node.attr.rack: r1
node.attr.tag: hot
path.data: /ES/data/
path.logs: /usr/local/elasticsearch-6.4.3/logs
node.master: true
node.data: true
network.host: ES1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["ES1","ES2","ES3","ES4"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.commit_timeout: 100s
discovery.zen.publish_timeout: 100s
discovery.zen.ping_timeout: 100s
discovery.zen.fd.ping_timeout: 100s
discovery.zen.fd.ping_interval: 10s
discovery.zen.fd.ping_retries: 10
action.destructive_requires_name: true
http.cors.allow-origin: "*"
向ES節點中新增標籤屬性,定義hot標籤的分片資料儲存至該Node。
設定ES索引模板
curl -XPUT -H "Content-Type: application/json" 'ES1:9200/_template/template_1' -d '{
"order" : 0,
"template" : "logstash-*",
"settings" : {
"index.routing.allocation.include.tag" : "hot" }
}'
定義模板名稱為
template_1
、order
:定義優先順序,當多個模板同時匹配時order
越大優先順序越高、template
:定義需要匹配的索引資訊、settings
:設定標籤。
curl -XGET -H "Content-Type: application/json" 'ES1:9200/_template/template_1'
檢視模板資訊。
更新索引標籤
curl -XPUT -H "Content-Type: application/json" 'ES1:9200/indexname/_settings' -d '{
"index" : {
"routing" : {
"allocation" : {
"include" : {
"tag" : "cold"
}
}
}
}
}'
將以前索引標籤為hot的索引修改為cold,索引及分片資訊會自動遷移至ES4即冷資料儲存伺服器。
更新索引儲存副本數
curl -XPUT -H "Content-Type: application/json" 'ES1:9200/indexname/_settings' -d '{
"number_of_replicas": 0
}'
將冷資料副本數修改為0。
因為索引是按照時間進行命名的,所以我們可以根據時間寫指令碼,定期將資料標籤和副本數進行修改,達到了冷熱資料分離的效果。