メトリクスレポート

Solrには、Solrサービスとそのさまざまなコンポーネントのライフサイクル全体にわたって、詳細なパフォーマンス指向のメトリクスを収集するための開発者APIとインストルメンテーションが含まれています。

内部的には、この機能はDropwizard Metrics APIを使用しており、次の種類のメーターを使用してイベントを測定します。

  • カウンター - 単にイベントをカウントします。これらは、リクエスト数などの単一のlong値を提供します。

  • メーター - さらにイベントのレートを計算します。上記のカウント(上記と同様)と、Unixシステムの負荷平均と同様の1分、5分、15分の指数関数的に減衰するレートを提供します。

  • ヒストグラム - イベントの値に応じて、イベントのおおよその分布を計算します。上記と同様の指数関数的な減衰で、平均値(算術平均)、中央値、最大値、最小値、標準偏差、および75番目、95番目、98番目、99番目、999番目のパーセンタイルのような近似統計を提供します。

  • タイマー - イベントの数と期間を測定します。これらは、タイミングのカウントとヒストグラムを提供します。

  • ゲージ - 現在のキューの深さ、アクティブな接続の現在の数、空きヒープサイズなど、現在の値の瞬時読み取りを提供します。

これらのメーターの一部は、正当な理由で欠落しているか、空である可能性があります。これらの場合、任意のタイプの欠落値は、デフォルトではnullとして返されるため、空の値が平均またはヒストグラムに影響を与えることはありません。これはいくつかのタイプの欠落値に対して構成可能です。以下の <metrics> <missingValues> 要素セクションを参照してください。

一意の名前を持つ関連メトリクスの各グループは、メトリクスレジストリで管理されます。Solrは、jvmjettynode、およびcoreなどの高レベルのグループに対応する、このようなレジストリをいくつか保持しています(以下のメトリクスレジストリを参照)。

各グループ(および/または各レジストリ)に対して、選択されたレジストリからのメトリクスを外部システムに通信する役割を担うコンポーネントである、いくつかのレポーターが存在する可能性があります。現在実装されているレポーターは、JMX、Ganglia、Graphite、およびSLF4Jを介したメトリクスの出力に対応しています。

複数のレジストリから、現在のメトリクスの一部またはすべてをレポートするためにクエリできる専用の/admin/metricsハンドラもあります。

メトリクスレジストリ

Solrには、関連するメトリクスをグループ化する複数のメトリクスレジストリが含まれています。

メトリクスは、プロセスの開始からシャットダウンまでのコンポーネントのすべてのライフサイクルを通じて維持および累積されます。たとえば、特定のSolrCoreのメトリクスは、複数のロード、アンロード、および/または名前変更操作を通じて追跡され、コアが明示的に削除された場合にのみ削除されます。ただし、メトリクスはプロセスの再起動時に保持されません。Solrを再起動すると、収集されたすべてのメトリクスが破棄されます。

これらは、収集されるメトリクスの主要なグループです。

JVMレジストリ

このレジストリはsolr.jvmで返され、次の情報が含まれています。メトリクスAPIでリクエストを行うときに、&group=jvmを指定して、これらのメトリクスのみに制限できます。

  • ダイレクトバッファプールとマッピングされたバッファプール

  • クラスのロード/アンロード

  • OSメモリ、CPU時間(ナノ秒単位)、ファイル記述子、スワップ、システム負荷

  • GCカウントと時間

  • ヒープ、非ヒープメモリ、およびGCプール

  • スレッド数、スレッドの状態、およびデッドロック

  • Java情報、さまざまなインストールディレクトリパス、ポート、および同様の情報などのシステムプロパティ。solr.xmlを編集することで、ここに表示される内容を制御できます。

Overseerレジストリ

このレジストリは、SolrCloudモードで実行するとsolr.overseerで返され、以下の情報が含まれます。Metrics APIでリクエストを作成する場合、&group=overseerを指定してこれらのメトリックのみに制限できます。

  • Overseerキューのサイズ(コレクションのワークキューとクラスタ状態更新キュー)

ノード/CoreContainerレジストリ

