摘要:最近在做的信息集群和節(jié)點(diǎn)監(jiān)控,特此稍微整理下學(xué)到的東西。這篇文章主要介紹集群的監(jiān)控。把想象成一個(gè)需要及時(shí)調(diào)查的警告。指出你集群中的主分片數(shù)量。運(yùn)行在虛擬機(jī)中,這意味著垃圾回收的持續(xù)時(shí)間和頻率將成為其他重要的監(jiān)控領(lǐng)域。
最近在做 ElasticSearch 的信息(集群和節(jié)點(diǎn))監(jiān)控,特此稍微整理下學(xué)到的東西。這篇文章主要介紹集群的監(jiān)控。
要監(jiān)控哪些 ElasticSearch metricsElasticsearch 提供了大量的 Metric,可以幫助您檢測(cè)到問題的跡象,在遇到節(jié)點(diǎn)不可用、out-of-memory、long garbage collection times 的時(shí)候采取相應(yīng)措施。但是指標(biāo)太多了,有時(shí)我們并不需要這么多,這就需要我們進(jìn)行篩選。
集群健康一個(gè) Elasticsearch 集群至少包括一個(gè)節(jié)點(diǎn)和一個(gè)索引?;蛘咚?可能有一百個(gè)數(shù)據(jù)節(jié)點(diǎn)、三個(gè)多帶帶的主節(jié)點(diǎn),以及一小打客戶端節(jié)點(diǎn)——這些共同操作一千個(gè)索引(以及上萬個(gè)分片)。
不管集群擴(kuò)展到多大規(guī)模,你都會(huì)想要一個(gè)快速獲取集群狀態(tài)的途徑。Cluster Health API 充當(dāng)?shù)木褪沁@個(gè)角色。你可以把它想象成是在一萬英尺的高度鳥瞰集群。它可以告訴你安心吧一切都好,或者警告你集群某個(gè)地方有問題。
讓我們執(zhí)行一下 cluster-health API 然后看看響應(yīng)體是什么樣子的:
GET _cluster/health
和 Elasticsearch 里其他 API 一樣,cluster-health 會(huì)返回一個(gè) JSON 響應(yīng)。這對(duì)自動(dòng)化和告警系統(tǒng)來說,非常便于解析。響應(yīng)中包含了和你集群有關(guān)的一些關(guān)鍵信息:
{ "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 }
響應(yīng)信息中最重要的一塊就是 status 字段。狀態(tài)可能是下列三個(gè)值之一 :
status | 含義 |
---|---|
green | 所有的主分片和副本分片都已分配。你的集群是 100% 可用的。 |
yellow | 所有的主分片已經(jīng)分片了,但至少還有一個(gè)副本是缺失的。不會(huì)有數(shù)據(jù)丟失,所以搜索結(jié)果依然是完整的。不過,你的高可用性在某種程度上被弱化。如果 更多的 分片消失,你就會(huì)丟數(shù)據(jù)了。把 yellow 想象成一個(gè)需要及時(shí)調(diào)查的警告。 |
red | 至少一個(gè)主分片(以及它的全部副本)都在缺失中。這意味著你在缺少數(shù)據(jù):搜索只能返回部分?jǐn)?shù)據(jù),而分配到這個(gè)分片上的寫入請(qǐng)求會(huì)返回一個(gè)異常。 |
number_of_nodes 和 number_of_data_nodes 這個(gè)命名完全是自描述的。
active_primary_shards 指出你集群中的主分片數(shù)量。這是涵蓋了所有索引的匯總值。
active_shards 是涵蓋了所有索引的所有分片的匯總值,即包括副本分片。
relocating_shards 顯示當(dāng)前正在從一個(gè)節(jié)點(diǎn)遷往其他節(jié)點(diǎn)的分片的數(shù)量。通常來說應(yīng)該是 0,不過在 Elasticsearch 發(fā)現(xiàn)集群不太均衡時(shí),該值會(huì)上漲。比如說:添加了一個(gè)新節(jié)點(diǎn),或者下線了一個(gè)節(jié)點(diǎn)。
initializing_shards 是剛剛創(chuàng)建的分片的個(gè)數(shù)。比如,當(dāng)你剛創(chuàng)建第一個(gè)索引,分片都會(huì)短暫的處于 initializing 狀態(tài)。這通常會(huì)是一個(gè)臨時(shí)事件,分片不應(yīng)該長(zhǎng)期停留在 initializing狀態(tài)。你還可能在節(jié)點(diǎn)剛重啟的時(shí)候看到 initializing 分片:當(dāng)分片從磁盤上加載后,它們會(huì)從initializing 狀態(tài)開始。
unassigned_shards 是已經(jīng)在集群狀態(tài)中存在的分片,但是實(shí)際在集群里又找不著。通常未分配分片的來源是未分配的副本。比如,一個(gè)有 5 分片和 1 副本的索引,在單節(jié)點(diǎn)集群上,就會(huì)有 5 個(gè)未分配副本分片。如果你的集群是 red 狀態(tài),也會(huì)長(zhǎng)期保有未分配分片(因?yàn)槿鄙僦鞣制?/p> 集群統(tǒng)計(jì)
集群統(tǒng)計(jì)信息包含 集群的分片數(shù),文檔數(shù),存儲(chǔ)空間,緩存信息,內(nèi)存作用率,插件內(nèi)容,文件系統(tǒng)內(nèi)容,JVM 作用狀況,系統(tǒng) CPU,OS 信息,段信息。
查看全部統(tǒng)計(jì)信息命令:
curl -XGET "http://localhost:9200/_cluster/stats?human&pretty"
返回 JSON 結(jié)果:
{ "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 } ] } }內(nèi)存使用和 GC 指標(biāo)
在運(yùn)行 Elasticsearch 時(shí),內(nèi)存是您要密切監(jiān)控的關(guān)鍵資源之一。 Elasticsearch 和 Lucene 以兩種方式利用節(jié)點(diǎn)上的所有可用 RAM:JVM heap 和文件系統(tǒng)緩存。 Elasticsearch 運(yùn)行在Java虛擬機(jī)(JVM)中,這意味著JVM垃圾回收的持續(xù)時(shí)間和頻率將成為其他重要的監(jiān)控領(lǐng)域。
上面返回的 JSON監(jiān)控的指標(biāo)有我個(gè)人覺得有這些:
nodes.successful
nodes.failed
nodes.total
nodes.mem.used_percent
nodes.process.cpu.percent
nodes.jvm.mem.heap_used
可以看到 JSON 文件是很復(fù)雜的,如果從這復(fù)雜的 JSON 中獲取到對(duì)應(yīng)的指標(biāo)(key)的值呢,這里請(qǐng)看文章 :JsonPath —— JSON 解析神器
最后這里主要講下 ES 集群的一些監(jiān)控信息,有些監(jiān)控指標(biāo)是個(gè)人覺得需要監(jiān)控的,但是具體情況還是得看需求了。下篇文章主要講節(jié)點(diǎn)的監(jiān)控信息。轉(zhuǎn)載請(qǐng)注明地址:http://www.54tianzhisheng.cn/2017/10/15/ElasticSearch-cluster-health-metrics/
參考資料1、How to monitor Elasticsearch performance
2、ElasticSearch 性能監(jiān)控
3、cluster-health
4、cluster-stats
相關(guān)閱讀1、Elasticsearch 默認(rèn)分詞器和中分分詞器之間的比較及使用方法
2、全文搜索引擎 Elasticsearch 集群搭建入門教程
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70895.html
摘要:在這篇文章中,我們將使用來部署,并將它用于追蹤上的和。我們將使用創(chuàng)建一個(gè)索引模板,來調(diào)整相關(guān)配置。這樣,一個(gè)配置正確的已經(jīng)準(zhǔn)備好被使用了后續(xù)我們還將會(huì)對(duì)它進(jìn)行一些配置。雖然和已經(jīng)部署好了,我們還是需要對(duì)進(jìn)行一些操作。 介紹 Elasticsearch是ELK(Elasticsearch/Logstash/Kibana)的基石。在這篇文章中,我們將使用Rancher Catalog來部署...
摘要:當(dāng)時(shí)自己在本地測(cè)試搭建集群后,給分配了另外一個(gè)任務(wù)就是去了解中的自帶分詞英文分詞中文分詞的相同與差異以及自己建立分詞需要注意的點(diǎn)。還有就是官網(wǎng)的文檔了,非常非常詳細(xì),還有,版本的是有中文的官方文檔,可以湊合著看。 前提 人工智能、大數(shù)據(jù)快速發(fā)展的今天,對(duì)于 TB 甚至 PB 級(jí)大數(shù)據(jù)的快速檢索已然成為剛需,大型企業(yè)早已淹沒在系統(tǒng)生成的浩瀚數(shù)據(jù)流當(dāng)中。大數(shù)據(jù)技術(shù)業(yè)已集中在如何存儲(chǔ)和處理這...
閱讀 2701·2021-09-26 10:19
閱讀 2141·2021-09-24 10:27
閱讀 2526·2021-09-01 10:42
閱讀 2308·2019-08-29 16:09
閱讀 2491·2019-08-29 15:17
閱讀 1452·2019-08-29 15:09
閱讀 639·2019-08-29 11:14
閱讀 2306·2019-08-26 13:25