指標回報

Solr 包含開發人員 API 和檢測功能,用於在 Solr 服務及其各種元件的生命週期中收集詳細的效能導向指標。

在內部,此功能使用 Dropwizard 指標 API,它使用以下類別的計量器來測量事件

  • 計數器 - 簡單地計算事件。它們提供單一的長整數值,例如,請求的數量。

  • 計量器 - 額外計算事件的速率。提供計數(如上)和 1 分鐘、5 分鐘和 15 分鐘的指數衰減速率,類似於 Unix 系統負載平均值。

  • 直方圖 - 根據事件的值計算事件的近似分佈。提供以下近似統計資料,與上述類似的指數衰減:平均值(算術平均值)、中位數、最大值、最小值、標準差,以及第 75th、95th、98th、99th 和 999th 百分位數。

  • 計時器 - 測量事件的數量和持續時間。它們提供計數和計時的直方圖。

  • 儀表 - 提供目前值的即時讀取,例如,目前佇列深度、目前活動連線數、可用堆積大小。

由於許多合理的原因,這些計量器中的某些計量器可能會遺失或空白。在這些情況下,任何類型的遺失值預設都會以 null 傳回,因此空白值不會影響平均值或直方圖。這可針對數種遺失值類型進行設定;請參閱下方的 「<metrics> <missingValues> 元素」 一節。

每個具有唯一名稱的相關指標群組都會在指標登錄中進行管理。Solr 維護數個這類登錄,每個登錄都對應到一個高階群組,例如:jvmjettynodecore(請參閱下方的 「指標登錄」)。

對於每個群組(和/或每個登錄),可以有多個回報器,它們是負責將選定登錄中的指標傳輸到外部系統的元件。目前實作的回報器支援透過 JMX、Ganglia、Graphite 和 SLF4J 發出指標。

還有一個專用的 /admin/metrics 處理器,可以查詢以回報來自多個登錄的所有或部分目前指標。

指標登錄

Solr 包含多個指標登錄,這些登錄會將相關指標分組。

指標會從程序開始到關閉,在元件的所有生命週期中進行維護和累積 - 例如,特定 SolrCore 的指標會追蹤可能數個載入、卸載和/或重新命名作業,並且僅在明確刪除核心時才會刪除。但是,指標不會跨程序重新啟動而持續存在;重新啟動 Solr 會捨棄所有收集的指標。

以下是要收集的主要指標群組

JVM 登錄

此登錄會以 solr.jvm 傳回,並包含以下資訊。使用 指標 API 發出請求時,您可以指定 &group=jvm 以僅限於這些指標。

  • 直接和對應的緩衝集區

  • 類別載入/卸載

  • 作業系統記憶體、CPU 時間(以奈秒為單位)、檔案描述元、交換、系統負載

  • GC 計數和時間

  • 堆積、非堆積記憶體和 GC 集區

  • 執行緒數量、其狀態和死鎖

  • 系統屬性,例如 Java 資訊、各種安裝目錄路徑、連接埠和類似資訊。您可以修改 solr.xml 來控制此處顯示的內容。

Overseer 註冊表

此註冊表在以 SolrCloud 模式執行時會於 solr.overseer 回傳,並包含以下資訊。在使用 指標 API 發出請求時,您可以指定 &group=overseer 以僅限於這些指標。

  • Overseer 佇列的大小(集合工作佇列和叢集狀態更新佇列)

節點 / CoreContainer 註冊表

此註冊表在 solr.node 回傳,並包含以下資訊。在使用 指標 API 發出請求時,您可以指定 &group=node 以僅限於這些指標。

  • 處理常式請求(計數、計時):集合、資訊、管理、設定檔等。

  • 核心數量(已載入、延遲、已卸載)

核心 (SolrCore) 註冊表

核心 (SolrCore) 註冊表包含 solr.core.<collection>,每個核心一個。在使用 指標 API 發出請求時,您可以指定 &group=core 以僅限於這些指標。

  • 所有常見的 RequestHandlers 都會回報:請求計時器/計數器、逾時、錯誤。支援處理分散式分片請求的處理常式也會針對每種分散式請求回報 shardRequests 子計數器。

  • 索引層級事件:小型/大型合併的計量器、合併的文件數量、已刪除的文件數量、目前正在執行的合併及其大小的量測器。

  • 分片複本上的分片複寫和交易記錄重播,

  • 分片處理常式和更新處理常式的開啟/可用/待處理連線。