このレジストリはsolr.nodeで返され、以下の情報が含まれます。Metrics APIでリクエストを作成する場合、&group=nodeを指定してこれらのメトリックのみに制限できます。

  • ハンドラーリクエスト(カウント、タイミング):コレクション、情報、管理、configsetsなど

  • コアの数(ロード済み、遅延、アンロード済み)

コア(SolrCore)レジストリ

コア(SolrCore)レジストリには、各コアに対して1つずつsolr.core.<collection>が含まれます。Metrics APIでリクエストを作成する場合、&group=coreを指定してこれらのメトリックのみに制限できます。

  • すべての一般的なRequestHandlerは、リクエストタイマー/カウンター、タイムアウト、エラーをレポートします。分散シャードリクエストの処理をサポートするハンドラーは、分散リクエストのタイプごとにshardRequestsサブカウンターもレポートします。

  • インデックスレベルのイベント:マイナー/メジャーマージのメーター、マージされたドキュメント数、削除されたドキュメント数、現在実行中のマージとそのサイズのゲージ。

  • レプリカでのシャードレプリケーションとトランザクションログのリプレイ

  • シャードハンドラーおよび更新ハンドラーのオープン/利用可能/保留中の接続。

RequestHandlerは、コアレベルのメトリックをコアごとにレポートするだけでなく、ノードレベルにロールアップするように設定できます。これは、ノードごとに多数のコアがあり、ノードごとの集計メトリックに関心がある場合に役立ちます。これは、solrconfig.xmlRequestHandler設定<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で返され、以下の情報が含まれます。Metrics APIでリクエストを作成する場合、&group=jettyを指定してこれらのメトリックのみに制限できます。

  • スレッドとプール、

  • 接続とリクエストタイマー、

  • HTTPクラス(1xx、2xxなど)によるレスポンスのメーター

メトリック構成

システムで使用可能なメトリックは、solr.xml<metrics>要素を変更することでカスタマイズできます。

solr.xmlファイル、その場所、および編集方法の詳細については、solr.xmlの設定のセクションも参照してください。

メトリック収集の無効化

solr.xml<metrics>要素は、ブール値を受け取るenabledという1つの属性をサポートしています。例:<metrics enabled="true">

この属性のデフォルト値はtrueであり、これは、設定されたメトリックレポーターに従って、メトリックがSolrによって収集、処理、および報告されていることを意味します。また、メトリックAPIからも利用できます。

この属性のfalse値(<metrics enabled="false">)は、メトリックの収集と処理をオフにします。内部的には、すべてのメトリックサプライヤーがシングルトンno-op実装に置き換えられ、これによりメトリック収集に関連するほぼすべてのオーバーヘッドが効果的に削除されます。すべてのレポーター構成はスキップされ、メトリックAPIはメトリックのレポートを停止し、レスポンスで<error>要素のみを返します。

<metrics> <hiddenSysProps> 要素

solr.xmlのこのセクションでは、システム機密と見なされ、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>

<metrics> <reporters> 要素

レポーターは、Solrによって生成されたメトリックデータを使用します。カスタムレポーターの設定方法の詳細については、以下のレポーターのセクションを参照してください。

<metrics> <suppliers> 要素

サプライヤーは、Solrがメトリックデータを生成するのに役立ちます。solr.xml<metrics><suppliers>セクションでは、メトリックの独自の実装を定義し、それらのパラメーターを設定できます。

カスタムメトリックサプライヤーの実装はこのガイドの範囲外ですが、以下で説明する要素を介して、デフォルトの実装で他のカスタマイズが可能です。

<counter>

この要素は、Counterサプライヤーの実装と構成を定義します。デフォルトの実装では、構成はサポートされていません。

<meter>

この要素は、Meterサプライヤーの実装を定義します。デフォルトの実装では、追加のパラメーターがサポートされています。

<str name="clock">

オプション

デフォルト:user

EWMAレートの計算に使用するクロックのタイプ。サポートされている値は次のとおりです。* System.nanoTime()を使用するuser * 現在のスレッドの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サプライヤーの実装を定義します。デフォルトの実装は、上記で説明したclockおよびreservoirパラメーターをサポートしています。

これらのカスタムパラメーターの一部を定義する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の2つのレポーターを構成します。レポーターの構成方法の詳細については、以下を参照してください。

