「curl -iXGET "http://192.168.127.100:9200/_cluster/health?pretty=true"」 這樣的命令可能你們在平常工做中會常常使用,它用來顯示當前集羣的健康程度,在返回結果中,包含當前集羣有關的一些關鍵信息(文獻2提到了一個使用「wait_for_status」的小技巧)。
ES提供了相似上面命令的集羣API用於獲取集羣即時狀態與信息。根據API的URI可分爲幾類API,以下圖所示:
請注意,「_cluster」API與「_cat」API提供的功能大部分重複,不一樣的是「_cat」API的輸出結果非JSON格式,對於熟悉*nux的系統管理員來講更加親切。html
除了可以使用顯式地HTTP rest請求訪問ES集羣,ES還提供了基於java的兩種客戶端開發包供ES用戶在應用代碼中調用:java
TC客戶端是應用程序與ES集羣之間的橋樑,它瞭解ES的API並可在發送請求時實現對集羣節點訪問的輪轉(round-robin)。NC客戶端則直接是ES集羣的一部分,對索引、分片信息都更爲了解,這樣在發送請求時更爲精準。
TC客戶端實現了應用程序與ES集羣的解耦,而NC客戶端在效率上更有優點。應該根據適用場景來選擇:當有多個客戶端(如上千個)須要訪問ES時,建議使用TC客戶端,這樣集羣中不須要增長多個節點;若應用只須要少許的,且長時間與ES集羣保持的鏈接,能夠考慮使用NC客戶端(注意這樣應用程序也可能會綁定在集羣中)。編程
系統運維是生產環境須要解決的首要問題。文獻3強烈建議使用單獨的監控集羣。使用單獨的監控集羣:即便在生產集羣故障的狀況下仍可訪問歷史監控數據;而且不會影響生產集羣的性能(典型的CQRS思路)。
ES使用採集器(Collectors)採集數據,並在生產集羣中做一些配置,這些配置可控制採集數據的頻率、配置超時以及在本地存儲的監控數據保存週期。ES使用導出器(exporters)來發送監控數據。默認狀況下,監控數據使用本地導出器( local exporter)存儲在同一個生產集羣中,若要將監控數據發送到監控集羣,須要使用http導出器( http exporter),並配置好監控集羣的地址與安全憑證(credential)。
在6.5和更高版本中,可使用Metricbeat來收集和發送關於Elasticsearch的數據。Metricbeat是須要單獨下載和安裝的工具(https://www.elastic.co/downloads/beats/metricbeat )。在這種方式下,Metricbeat可視爲一個嵌入ES生產集羣的運維agent。
下圖展現了一個Elasticsearch使用對elastic棧的監控體系結構。
json
信息系統的最大災難恐怕就是數據丟失了。ES提供snapshot API,可將集羣中的當前狀態和數據保存到共享存儲庫(shared repository)中。這個備份過程是「智能的」:第一個快照保存數據的完整副本,全部後續快照將保存現有快照和新數據之間的增量。於是隨着時間的推移,數據會隨着快照數據的改變而增長和刪除。後續備份由於傳輸數據減小,將大大加快速度。
要使用此功能,必須首先建立一個存儲庫來保存數據,可用的存儲庫能夠爲:本地文件系統(或掛載設備);HDFS;Amazon S3等。
使用以下命令創建本地文件系統名爲「zk_backup」的快照(須要配置「path.repo」屬性):centos
curl -iXPUT 'localhost:9200/_snapshot/zk_backup?pretty' -H "Content-type: application/json" -d' { "type": "fs", "settings": { "location": "/home/zk/es_backup" } } '
下面咱們定義第一個快照的名字爲「snapshot_20190301」 ,使用下面命令開始數據備份(備份集羣中全部的索引,若備份指定索引請在消息體中指定):安全
curl -iXPUT 'localhost:9200/_snapshot/zk_backup/snapshot_20190301?pretty'
在本地目錄「/home/zk/es_backup」能夠看到生成以下文件:架構
[zk@centos-100 es_backup]$ ls -l 總用量 36 -rw-rw-r--. 1 zk zk 494 3月 1 17:03 index-0 -rw-rw-r--. 1 zk zk 8 3月 1 17:03 index.latest drwxrwxr-x. 7 zk zk 156 3月 1 17:03 indices -rw-rw-r--. 1 zk zk 21587 3月 1 17:03 meta--SwJ6wKQTKCgg5-3B3bL3w.dat -rw-rw-r--. 1 zk zk 276 3月 1 17:03 snap--SwJ6wKQTKCgg5-3B3bL3w.dat
使用快照恢復集羣數據的命令也可簡單,以下所示(若恢復指定索引請在消息體中指定):app
curl –iXPOST 'localhost:9200/_snapshot/zk_backup/snapshot_20190301/ _restore?pretty'
須要注意的是,若是當前集羣中存在於快照同名的索引,系統會報錯。解決方法是刪除當前集羣中同名索引,或使用rename模式修改恢復到集羣中的索引名字(在消息體中定義)。運維
編程隨筆-ElasticSearch知識導圖(1):全景
編程隨筆-ElasticSearch知識導圖(2):分佈式架構
編程隨筆-ElasticSearch知識導圖(3):映射
編程隨筆-ElasticSearch知識導圖(4):搜索
編程隨筆-ElasticSearch知識導圖(5):聚合
編程隨筆-ElasticSearch知識導圖(6):管理curl