除了每個核心回報外,RequestHandlers 也可以設定為將核心層級指標彙總到節點層級。如果您每個節點有大量核心,並且對每個節點的彙總指標感興趣,這會很有用。您可以透過在 solrconfig.xml 中將 <bool name="aggregateNodeLevelMetricsEnabled">true</bool> 新增至RequestHandler 設定來設定此功能,例如

<requestHandler name="/select" class="solr.SearchHandler">
    <!-- default values for query parameters can be specified, these
         will be overridden by parameters in the request
      -->
    <lst name="defaults">
        <str name="echoParams">explicit</str>
        <int name="rows">10</int>
    </lst>

    <bool name="aggregateNodeLevelMetricsEnabled">true</bool>
</requestHandler>

Jetty 註冊表

此註冊表在 solr.jetty 回傳,並包含以下資訊。在使用 指標 API 發出請求時,您可以指定 &group=jetty 以僅限於這些指標。

  • 執行緒和集區,

  • 連線和請求計時器,

  • 按 HTTP 類別(1xx、2xx 等)的回應計量器

指標設定

您可以透過修改 solr.xml 中的 <metrics> 元素來自訂系統中可用的指標。

另請參閱 設定 solr.xml 章節,以瞭解有關 solr.xml 檔案的更多資訊、其所在位置以及如何編輯它。

停用指標收集

solr.xml 中的 <metrics> 元素支援一個屬性 enabled,該屬性採用布林值,例如 <metrics enabled="true">

此屬性的預設值為 true,表示 Solr 正在根據已設定的指標回報程式收集、處理和回報指標。它們也可以從指標 API 中取得。

此屬性的 false 值(<metrics enabled="false">)會關閉指標收集和處理。在內部,所有指標供應商都會被單例的 no-op 實作取代,這實際上消除了與指標收集相關的幾乎所有額外負荷。所有回報程式設定都會略過,而且指標 API 會停止回報任何指標,並僅在其回應中傳回 <error> 元素。

<metrics> <hiddenSysProps> 元素

solr.xml 的這個區段可讓您定義被視為系統敏感的系統屬性,不應透過指標 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>

<metrics> <reporters> 元素

回報程式會使用 Solr 產生的指標資料。如需如何設定自訂回報程式的詳細資訊,請參閱下方的 回報程式 章節。

<metrics> <suppliers> 元素

供應商可協助 Solr 產生指標資料。solr.xml<metrics><suppliers> 區段可讓您定義指標的自訂實作,並為其設定參數。

自訂指標供應商的實作不在本指南的範圍內,但透過以下所述的元素,可以使用預設實作進行其他自訂。

<counter>

此元素定義 Counter 供應商的實作和設定。預設實作不支援任何設定。

<meter>

此元素定義 Meter 供應商的實作。預設實作支援其他參數

<str name="clock">

選用

預設值:user

用於計算 EWMA 速率的時鐘類型。支援的值為:* user,使用 System.nanoTime() * cpu,使用目前執行緒的 CPU 時間

<histogram>

此元素定義 Histogram 供應商的實作。此元素也支援上述 meter 元素顯示的 clock 參數,以及

<str name="reservoir">

選用

預設值:com.codahale.metrics.ExponentiallyDecayingReservoir

要使用的 Reservoir 實作的完整類別名稱。預設值為 com.codahale.metrics.ExponentiallyDecayingReservoir,但使用 Solr 使用的 Codahale Metrics 程式庫,還有其他選項可用。

<int name="size">

選用

預設值:1028

儲存區大小。

<double name="alpha">

選用

預設值:0.015

衰減參數。這僅適用於 ExponentiallyDecayingReservoir

<long name="window">

選用

預設值:300

視窗大小,以秒為單位,且僅適用於 SlidingTimeWindowReservoir

<timer>

此元素定義 Timer 供應商的實作。預設實作支援上述的 clockreservoir 參數。

