ELK 索引生命週期管理
前言
之前搭建的 ELK 叢集經過幾天的日誌收集,索引數逐漸增多,伺服器的各項記憶體、cpu、IO 指標開始上漲起來,要解決這個問題,在權衡效能與使用者使用,應該做好索引的生命週期管理。
1. 管理索引
點選設定 --- Elasticsearch 的 Index management 可以檢視 elk 生成的所有索引
配置 kibana 的索引匹配
配置索引生命週期
點選設定 --- Elasticsearch 的 Index Lifecycle Policies 可以配置策略管理索引生命週期
配置索引策略文件地址:https://www.elastic.co/guide/en/elasticsearch/reference/7.1/index-lifecycle-management.html
更多免費學習資料,請點選這裡 https://ke.magedu.com
配置索引的生命週期,折騰了我好幾天,這裡要仔細記錄下:
首先建立 Index Lifecycle Policies 也就官方文件中的四個階段配置 需要說明的是並不是每個階段都是必要配置,這裡我的配置參考如下圖,
hot 階段
warm階段 這裡設定的是建立索引 3 天后轉移到這一階段,同時還配置強制合併為 3 個 segments
cold階段,這裡設定的是建立索引 7 天后轉移到這一階段,同時凍結這一索引
delete階段,這裡設定的是建立索引 15 天后轉移到這一階段,同時刪除這一索引
配置好生命週期策略後,我們需要建立一個模板,將我們現在的輸入 index 接管過來,然後將策略應用於這個模板,這就達到了,每次建立的 index 都能應用於這一策略 其實最方便的就是將你建立的索引都以 logstash-* 開頭,預設就包含一個名為 logstash 的模板,如果你不想以 logstash-* 開頭建立索引,你可以先建立個模板參考如下:
PUT /_template/my_template { "order" : 0, "index_patterns" : [ "prod-*", "stage-*", "dev-*" ], "settings" : { "index" : { "number_of_shards" : "1", "refresh_interval" : "5s" } }, "mappings" : { "dynamic_templates" : [ { "message_field" : {"path_match" : "message", "mapping" : { "norms" : false, "type" : "text" }, "match_mapping_type" : "string" } }, { "string_fields" : { "mapping" : { "norms" : false, "type" : "text", "fields" : { "keyword" : { "ignore_above" : 256, "type" : "keyword" } } }, "match_mapping_type" : "string", "match" : "*" } } ], "properties" : { "@timestamp" : { "type" : "date" }, "geoip" : { "dynamic" : true, "properties" : { "ip" : { "type" : "ip" }, "latitude" : { "type" : "half_float" }, "location" : { "type" : "geo_point" }, "longitude" : { "type" : "half_float" } } }, "@version" : { "type" : "keyword" } } }, "aliases" : { } }
以上的模板接管了 prod-* stage-* dev-* 開頭的 index,然後將策略應用於這些 index
現在我們就可以在 index management 裡檢視索引當前的生命週期狀態
總結