kibana索引及索引冷熱分離管理
介紹
本篇文檔簡單介紹一下kibana的索引管理.主要包括:
- 索引模板
- 索引模式
- 索引生命周期
- 索引冷熱分離管理
- 索引模板配置
索引模板
ES自帶一個默認的logstash-*的索引模板,es內部維護了template,template定義好了mapping,只要index的名稱被template匹配到,那么該index的mapping就按照template中定義的mapping自動創建。而且template中定義了index的shard分片數量、replica副本數量等等屬性。
所以我們每次新建一個索引的時候,不需要手動創建mapping映射,也不需要手動設置副本和分片數量.
在Kibana的圖形化界面中可以看到ES默認的索引模板
點擊進入logstash索引模板,還能對模板進行編輯.比如設置以下重要2個參數:
refresh_interval —-索引刷新間隔,一般在5-10秒范圍內,周期可以設置長一點,有助於提高ES性能,減少不必要的刷新
number_of_shards—–索引分片數量,在ES7版本中默認為1,在以前的版本默認為5.一般情況下設置為等同於ES data節點的數量
number_of_replicas—-默認副本數量為1,如果有特殊需要,可以在下方設置.
由於ES默認索引模板的存在,所以logstash在向ES傳輸數據的時候,索引最好是以logstash-開頭.例如:
1 |
output { |
索引模式
當一個新建的索引傳輸到ES時,需要將這個索引關聯到剛才提到的索引模板中.比如下面的logstash-msf-mysql-slow-2020.02.28的索引
在Kibana的索引模式界面中,創建一個索引模式
由於每天創建一個索引,所以定義一個索引前綴,使用通配符匹配后面的日期
logstash-msf-mysql-slow-*
默認使用日期來篩選字段
創建完成后,字段已經自動映射
此時在discovery界面就能看到該索引並且該索引下的數據了.
索引生命周期
Kibana的管理界面可以管理索引的生命周期,在下面的圖示中,創建一個新的生命周期策略
可以管理索引的生命周期,例如,下面的截圖中配置超過2天的索引自動刪除
保存策略,然后將該策略關聯到索引模板.
索引冷熱分離管理
在<生產環境部署ELK+冷熱數據分離>筆記中提到,當前業務每天大概1.5T左右的日志,規划了20T的SSD磁盤,剛好可以保留7天的日志(副本數為1).開發人員需要將日志保留更久(例如一個月),以便有些故障未能及時發現,可能數周后才去追蹤日志,排查故障.
但是,將一個月的日志都存儲在SSD的磁盤中成本較高.在這種場景中,可以使用冷熱分離,將索引數據分開..例如,7天內的日志為熱數據,該日志查詢頻率非常高,可以作為熱數據,存儲在ES的熱節點,.7天后的日志查詢頻率就非常低,幾乎很少查詢,此時可以做為冷數據,存儲在ES的冷節點.
ES冷節點通常硬件資源較低,CPU和內存配置相對熱節點較低,磁盤通常采用機械磁盤,一方面冷節點無需太高配置,另一方面節省服務器成本費用
在<生產環境部署ELK+冷熱數據分離>筆記中的ES集群截圖中,可以看到每個ES的data節點都有hot或者cold屬性..該屬性定義了ES的冷熱節點角色
還是在上面的Kibana索引生命周期中配置冷熱分離.只需開啟冷階段配置即可.配置參考如下:
接着在Kibana的dev tool工具中,給索引模板新增以下配置,將索引數據分配到hot節點ES服務器:
1 |
PUT _template/logstash |
查看默認的logstash-*索引模板.可以看到設置已經生效
1 |
"routing": { |
此后進來的索引數據,會自動存儲到hot節點的ES服務器上.cold服務器不存儲任何熱數據
PS: 為了測試冷熱數據是否正常工作,也可以手動將索引從Hot節點遷移到cold節點,以索引logstash-msf-fpm-error-2020.07.27為例,在Kibana的dev tool工具中執行下面的語句,
1 |
PUT /logstash-msf-fpm-error-2020.07.27/_settings |
則該索引會增加下列屬性:
1 |
"routing": { - |
Kibana7版本的索引生命周期會自動遷移舊的索引數據到cold節點,所以無需手動或者寫腳本定時遷移
Kibana的索引生命周期生效后,舊的索引就會自動從hot節點遷移到cold節點:
當配置了Kibana的索引生命周期后,logstash數據傳輸到ES時,只需要指定ES的Hot節點(或者master)節點即可,,cold節點(如果不是master)則無需寫入到output配置中
索引模板配置
總結下來,索引模板需要做如下配置:
1 |
PUT _template/logstash |
索引設置效果如下:
1 |
{ |
另外,有時候索引找不到geoip.location字段.此時就需要在索引模板中手動映射字段
手動添加映射字段:
字段名: geoip.location
字段值: 地理坐標點