以下範例是定義其中一些自訂參數的 solr.xml 區段範例,它定義具有非預設 clock 的預設 Meter 供應商,而預設 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>

<metrics> <missingValues> 元素

當基礎值不可用時(例如,IndexReader 關閉時的「INDEX.sizeInBytes」),仍會回報長期存在的指標值。當不可用時,會直接略過複雜量測器(內部表示為 MetricsMap)的屬性(例如快取項目)等短期暫時指標,且其名稱和值都不會出現在註冊表中(或在 /admin/metrics 報告中)。

預設情況下,當遇到遺失的值時,無論指標類型為何,都會以 null 值回報。這可以在 solr.xml:/solr/metrics/missingValues 元素中設定,該元素可識別以下子元素(對於字串元素,支援 JSON 酬載)

nullNumber

選用

預設值:無

遇到遺失(null)的數值指標值時要使用的值。

notANumber

選用

預設值:無

遇到無效數值時要使用的值。

nullString

選用

預設值:無

遇到遺失(null)字串指標時要使用的值。

nullObject

選用

預設值:無

遇到遺失(null)複雜物件時要使用的值。

範例設定,會為遺失的數字傳回 null、為無效的數值傳回 -1、為遺失的字串傳回空字串,以及為遺失的複雜物件傳回 Map

<metrics>
  <missingValues>
    <null name="nullNumber"/>
    <int name="notANumber">-1</int>
    <str name="nullString"></str>
    <str name="nullObject">{"value":"missing"}</str>
  </missingValues>
</metrics>

快取執行緒指標

JVM 群組中的執行緒指標計算成本可能很高,因為它需要遍歷所有執行緒。您可以透過設定較高的快取到期間隔(以秒為單位)來避免每次呼叫指標 API (group=jvm) 都發生這種情況。例如,要快取執行緒指標 5 秒

<solr>
 <metrics>
  <caching>
   <int name="threadsIntervalSeconds">5</int>
  </caching>
  ...
 </metrics>
...
</solr>

回報程式

回報程式設定是在 solr.xml 檔案的 <metrics><reporter> 區段中指定,例如

<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="log_metrics" group="core" class="org.apache.solr.metrics.reporters.SolrSlf4jReporter">
      <int name="period">60</int>
      <str name="filter">QUERY./select.requestTimes</str>
      <str name="filter">QUERY./get.requestTimes</str>
      <str name="filter">UPDATE./update.requestTimes</str>
      <str name="filter">UPDATE./update.clientErrors</str>
      <str name="filter">UPDATE./update.errors</str>
      <str name="filter">SEARCHER.new.time</str>
      <str name="filter">SEARCHER.new.warmup</str>
      <str name="logger">org.apache.solr.metrics.reporters.SolrSlf4jReporter</str>
    </reporter>
  </metrics>
...
</solr>

此範例設定兩個回報程式:GraphiteSLF4J。如需如何設定回報程式的詳細資訊,請參閱下方。

回報程式引數

回報程式外掛程式使用以下引數

name

必要

預設值:無

回報程式外掛程式的唯一名稱。

class

必要

預設值:無

外掛程式的完整實作類別,它必須擴充 SolrMetricReporter

group

選用

預設值:無

一個或多個預先定義的群組(請參閱上方)。

registry

選用

預設值:無

一個或多個有效完整的註冊表名稱。

如果同時指定 groupregistry 屬性,則只會考慮 group 屬性。如果未指定任何屬性,則該外掛程式將用於所有群組和註冊表。可以指定多個群組或註冊表名稱,以逗號和/或空格分隔。

此外,可以在巢狀元素中指定數個實作特定的初始化引數。有些引數對於 SLF4J、Ganglia 和 Graphite 回報程式是通用的

period

選用

預設值:60

報告之間的間隔時間(以秒為單位)。

prefix

選用

預設值:空字串

要新增至指標名稱的前置詞,這有助於邏輯分組相關的 Solr 執行個體,例如機器名稱或叢集名稱。預設值為空字串,也就是只會使用註冊表名稱和指標名稱來形成完整指標名稱。

filter

選用

預設值:無

