指标报告

Solr 包含一个开发人员 API 和仪器,用于在 Solr 服务及其各种组件的整个生命周期中收集详细的面向性能的指标。

在内部,此功能使用 Dropwizard Metrics API,它使用以下类别的仪表来测量事件

  • 计数器 - 仅计数事件。它们提供一个长整型值,例如请求数。

  • 仪表 - 此外还计算事件速率。提供计数(如上所述)以及 1、5 和 15 分钟指数衰减速率,类似于 Unix 系统负载平均值。

  • 直方图 - 根据事件的值计算事件的近似分布。提供以下近似统计信息,具有与上述类似的指数衰减:平均值(算术平均值)、中值、最大值、最小值、标准差以及第 75th、95th、98th、99th 和 999th 个百分位数。

  • 计时器 - 测量事件的数量和持续时间。它们提供计时计数和直方图。

  • 仪表 - 提供当前值的瞬时读数,例如当前队列深度、当前活动连接数、可用堆大小。

由于任何数量的有效原因,其中一些仪表可能缺失或为空。在这些情况下,任何类型的缺失值在默认情况下都将作为 null 返回,因此空值不会影响平均值或直方图。这可针对多种类型的缺失值进行配置;请参阅下面的 The <metrics> <missingValues> Element 部分。

每个具有唯一名称的相关指标组都由指标注册表管理。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 来仅限于这些指标。

  • 所有常见的 RequestHandler 报告:请求计时器/计数器、超时、错误。支持处理分布式分片请求的处理程序还报告每种类型的分布式请求的 shardRequests 子计数器。

  • 索引级别事件:次要/主要合并的仪表、合并文档数、已删除文档数、当前正在运行的合并及其大小的仪表。

  • 分片复制和副本上的事务日志重放,

  • 分片处理程序和更新处理程序的打开/可用/待处理连接。

RequestHandler 可以配置为将内核级别指标汇总到节点级别,除了按内核报告指标外。如果您每个节点有大量内核,并且对每个节点的聚合指标感兴趣,这很有用。这可以通过在 solrconfig.xml 中为 RequestHandler 配置 添加 <bool name="aggregateNodeLevelMetricsEnabled">true</bool> 来配置,例如

<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">)关闭指标收集和处理。在内部,所有指标供应商都替换为单例无操作实现,这有效地消除了与指标收集相关的所有开销。所有报告程序配置都被跳过,指标 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

Reservoir 大小。

<double name="alpha">

可选

默认值:0.015

衰减参数。这仅对 ExponentiallyDecayingReservoir 有效。

<long name="window">

可选

默认值:300

窗口大小(以秒为单位),仅对 SlidingTimeWindowReservoir 有效。

<timer>

此元素定义了 Timer 供应商的实现。默认实现支持上面描述的 clockreservoir 参数。

作为定义其中一些自定义参数的 solr.xml 部分的示例,以下定义了具有非默认 clock 的默认 Meter 供应商,并使用非默认 Reservoir 使用了默认 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 Reporter 取代了 Solr 7.0 之前的版本中可用的 JMX 功能。如果您已从早期版本升级,并且在 Solr 启动时运行 MBean Server,则 Solr 将自动发现本地 MBean Server 的位置,并对 SolrJmxReporter 使用默认配置。

您可以在启动时通过系统属性启动本地 MBean Server,方法是将 -Dcom.sun.management.jmxremote 添加到您的启动命令中。这不会将 reporter 配置添加到 solr.xml 中,因此如果您使用系统属性启用它,则必须始终使用系统属性启动 Solr,否则 JMX 将不会在后续启动中启用。

SLF4J Reporter

SLF4J Reporter 使用 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>

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

(此处仅添加大括号作为实际值的占位符)。

此外,以下 MDC 上下文属性会传递给记录器,并且可以在日志格式中使用

node_name

Solr 节点名称(对于 SolrCloud 部署,否则为 null),前缀为 n:

registry

指标注册表名称,前缀为 m:

对于特定于 SolrCore 的 reporter,还提供以下属性

collection

集合名称,前缀为 c:

分片

分片名称,前缀为 s:

副本

副本名称(核心节点名称),前缀为 r:

核心

SolrCore 名称,前缀为 x:

标记

报告器实例标记,前缀为 t:

Graphite 报告器

Graphite 报告器使用 org.apache.solr.metrics.reporters.SolrGraphiteReporter) 类。

它采用以下属性,以及 上面的通用属性。

主机

必需

默认值:无

运行 Graphite 服务器的主机名。

端口

必需

默认值:无

服务器的端口号。

腌制

必需

默认值:false

如果为 true,则使用可能更有效的“腌制”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 参数的顺序很重要 - 仅记录第一个匹配表达式的第一个值,将跳过由匹配其他表达式产生的同一指标名称的后续值。

完全限定的表达式至少由两个,最多由三个冒号分隔的正则表达式模式组成:注册表模式、冒号、指标模式,然后是可选的冒号和指标属性模式。名称和正则表达式中的冒号和其他正则表达式元字符必须使用反斜杠 (\) 字符进行转义。

示例

  • 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 参数来定义输出格式。

示例

仅请求 "core" 组中的 "counter" 类型指标,以 JSON 格式返回

http://localhost:8983/solr/admin/metrics?type=counter&group=core

仅请求以 "INDEX" 开头的 "core" 组指标,以 XML 格式返回

http://localhost:8983/solr/admin/metrics?wt=xml&prefix=INDEX&group=core

仅请求以 ".requests" 结尾的 "core" 组指标

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

仅请求注册表 "solr.jvm" 中 "system.properties" 指标的 "user.name" 属性

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

请求任何 QUERY 处理程序中任何集合中的任何核心的查询速率(但不是直方图)

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