摘要:最近在做的信息集群和節點監控,特此稍微整理下學到的東西。這篇文章主要介紹集群的監控。把想象成一個需要及時調查的警告。指出你集群中的主分片數量。運行在虛擬機中,這意味著垃圾回收的持續時間和頻率將成為其他重要的監控領域。
最近在做 ElasticSearch 的信息(集群和節點)監控,特此稍微整理下學到的東西。這篇文章主要介紹集群的監控。
要監控哪些 ElasticSearch metricsElasticsearch 提供了大量的 Metric,可以幫助您檢測到問題的跡象,在遇到節點不可用、out-of-memory、long garbage collection times 的時候采取相應措施。但是指標太多了,有時我們并不需要這么多,這就需要我們進行篩選。
集群健康一個 Elasticsearch 集群至少包括一個節點和一個索引。或者它 可能有一百個數據節點、三個多帶帶的主節點,以及一小打客戶端節點——這些共同操作一千個索引(以及上萬個分片)。
不管集群擴展到多大規模,你都會想要一個快速獲取集群狀態的途徑。Cluster Health API 充當的就是這個角色。你可以把它想象成是在一萬英尺的高度鳥瞰集群。它可以告訴你安心吧一切都好,或者警告你集群某個地方有問題。
讓我們執行一下 cluster-health API 然后看看響應體是什么樣子的:
GET _cluster/health
和 Elasticsearch 里其他 API 一樣,cluster-health 會返回一個 JSON 響應。這對自動化和告警系統來說,非常便于解析。響應中包含了和你集群有關的一些關鍵信息:
{ "cluster_name": "elasticsearch_zach", "status": "green", "timed_out": false, "number_of_nodes": 1, "number_of_data_nodes": 1, "active_primary_shards": 10, "active_shards": 10, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 0 }
響應信息中最重要的一塊就是 status 字段。狀態可能是下列三個值之一 :
status | 含義 |
---|---|
green | 所有的主分片和副本分片都已分配。你的集群是 100% 可用的。 |
yellow | 所有的主分片已經分片了,但至少還有一個副本是缺失的。不會有數據丟失,所以搜索結果依然是完整的。不過,你的高可用性在某種程度上被弱化。如果 更多的 分片消失,你就會丟數據了。把 yellow 想象成一個需要及時調查的警告。 |
red | 至少一個主分片(以及它的全部副本)都在缺失中。這意味著你在缺少數據:搜索只能返回部分數據,而分配到這個分片上的寫入請求會返回一個異常。 |
number_of_nodes 和 number_of_data_nodes 這個命名完全是自描述的。
active_primary_shards 指出你集群中的主分片數量。這是涵蓋了所有索引的匯總值。
active_shards 是涵蓋了所有索引的所有分片的匯總值,即包括副本分片。
relocating_shards 顯示當前正在從一個節點遷往其他節點的分片的數量。通常來說應該是 0,不過在 Elasticsearch 發現集群不太均衡時,該值會上漲。比如說:添加了一個新節點,或者下線了一個節點。
initializing_shards 是剛剛創建的分片的個數。比如,當你剛創建第一個索引,分片都會短暫的處于 initializing 狀態。這通常會是一個臨時事件,分片不應該長期停留在 initializing狀態。你還可能在節點剛重啟的時候看到 initializing 分片:當分片從磁盤上加載后,它們會從initializing 狀態開始。
unassigned_shards 是已經在集群狀態中存在的分片,但是實際在集群里又找不著。通常未分配分片的來源是未分配的副本。比如,一個有 5 分片和 1 副本的索引,在單節點集群上,就會有 5 個未分配副本分片。如果你的集群是 red 狀態,也會長期保有未分配分片(因為缺少主分片)。
集群統計集群統計信息包含 集群的分片數,文檔數,存儲空間,緩存信息,內存作用率,插件內容,文件系統內容,JVM 作用狀況,系統 CPU,OS 信息,段信息。
查看全部統計信息命令:
curl -XGET "http://localhost:9200/_cluster/stats?human&pretty"
返回 JSON 結果:
{ "timestamp": 1459427693515, "cluster_name": "elasticsearch", "status": "green", "indices": { "count": 2, "shards": { "total": 10, "primaries": 10, "replication": 0, "index": { "shards": { "min": 5, "max": 5, "avg": 5 }, "primaries": { "min": 5, "max": 5, "avg": 5 }, "replication": { "min": 0, "max": 0, "avg": 0 } } }, "docs": { "count": 10, "deleted": 0 }, "store": { "size": "16.2kb", "size_in_bytes": 16684, "throttle_time": "0s", "throttle_time_in_millis": 0 }, "fielddata": { "memory_size": "0b", "memory_size_in_bytes": 0, "evictions": 0 }, "query_cache": { "memory_size": "0b", "memory_size_in_bytes": 0, "total_count": 0, "hit_count": 0, "miss_count": 0, "cache_size": 0, "cache_count": 0, "evictions": 0 }, "completion": { "size": "0b", "size_in_bytes": 0 }, "segments": { "count": 4, "memory": "8.6kb", "memory_in_bytes": 8898, "terms_memory": "6.3kb", "terms_memory_in_bytes": 6522, "stored_fields_memory": "1.2kb", "stored_fields_memory_in_bytes": 1248, "term_vectors_memory": "0b", "term_vectors_memory_in_bytes": 0, "norms_memory": "384b", "norms_memory_in_bytes": 384, "doc_values_memory": "744b", "doc_values_memory_in_bytes": 744, "index_writer_memory": "0b", "index_writer_memory_in_bytes": 0, "version_map_memory": "0b", "version_map_memory_in_bytes": 0, "fixed_bit_set": "0b", "fixed_bit_set_memory_in_bytes": 0, "file_sizes": {} }, "percolator": { "num_queries": 0 } }, "nodes": { "count": { "total": 1, "data": 1, "coordinating_only": 0, "master": 1, "ingest": 1 }, "versions": [ "5.6.3" ], "os": { "available_processors": 8, "allocated_processors": 8, "names": [ { "name": "Mac OS X", "count": 1 } ], "mem" : { "total" : "16gb", "total_in_bytes" : 17179869184, "free" : "78.1mb", "free_in_bytes" : 81960960, "used" : "15.9gb", "used_in_bytes" : 17097908224, "free_percent" : 0, "used_percent" : 100 } }, "process": { "cpu": { "percent": 9 }, "open_file_descriptors": { "min": 268, "max": 268, "avg": 268 } }, "jvm": { "max_uptime": "13.7s", "max_uptime_in_millis": 13737, "versions": [ { "version": "1.8.0_74", "vm_name": "Java HotSpot(TM) 64-Bit Server VM", "vm_version": "25.74-b02", "vm_vendor": "Oracle Corporation", "count": 1 } ], "mem": { "heap_used": "57.5mb", "heap_used_in_bytes": 60312664, "heap_max": "989.8mb", "heap_max_in_bytes": 1037959168 }, "threads": 90 }, "fs": { "total": "200.6gb", "total_in_bytes": 215429193728, "free": "32.6gb", "free_in_bytes": 35064553472, "available": "32.4gb", "available_in_bytes": 34802409472 }, "plugins": [ { "name": "analysis-icu", "version": "5.6.3", "description": "The ICU Analysis plugin integrates Lucene ICU module into elasticsearch, adding ICU relates analysis components.", "classname": "org.elasticsearch.plugin.analysis.icu.AnalysisICUPlugin", "has_native_controller": false }, { "name": "ingest-geoip", "version": "5.6.3", "description": "Ingest processor that uses looksup geo data based on ip adresses using the Maxmind geo database", "classname": "org.elasticsearch.ingest.geoip.IngestGeoIpPlugin", "has_native_controller": false }, { "name": "ingest-user-agent", "version": "5.6.3", "description": "Ingest processor that extracts information from a user agent", "classname": "org.elasticsearch.ingest.useragent.IngestUserAgentPlugin", "has_native_controller": false } ] } }內存使用和 GC 指標
在運行 Elasticsearch 時,內存是您要密切監控的關鍵資源之一。 Elasticsearch 和 Lucene 以兩種方式利用節點上的所有可用 RAM:JVM heap 和文件系統緩存。 Elasticsearch 運行在Java虛擬機(JVM)中,這意味著JVM垃圾回收的持續時間和頻率將成為其他重要的監控領域。
上面返回的 JSON監控的指標有我個人覺得有這些:
nodes.successful
nodes.failed
nodes.total
nodes.mem.used_percent
nodes.process.cpu.percent
nodes.jvm.mem.heap_used
可以看到 JSON 文件是很復雜的,如果從這復雜的 JSON 中獲取到對應的指標(key)的值呢,這里請看文章 :JsonPath —— JSON 解析神器
最后這里主要講下 ES 集群的一些監控信息,有些監控指標是個人覺得需要監控的,但是具體情況還是得看需求了。下篇文章主要講節點的監控信息。轉載請注明地址:http://www.54tianzhisheng.cn/2017/10/15/ElasticSearch-cluster-health-metrics/
參考資料1、How to monitor Elasticsearch performance
2、ElasticSearch 性能監控
3、cluster-health
4、cluster-stats
相關閱讀1、Elasticsearch 默認分詞器和中分分詞器之間的比較及使用方法
2、全文搜索引擎 Elasticsearch 集群搭建入門教程
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/70895.html
摘要:在這篇文章中,我們將使用來部署,并將它用于追蹤上的和。我們將使用創建一個索引模板,來調整相關配置。這樣,一個配置正確的已經準備好被使用了后續我們還將會對它進行一些配置。雖然和已經部署好了,我們還是需要對進行一些操作。 介紹 Elasticsearch是ELK(Elasticsearch/Logstash/Kibana)的基石。在這篇文章中,我們將使用Rancher Catalog來部署...
摘要:當時自己在本地測試搭建集群后,給分配了另外一個任務就是去了解中的自帶分詞英文分詞中文分詞的相同與差異以及自己建立分詞需要注意的點。還有就是官網的文檔了,非常非常詳細,還有,版本的是有中文的官方文檔,可以湊合著看。 前提 人工智能、大數據快速發展的今天,對于 TB 甚至 PB 級大數據的快速檢索已然成為剛需,大型企業早已淹沒在系統生成的浩瀚數據流當中。大數據技術業已集中在如何存儲和處理這...
閱讀 2711·2021-09-26 10:19
閱讀 2156·2021-09-24 10:27
閱讀 2535·2021-09-01 10:42
閱讀 2316·2019-08-29 16:09
閱讀 2497·2019-08-29 15:17
閱讀 1461·2019-08-29 15:09
閱讀 649·2019-08-29 11:14
閱讀 2315·2019-08-26 13:25