如果不是空的,則只會報告以該值開頭的指標名稱。預設值是不篩選,也就是將報告所選註冊表中的所有指標。

回報程式會在初始化個別元件時(例如,在 JVM 啟動或載入 SolrCore 時),針對它們所設定的每個群組和註冊表進行具現化。

當建立回報程式時,其設定會經過驗證(例如,建立必要的連線)。此初始化階段中未捕捉到的錯誤會導致回報程式從執行中的設定中捨棄。

當對應的元件關閉時(例如,在關閉 SolrCore 或 JVM 關機時),回報程式會關閉,但它們報告的指標仍會維持在各自的註冊表中,如上一節所述。

以下各節提供有關實作特定引數的資訊。Solr 提供的所有實作類別都可以在 org.apache.solr.metrics.reporters 下找到。

JMX 回報程式

JMX 回報程式使用 org.apache.solr.metrics.reporters.SolrJmxReporter 類別。

它採用以下引數

domain

選用

預設值:無

JMX 網域名稱。如果未指定,則會使用註冊表名稱。

serviceUrl

選用

預設值:無

JMX 伺服器的服務 URL。如果未指定,Solr 將嘗試偵測 JVM 是否有 MBean 伺服器,並使用該位址。請參閱下文以取得更多資訊。

agentId

選用

預設值:無

JMX 伺服器的代理程式 ID。請注意,可以指定 serviceUrlagentId 其中一個,但不能同時指定兩者。如果兩者都指定,則將使用預設的 MBean 伺服器。

此報表器建立的物件名稱是階層式的,以點分隔,但也經過適當的結構化,以便在 JConsole 等工具中形成對應的階層結構。此階層結構由以下由上而下順序的元素組成

  • 登錄名稱 (例如,solr.core.collection1.shard1.replica1)。以點分隔的登錄名稱也會被分割成 ObjectName 階層層級,因此此登錄的指標將會顯示在 JConsole 的 /solr/core/collection1/shard1/replica1 下,且每個網域部分都會被指派給 dom1, dom2, …​ domN 屬性。

  • 報表器名稱(報表器的 name 屬性值)

  • 請求處理器的類別、範圍和名稱

  • 或是來自其他元件的指標的其他 name1, name2, …​ nameN 元素。

JMX 報表器取代了 Solr 7.0 之前版本中提供的 JMX 功能。如果您是從較早版本升級,並且在 Solr 啟動時有 MBean 伺服器正在執行,Solr 將會自動偵測本機 MBean 伺服器的位置,並為 SolrJmxReporter 使用預設組態。

您可以使用啟動時的系統屬性來啟動本機 MBean 伺服器,方法是在您的啟動命令中新增 -Dcom.sun.management.jmxremote。這不會將報表器組態新增至 solr.xml,因此如果您使用系統屬性啟用它,您必須始終使用系統屬性啟動 Solr,否則 JMX 將在後續啟動中不會啟用。

SLF4J 報表器

SLF4J 報表器使用 org.apache.solr.metrics.reporters.SolrSlf4jReporter 類別。

除了上述說明的通用引數外,它還採用以下引數。

logger

選用

預設值:無

要使用的記錄器名稱。預設為空,在這種情況下,如果外掛程式組態中指定,則會使用群組(或是識別指標群組的登錄名稱的初始部分)。

使用者可以指定記錄器名稱(以及例如 Log4j 組態中的對應記錄器組態),將指標相關的記錄輸出到單獨的檔案中,然後由外部應用程式處理。以下是在 Solr 中提供的預設 log4j2.xml 的組態範例。這可以與本頁前面提供的 solr.xml 範例結合使用,以組態 SolrSlf4jReporter

<Configuration>
  <Appenders>
  ...
    <RollingFile
        name="MetricsFile"
        fileName="${sys:solr.log.dir}/solr_metrics.log"
        filePattern="${sys:solr.log.dir}/solr_metrics.log.%i" >
      <PatternLayout>
        <Pattern>
          %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%X{node_name} %X{collection} %X{shard} %X{replica} %X{core} %X{trace_id}] %m%n
        </Pattern>
      </PatternLayout>
      <Policies>
        <OnStartupTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="32 MB"/>
      </Policies>
      <DefaultRolloverStrategy max="10"/>
    </RollingFile>
  ...
  </Appenders>

  <Loggers>
  ...
    <Logger name="org.apache.solr.metrics.reporters.SolrSlf4jReporter" level="info" additivity="false">
      <AppenderRef ref="MetricsFile"/>
    </Logger>
  ...
  </Loggers>
