W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
Solr包含一個開發(fā)人員API和工具,用于在Solr服務及其各個組件的整個生命周期中收集詳細的以性能為導向的度量標準。
在內部,此功能使用 Dropwizard 度量 API,該API使用以下類別的度量工具來度量事件:
每個具有唯一名稱的相關度量標準都在度量注冊表中進行管理。Solr維護了幾個這樣的注冊表,每個都對應一個高級組,例如:jvm、jetty、node和core(參見下面的公制注冊表)。
對于每個組(或每個注冊表),可以有幾個reporter,這些reporter是負責從選定的注冊中心到外部系統(tǒng)的度量的通信的組件。目前實施的reporter支持通過JMX、Ganglia、Graphite和SLF4J發(fā)布指標。
還有一個專門的/admin/metrics處理程序,可以查詢以報告所有或一個子集的當前指標從多個注冊。
Solr包含多個度量注冊表,它將相關的度量標準進行分組。
度量標準從流程開始直到關閉時,通過組件的所有生命周期進行維護和累積 - 例如,通過可能的幾個加載,卸載或重命名操作來跟蹤特定SolrCore的度量標準,并且僅在核心被明確刪除。但是,度量標準在進程重新啟動之間不會持久;重新啟動Solr將放棄所有收集的度量值。
以下這些是收集的主要度量標準組:
此注冊表在solr.jvm中返回,并包含以下信息。使用Metrics API發(fā)出請求時,您可以指定&group=jvm限制為僅限這些度量標準。
此注冊表在solr.node返回并包含以下信息。使用Metrics API發(fā)出請求時,您可以指定&group=node限制為僅限這些度量標準。
Core (SolrCore) 注冊表包括solr.core.<collection>,每個核心一個。使用Metrics API發(fā)出請求時,您可以指定&group=core限制為僅限這些度量標準。
此注冊表返回solr.jetty并包含以下信息。使用Metrics API發(fā)出請求時,您可以指定&group=jetty限制為僅限這些度量標準。
未來,將為分片領導者和集群節(jié)點添加度量,包括來自每個核心度量的聚合。
系統(tǒng)中可用的指標可以在solr.xml通過修改<metrics>元素來定制。
Note:有關該Solr.xml文件的更多信息,在何處查找以及如何編輯, 請參閱“Solr.xml的格式”部分。
本部分的solr.xml允許您定義被認為系統(tǒng)敏感的系統(tǒng)屬性,但是不應通過Metrics API公開。
如果未定義此部分,將使用以下默認配置來隱藏密碼和身份驗證信息:
<metrics>
<hiddenSysProps>
<str>javax.net.ssl.keyStorePassword</str>
<str>javax.net.ssl.trustStorePassword</str>
<str>basicauth</str>
<str>zkDigestPassword</str>
<str>zkDigestReadonlyPassword</str>
</hiddenSysProps>
</metrics>
reporter使用Solr生成的度量數(shù)據。有關如何配置自定義reporter的詳細信息, 請參閱下面的reporter部分。
供應商幫助Solr生成度量數(shù)據。solr.xml的<metrics><suppliers>部分允許您定義自己的度量標準實現(xiàn)并為其配置參數(shù)。
自定義度量標準供應商的實現(xiàn)超出了本指南的范圍,但通過下面描述的元素,還可以使用默認實現(xiàn)進行其他自定義設置。
此元素定義計數(shù)器供應商的實現(xiàn)和配置。默認實現(xiàn)不支持任何配置。
該元素定義了Counter
供應商的實現(xiàn)和配置。默認實現(xiàn)不支持任何配置。
這個元素定義了一個Meter
供應商的實現(xiàn)。默認的實現(xiàn)支持一個額外的參數(shù):
用于計算EWMA速率的時鐘類型。支持的值是:
user
,默認值,使用System.nanoTime()
cpu
,它使用當前線程的CPU時間
這個元素定義了一個Histogram
供應商的實現(xiàn)。這個元素也支持上面用meter
元素顯示的 clock 參數(shù),還有:
要使用的 Reservoir 實現(xiàn)的完全限定的類名稱。默認值是com.codahale.metrics.ExponentiallyDecayingReservoir
,但是Solr使用的Codahale Metrics庫還有其他選項。在上述提到的限制內支持以下參數(shù):
size
,存儲庫大小。默認值是1028。
alpha
,衰變參數(shù)。默認值是0.015。這只適用于ExponentiallyDecayingReservoir
。
window
,窗口的大小,以秒為單位,只對SlidingTimeWindowReservoir
有效。默認值是300(5分鐘)。
這個元素定義了一個Timer
供應商的實現(xiàn)。默認實現(xiàn)支持上面描述的clock
和reservoir
參數(shù)。
作為solr.xml其中的一部分定義,它定義了這些自定義參數(shù)中的一些,下面定義了默認的Meter表供應商具有非默認的clock,默認Timer值與非默認的庫一起使用:
<metrics>
<suppliers>
<meter>
<str name="clock">cpu</str>
</meter>
<timer>
<str name="reservoir">com.codahale.metrics.SlidingTimeWindowReservoir</str>
<long name="window">600</long>
</timer>
</suppliers>
</metrics>
reporter配置在<metrics><reporter>部分的solr.xml文件中指定,例如:
<solr>
<metrics>
<reporter name="graphite" group="node, jvm" class="org.apache.solr.metrics.reporters.SolrGraphiteReporter">
<str name="host">graphite-server</str>
<int name="port">9999</int>
<int name="period">60</int>
</reporter>
<reporter name="collection1Updates" registry="solr.core.collection1" class="org.apache.solr.metrics.reporters.SolrSlf4jReporter">
<int name="period">300</int>
<str name="prefix">example</str>
<str name="logger">updatesLogger</str>
<str name="filter">QUERYHANDLER./update</str>
</reporter>
</metrics>
...
</solr>
這個例子配置了兩個reporter:Graphite和SLF4J。請參閱下面有關如何配置reporter的更多細節(jié)。
reporter插件使用以下參數(shù):
此外,可以在嵌套元素中指定幾個特定于實現(xiàn)的初始化參數(shù)。SLF4J,Ganglia和Graphite reporter有一些共同點:
reporter被實例化為他們被配置的每個組和注冊表,當相應的組件被初始化時(例如,在JVM啟動或SolrCore加載)。
當reporter被創(chuàng)建時,他們的配置被驗證(例如,建立必要的連接)。在初始化階段未捕獲的錯誤導致reporter從運行配置中被丟棄。
當相應組件關閉時(例如,在SolrCore關閉或JVM關閉時),reporter被關閉,但是他們報告的度量標準仍然保留在相應的注冊表中,如上一節(jié)所述。
以下各節(jié)提供了有關實現(xiàn)特定參數(shù)的信息。所有與Solr一起提供的實現(xiàn)類可以在org.apache.solr.metrics.reporters下面找到。
JMX Reporter使用這個org.apache.solr.metrics.reporters.SolrJmxReporter類。
它需要以下參數(shù):
reporter創(chuàng)建的對象名稱是分層的、點分隔的,并且結構正確,以形成相應的層次結構,例如JConsole。該層次結構由以下元素按照自頂向下的順序組成:
JMX Reporter取代了7.0之前的Solr版本中可用的JMX功能。如果您從早期版本升級并在Solr啟動時運行MBean Server,則Solr將自動發(fā)現(xiàn)本地MBean服務器的位置,并使用SolrJmxReporter的默認配置。
您可以在啟動時通過將-Dcom.sun.management.jmxremote添加到啟動命令來啟動具有系統(tǒng)屬性的本地 MBean 服務器到啟動命令。這不會將reporter配置添加到solr.xml中,所以如果您使用系統(tǒng)屬性啟用它,則必須始終使用系統(tǒng)屬性啟動Solr,否則在后續(xù)啟動時將不啟用 JMX。
SLF4J Reporter使用這個org.apache.solr.metrics.reporters.SolrSlf4jReporter類。
除了上面的公共參數(shù)外,它還需要下列參數(shù):
用戶可以指定logger名稱(例如,Log4j 配置中相應的日志記錄配置),以便將與度量相關的日志記錄輸出到單獨的文件,然后由外部應用程序進行處理。
本reporter生成的每個日志行由特定于配置的字段和一條符合以下格式的消息組成:
type=COUNTER, name={}, count={}
type=GAUGE, name={}, value={}
type=TIMER, name={}, count={}, min={}, max={}, mean={}, stddev={}, median={}, p75={}, p95={}, p98={}, p99={}, p999={}, mean_rate={}, m1={}, m5={}, m15={}, rate_unit={}, duration_unit={}
type=METER, name={}, count={}, mean_rate={}, m1={}, m5={}, m15={}, rate_unit={}
type=HISTOGRAM, name={}, count={}, min={}, max={}, mean={}, stddev={}, median={}, p75={}, p95={}, p98={}, p99={}, p999={}
(花括號僅作為實際值的占位符添加)。
該Graphite Reporter使用org.apache.solr.metrics.reporters.SolrGraphiteReporter)類。
除了上面的通用屬性之外,它還具有以下屬性:
如果使用純文本協(xié)議(pickled==false),則可以使用reporter與Graphite以外的其他系統(tǒng)進行集成,只要它們能夠接受以以下格式的空間分隔和以線為導向的網絡輸入:
dot.separated.metric.name[.and.attribute] value epochTimestamp
例如:
example.solr.node.cores.lazy 0 1482932097
example.solr.node.cores.loaded 1 1482932097
example.solr.jetty.org.eclipse.jetty.server.handler.DefaultHandler.2xx-responses.count 21 1482932097
example.solr.jetty.org.eclipse.jetty.server.handler.DefaultHandler.2xx-responses.m1_rate 2.5474287707930614 1482932097
example.solr.jetty.org.eclipse.jetty.server.handler.DefaultHandler.2xx-responses.m5_rate 3.8003171557510305 1482932097
example.solr.jetty.org.eclipse.jetty.server.handler.DefaultHandler.2xx-responses.m15_rate 4.0623076220244245 1482932097
example.solr.jetty.org.eclipse.jetty.server.handler.DefaultHandler.2xx-responses.mean_rate 0.5698031798408144 1482932097
該Ganglia Reporter使用org.apache.solr.metrics.reporters.SolrGangliaReporter類。
除了上面的常見參數(shù)外,它還有以下參數(shù):
這些度量標準僅在每個核心的基礎上可用??绾诵膮R總的度量尚不可用。
這些度量標準在每個核心(例如 solr.core.collection1…?.)的相應注冊表中收集,在INDEX類別下。
基本度量標準總是被收集 - 在solrconfig.xml的/config/indexConfig/metrics部分中使用布爾參數(shù)可以打開其他度量的集合:
<config>
...
<indexConfig>
<metrics>
<majorMergeDocs>524288</majorMergeDocs>
<bool name="mergeDetails">true</bool>
<bool name="directoryDetails">true</bool>
</metrics>
...
</indexConfig>
...
</config>
收集以下指標:
此外,還會報告以下量規(guī),以幫助監(jiān)視索引合并操作的瞬間狀態(tài):
如果布爾標志mergeDetails為true,則收集以下附加度量標準:
該admin/metrics端點提供對所有度量組的所有度量的訪問。
有幾個查詢參數(shù)可用于將您的請求僅限于某些度量:
group
要檢索的度量標準組。默認值是all
檢索所有組的所有度量標準。其他可能的值是:jvm
,jetty
,node
和core
。請求中可以指定多個組;多個組名應該用逗號分隔。
type
要檢索的度量的類型。默認是all
檢索所有度量類型。其他可能的值是counter
,gauge
,histogram
,meter
和timer
。一個請求中可以指定多個類型;多個類型應該用逗號隔開。
度量標準名稱的第一個字符,它將過濾返回給那些以提供的字符串開頭的度量標準。它可以與group
或type
參數(shù)結合使用。可以在請求中指定多個前綴;多個前綴應該用逗號分隔。前綴匹配也是區(qū)分大小寫的。
允許從任何復合度量中僅請求該度量。多個property
參數(shù)可以組合起來作為OR請求。例如,要僅從所有度量標準類型和組中獲得第99和第999百分位數(shù)值,可以添加&property=p99_ms&property=p999_ms
到您的請求中。這可以結合group
,type
以及prefix
如果有必要。
如果為false,則會返回更詳細的響應格式。而不是像這樣的回應:
"metrics": [
"solr.core.gettingstarted",
{
"CORE.aliases": {
"value": ["gettingstarted"]
},
"CORE.coreName": {
"value": "gettingstarted"
},
"CORE.indexDir": {
"value": "/solr/example/schemaless/solr/gettingstarted/data/index/"
},
"CORE.instanceDir": {
"value": "/solr/example/schemaless/solr/gettingstarted"
},
"CORE.refCount": {
"value": 1
},
"CORE.startTime": {
"value": "2017-03-14T11:43:23.822Z"
}
}
]
答案將如下所示:
"metrics": [
"solr.core.gettingstarted",
{
"CORE.aliases": [
"gettingstarted"
],
"CORE.coreName": "gettingstarted",
"CORE.indexDir": "/solr/example/schemaless/solr/gettingstarted/data/index/",
"CORE.instanceDir": "/solr/example/schemaless/solr/gettingstarted",
"CORE.refCount": 1,
"CORE.startTime": "2017-03-14T11:43:23.822Z"
}
]
與其他請求處理程序一樣,Metrics API也可以使用該wt參數(shù)來定義輸出格式。
在“core”組中只請求“counter”類型的度量,以JSON返回:
http://localhost:8983/solr/admin/metrics?type=counter&group=core
僅請求以“INDEX”開頭的以“XML”返回的“core”組度量標準:
http://localhost:8983/solr/admin/metrics?wt=xml&prefix=INDEX&group=core
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: