ELK冷熱資料分離

Federico發表於2018-11-15

ELK冷熱資料分離

  通常情況下,我們使用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_1order:定義優先順序,當多個模板同時匹配時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。

  因為索引是按照時間進行命名的,所以我們可以根據時間寫指令碼,定期將資料標籤和副本數進行修改,達到了冷熱資料分離的效果。

相關文章