メトリクスレポート
Solrには、Solrサービスとそのさまざまなコンポーネントのライフサイクル全体にわたって、詳細なパフォーマンス指向のメトリクスを収集するための開発者APIとインストルメンテーションが含まれています。
内部的には、この機能はDropwizard Metrics APIを使用しており、次の種類のメーターを使用してイベントを測定します。
-
カウンター - 単にイベントをカウントします。これらは、リクエスト数などの単一のlong値を提供します。
-
メーター - さらにイベントのレートを計算します。上記のカウント(上記と同様)と、Unixシステムの負荷平均と同様の1分、5分、15分の指数関数的に減衰するレートを提供します。
-
ヒストグラム - イベントの値に応じて、イベントのおおよその分布を計算します。上記と同様の指数関数的な減衰で、平均値(算術平均)、中央値、最大値、最小値、標準偏差、および75番目、95番目、98番目、99番目、999番目のパーセンタイルのような近似統計を提供します。
-
タイマー - イベントの数と期間を測定します。これらは、タイミングのカウントとヒストグラムを提供します。
-
ゲージ - 現在のキューの深さ、アクティブな接続の現在の数、空きヒープサイズなど、現在の値の瞬時読み取りを提供します。
これらのメーターの一部は、正当な理由で欠落しているか、空である可能性があります。これらの場合、任意のタイプの欠落値は、デフォルトではnull
として返されるため、空の値が平均またはヒストグラムに影響を与えることはありません。これはいくつかのタイプの欠落値に対して構成可能です。以下の <metrics> <missingValues> 要素セクションを参照してください。
一意の名前を持つ関連メトリクスの各グループは、メトリクスレジストリで管理されます。Solrは、jvm
、jetty
、node
、および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.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
で返され、以下の情報が含まれます。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>
レポーター
レポーターの構成は、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>
レポーター引数
レポータープラグインは、次の引数を使用します。
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
は、すべてのグループのすべてのメトリックを取得します。その他の可能な値は、jvm
、jetty
、node
、およびcore
です。1つのリクエストで複数のグループを指定できます。複数のグループ名はコンマで区切る必要があります。 type
-
オプション
デフォルト:
all
取得するメトリックのタイプ。値
all
は、すべてのメトリックタイプを取得します。その他の可能な値は、counter
、gauge
、histogram
、meter
、およびtimer
です。1つのリクエストで複数のタイプを指定できます。複数のタイプはコンマで区切る必要があります。 prefix
-
オプション
デフォルト:なし
返されるメトリックを、指定された文字列で始まるものにフィルタリングするメトリック名の最初の文字。
group
やtype
パラメーターと組み合わせることができます。1つのリクエストで複数のプレフィックスを指定できます。複数のプレフィックスはコンマで区切る必要があります。プレフィックスのマッチングでは大文字と小文字が区別されます。 regex
-
オプション
デフォルト:なし
メトリック名と一致する正規表現。注:メトリック名のドット区切り文字はエスケープする必要があります。例:
QUERY\./select\..*
は、QUERY./select.
プレフィックスを持つすべてのメトリックに一致する有効な正規表現です。 property
-
オプション
デフォルト:なし
複合メトリックからこのメトリックのみを要求できます。複数の
property
パラメーターを組み合わせて、ORリクエストとして機能させることができます。たとえば、すべてのメトリックタイプとグループから99パーセンタイル値と999パーセンタイル値のみを取得するには、&property=p99_ms&property=p999_ms
をリクエストに追加できます。これは、必要に応じてgroup
、type
、および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