</Configuration>

此報表器產生的每一行記錄都包含組態特定的欄位,以及遵循以下格式的訊息

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={}

(此處的大括號僅作為實際值的預留位置)。

此外,以下 MDC 上下文屬性會傳遞給記錄器,並可在記錄格式中使用

node_name

Solr 節點名稱(對於 SolrCloud 部署,否則為 null),前綴為 n:

registry

指標登錄名稱,前綴為 m:

對於特定於 SolrCore 的報表器,還可以取得以下屬性

collection

集合名稱,前綴為 c:

shard

分片名稱,前綴為 s:

replica

副本名稱(核心節點名稱),前綴為 r:

core

SolrCore 名稱,前綴為 x:

tag

報表器執行個體標籤,前綴為 t:

Graphite 報表器

Graphite 報表器使用 org.apache.solr.metrics.reporters.SolrGraphiteReporter) 類別。

除了上述的通用屬性外,它還採用以下屬性。

host

必要

預設值:無

執行 Graphite 伺服器的主機名稱。

port

必要

預設值:無

伺服器的連接埠號碼。

pickled

必要

預設值:false

如果為 true,則使用「pickle」Graphite 通訊協定,這可能會更有效率。

當使用純文字通訊協定(pickled==false)時,如果系統可以接受以空格分隔的網路導向輸入,其格式如下,則可以使用此報表器與 Graphite 以外的系統整合

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

核心層級指標

這些指標僅在每個核心的基礎上可用。可以使用分片和叢集報表器來彙總跨核心的指標。

索引合併指標

這些指標會收集在每個核心的各自登錄中(例如,solr.core.collection1…​),位於 INDEX 類別下。

指標收集由 solrconfig.xml<metrics> 區段中的布林值參數控制

基本指標

<config>
  ...
  <indexConfig>
    <metrics>
      <long name="majorMergeDocs">524288</long>
      <bool name="merge">true</bool>
    </metrics>
    ...
  </indexConfig>
...
</config>

詳細指標

<config>
  ...
  <indexConfig>
    <metrics>
      <long name="majorMergeDocs">524288</long>
      <bool name="mergeDetails">true</bool>
    </metrics>
    ...
  </indexConfig>
...
</config>

收集以下指標

  • INDEX.merge.major - 至少包含「majorMergeDocs」的合併操作的計時器(此參數的預設值為 512k 個文件)。

  • INDEX.merge.minor - 包含少於「majorMergeDocs」的合併操作的計時器。

  • INDEX.merge.errors - 合併錯誤的計數器。

  • INDEX.flush - 索引清除操作的計量器。

此外,還會報告以下量測器,這有助於監控索引合併操作的瞬時狀態

  • INDEX.merge.major.running - 執行中主要合併操作的數量(根據所使用的 MergeScheduler 實作,可能會有多個並行執行的合併操作)。

  • INDEX.merge.minor.running - 如上,適用於次要合併操作。

  • INDEX.merge.major.running.docs - 在主要合併操作中目前合併的區段中的文件總數。

  • INDEX.merge.minor.running.docs - 如上,適用於次要合併操作。

  • INDEX.merge.major.running.segments - 在主要合併操作中目前合併的區段數。

  • INDEX.merge.minor.running.segments - 如上,適用於次要合併操作。

如果布林值旗標 mergeDetails 為 true,則會收集以下其他指標

  • INDEX.merge.major.docs - 主要合併操作中合併的文件數的計量器

  • INDEX.merge.major.deletedDocs - 主要合併操作中清除的已刪除文件數的計量器

指標 API

admin/metrics 端點提供對所有指標群組的所有指標的存取權。

提供了一些查詢參數,以將您的請求限制為僅限某些指標

group

選用

預設值:all