レポーター引数

レポータープラグインは、次の引数を使用します。

name

必須

デフォルト:なし

レポータープラグインの一意の名前。

class

必須

デフォルト:なし

SolrMetricReporterを拡張する必要があるプラグインの完全修飾実装クラス。

group

オプション

デフォルト:なし

事前定義されたグループの1つ以上(上記参照)。

registry

オプション

デフォルト:なし

有効な完全修飾レジストリ名の1つ以上。

group属性とregistry属性の両方が指定されている場合は、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。serviceUrl または agentId のどちらか一方のみを指定できます。両方を指定した場合は、デフォルトの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 より前の Solr で利用可能だった JMX 機能を置き換えます。以前のバージョンからアップグレードし、Solr の起動時に MBean サーバーが実行されている場合、Solr はローカル MBean サーバーの場所を自動的に検出し、SolrJmxReporter のデフォルト設定を使用します。

起動時にシステムプロパティ -Dcom.sun.management.jmxremote を開始コマンドに追加することで、ローカル MBean サーバーを起動できます。これにより、レポーターの設定は 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 の場合、「pickled」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

コアレベルのメトリック

これらのメトリックは、コアごとにのみ利用可能です。メトリックは、ShardおよびClusterレポーターを使用してコア間で集計できます。

インデックスマージメトリック

これらのメトリックは、各コアのそれぞれのレジストリ(例: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 は、すべてのグループのすべてのメトリックを取得します。その他の可能な値は、jvmjettynode、および core です。1つのリクエストで複数のグループを指定できます。複数のグループ名はコンマで区切る必要があります。

type

オプション

デフォルト: all

取得するメトリックのタイプ。値 all は、すべてのメトリックタイプを取得します。その他の可能な値は、countergaugehistogrammeter、および timer です。1つのリクエストで複数のタイプを指定できます。複数のタイプはコンマで区切る必要があります。

prefix

オプション

デフォルト:なし

返されるメトリックを、指定された文字列で始まるものにフィルタリングするメトリック名の最初の文字。grouptype パラメーターと組み合わせることができます。1つのリクエストで複数のプレフィックスを指定できます。複数のプレフィックスはコンマで区切る必要があります。プレフィックスのマッチングでは大文字と小文字が区別されます。

regex

オプション

デフォルト:なし

メトリック名と一致する正規表現。注:メトリック名のドット区切り文字はエスケープする必要があります。例:QUERY\./select\..* は、QUERY./select. プレフィックスを持つすべてのメトリックに一致する有効な正規表現です。

property

オプション

デフォルト:なし

複合メトリックからこのメトリックのみを要求できます。複数の property パラメーターを組み合わせて、ORリクエストとして機能させることができます。たとえば、すべてのメトリックタイプとグループから99パーセンタイル値と999パーセンタイル値のみを取得するには、&property=p99_ms&property=p999_ms をリクエストに追加できます。これは、必要に応じて grouptype、および prefix と組み合わせることができます。

key

オプション

デフォルト:なし

1つの具体的なメトリックインスタンスを指定する完全修飾メトリック名(複数の具体的なメトリックを取得するために、パラメーターを複数回指定できます)。

完全修飾名は、レジストリ名、コロン、メトリック名、オプションでコロンとメトリックプロパティで構成されます。名前のコロンは、バックスラッシュ(\)文字を使用してエスケープできます。例

  • 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 パラメーターの順序は重要です。最初に一致する式の最初の値のみが記録され、他の式との一致によって生成された同じメトリック名の後続の値はスキップされます。

完全修飾式は、コロンで区切られた少なくとも2つ、最大3つの正規表現パターンで構成されます。レジストリパターン、コロン、メトリックパターン、そしてオプションとしてコロンとメトリックプロパティパターンが続きます。名前と正規表現におけるコロンやその他の正規表現メタ文字は、バックスラッシュ (\) 文字を使ってエスケープする必要があります。

  • 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パラメータを取ることもできます。

JSON形式で返される「core」グループの「counter」タイプのメトリックのみをリクエスト

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

XML形式で返される「INDEX」で始まる「core」グループのメトリックのみをリクエスト

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