要擷取的指標群組。值 all 會擷取所有群組的所有指標。其他可能的值為:jvmjettynodecore。可以在一個請求中指定多個群組;多個群組名稱應以逗號分隔。

type

選用

預設值:all

要擷取的指標類型。值 all 會擷取所有指標類型。其他可能的值為 countergaugehistogrammetertimer。可以在一個請求中指定多個類型;多個類型應以逗號分隔。

prefix

選用

預設值:無

指標名稱的開頭字元,會將傳回的指標篩選為開頭為所提供字串的指標。它可以與 group 和/或 type 參數結合使用。可以在一個請求中指定多個前綴;多個前綴應以逗號分隔。前綴比對也區分大小寫。

regex

選用

預設值:無

符合指標名稱的規則運算式。注意:指標名稱中的點分隔符必須逸出,例如,QUERY\./select\..* 是一個有效的規則運算式,它符合所有具有 QUERY./select. 前綴的指標。

property

選用

預設值:無

允許僅從任何複合指標請求此指標。可以結合多個 property 參數來作為 OR 請求。例如,若要僅從所有指標類型和群組取得第 99 和第 999 個百分位數值,您可以在您的請求中新增 &property=p99_ms&property=p999_ms。這可以根據需要與 grouptypeprefix 結合使用。

key

選用

預設值:無

完整限定的指標名稱,指定一個具體的指標執行個體(可以多次指定參數以擷取多個具體的指標)。

完整限定的名稱由登錄名稱、冒號和指標名稱組成,可選地包含冒號和指標屬性。名稱中的冒號可以使用反斜線 (\) 字元逸出。範例

  • key=solr.node:CONTAINER.fs.totalSpace

  • key=solr.core.collection1:QUERY./select.requestTimes:max_ms

  • key=solr.jvm:system.properties:user.name

注意:當使用此參數時,將會忽略任何其他選取方法。

expr

選用

預設值:無

key 選取準則的擴展標記法,它支援 key 選取器支援的每個部分的規則運算式。可以多次指定此參數,以擷取符合任何運算式的指標。API 保證輸出將僅包含唯一的指標名稱,即使多個運算式符合相同的指標名稱。注意:多個 expr 參數的順序在這裡很重要 - 只會記錄第一個符合的運算式的第一個值,將會略過由符合其他運算式產生的相同指標名稱的後續值。

完整限定的運算式包含至少兩個,最多三個以冒號分隔的規則運算式模式:登錄模式、冒號、指標模式,然後是可選的冒號和指標屬性模式。名稱和規則運算式中的冒號和其他規則運算式 meta 字元必須使用反斜線 (\) 字元逸出。

範例

  • expr=solr\.core\..:QUERY\..\.requestTimes:max_ms

  • expr=solr\.jvm:system\.properties:user\..*

注意:當使用此參數時,將會忽略任何其他選取方法。

compact

選用

預設值:true

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 參數來定義輸出格式。Metrics API 還提供額外的特殊 wt 參數 prometheus,它將以 Prometheus 格式輸出指標。這可用於使用 Prometheus 和 Grafana 進行監控

注意:grouptypeprefix 查詢參數仍然可用於篩選 Prometheus 指標,但不支援 regexpropertykeycompact

範例

僅請求「core」群組中「counter」類型指標,以 JSON 格式傳回

https://127.0.0.1:8983/solr/admin/metrics?type=counter&group=core

僅請求以「INDEX」開頭的「core」群組指標,以 XML 格式傳回

https://127.0.0.1:8983/solr/admin/metrics?wt=xml&prefix=INDEX&group=core

僅請求以「.requests」結尾的「core」群組指標

https://127.0.0.1:8983/solr/admin/metrics?regex=.*\.requests&group=core

僅從登錄檔 "solr.jvm" 中請求 "system.properties" 指標的 "user.name" 屬性。

https://127.0.0.1:8983/solr/admin/metrics?wt=xml&key=solr.jvm:system.properties:user.name

請求任何 QUERY 處理器中、任何集合中、任何核心的查詢速率(但不包含直方圖)。

https://127.0.0.1:8983/solr/admin/metrics?expr=solr\.core\..*:QUERY\..*\.requestTimes:.*Rate