メインコンテンツまでスキップ
Sumo Logic Japanese

メトリクス ルールの概要

メトリクス ルールの概要

メトリクス ルールの目的は、メトリクス クエリをより簡単にすることです。メトリクス ルールを使用して、メトリクス識別子に由来するデータをメトリクスにタグ付けすることができます。その後、メトリクス クエリでこれらのタグを使用できます。

このページでは、メトリクス ルールの仕組みと、メトリクス ルールを作成するための Sumo のユーザ インターフェイス、メトリクス ルール エディタについて説明します。ステップバイステップでの手順については、「メトリクス ルールの作成」を参照してください。

Sumo のメトリクス

Sumo は、Graphite および Carbon 2.0 スタイルのメトリクスをサポートしています。 

Graphite メトリクスは、メトリクス パスまたは Graphite 文字列とも呼ばれる、ドット区切りの文字列で識別されます。Carbon 2.0 メトリクスは、1 つ以上のキーと値のペアで識別されます。

以下に示す例は、同一メトリクスに対する Graphite メトリクス パスと Carbon 2.0 のキーと値のペアです。

  • Graphite の例:  cluster-1.node-1.cpu-1.cpu-idle
  • Carbon 2.0 の例:  cluster=cluster-1 node=node-1 cpu=cpu-1 metric=cpu-idle 

メトリクス ルール: どのような利点がありますか? 

このセクションでは、メトリクス ルールを使用する利点について説明します。 

メトリクス ルールを使用すると、Graphite メトリクス パスのセグメントまたは Carbon 2.0 メトリクスのキーと値のペアに由来するタグを作成できます。  

メトリクス ルールは、Carbon 2.0 形式でも使用できますが、特に Graphite メトリクスに有用です。Graphite メトリクスにタグ付けすると、メトリクス クエリ プロセスが非常に簡単になり、ユーザは一連のキーと値のペアとしてインタラクティブにクエリを構築できるようになります。 

以下の構造を持つ Graphite メトリクスについて考えます。

cluster.node.cpu.metric-name

以下に、その構造を持つメトリクスのいくつかを示します。

cluster-1.node-1.cpu-1.cpu-idle
Cluster-2.node-1.cpu-6.cpu-user
cluster-6.node-1.cpu-2.cpu-sys

メトリクス ルールを適用しなければ、キーと値のペアを使用して、これらのメトリクスを検索できません。以下のように、Graphite 文字列をメトリクス クエリ タブに入力し、1 つ以上のセグメントにアスタリスクを使用できます。

cluster-1.node-1.*.cpu-idle

その一方、メトリクス ルールをメトリクスに適用すると、ユーザは、キーと値のペアから形成される類似のクエリをインタラクティブに構築できます。

cluster=cluster-1 node=node-1 cpu=* metric-name=cpu-idle 

キーと値のペアで形成されるクエリの構築は、Sumo がキーと値の入力を促すため、より簡単に行うことができます。キーの正確な名前を知る必要はありません。クエリを構築するときは、メトリクス クエリ タブで一致する時系列を確認できます。  

メトリクス ルールの構造

メトリクス ルールは、2 つの部分 (ルールの範囲を定義するメトリクス一致式と、一致式に一致するメトリクスに適用されるタグを定義する 1 つ以上の変数) で構成されています。

メトリクス ルールはメトリクス ルール エディタを使用して作成できます。[Metric Rules (メトリクス ルール)] ページ ([Manage Data (データの管理)] > [Settings (設定)] > [Metric Rules (メトリクス ルール)]) に、以下のようにメトリクス ルールの一覧が表示されます。

named-rule.png

この後のサブセクションでは、[Metric Rules (メトリクス ルール)] ページの列に表示される情報について説明します。

メトリクス一致式

メトリクス一致式ではルールの範囲を定義します。つまり、一致式では (変数抽出によって定義される) タグが適用されるメトリクスを指定します。 

ドット区切りの一致式

一致式は、以下のような 1 つ以上のドット区切り文字列になります。

collectd.*.*.*.*

これは、文字列に 5 つのセグメントがあり、最初のセグメントの値が "collectd" であるすべての Graphite メトリクスに一致します。

ドット区切りの一致式の場合、Sumo は一致式を _rawName フィールドに適用します。このフィールドは Graphite メトリクスで使用され、メトリクスのメトリクス パスを含んでいます。

キーと値のペアの一致式

一致式は 1 つ以上のキーと値のペアになります。以下のように、各キーと値のペアに、メトリクスで利用できるフィールドとフィールド値を指定します。

_sourceCategory=training/shipping/metrics type=payment

これは、ソース カテゴリが "training/shipping/metrics"、その type フィールドが "payment" であるすべてのメトリクスに一致します。

一致式がキーと値のペアで構成される場合、Sumo は一致式を _rawName フィールド以外のメトリクス フィールドに適用します。指定したキーがメトリクス フィールドとして存在しない場合、一致は検出されません。

複数の一致式

同一ルールで複数の一致式を定義できます。その場合、タグは両方の式に一致するメトリクスに適用されます。例:

nete.*.*.*.* classPath=*.*.*

これは、構造が nete.*.*.*.* であり、ドットで区切られた 3 つのセグメントのクラスパスを持つメトリクスに一致します。

最短一致式 

メトリクス一致式で最短一致を使用できます。最短一致は、一致式がドット区切り文字列であり、_rawName の値のセグメント数が変化する場合に有用です。  たとえば以下のメトリクスの緑の部分はクラス名です。

prod.prod-lru-7.katta-svc.com.svc.soa.service.InstResponder.KattaProtocol.countPerShard_v3.m5_rate

クラスによってドット区切りの名前の長さが異なるため、このメトリクスの一致式ではクラス名セグメントに最短一致を使用する必要があります。例:

prod.*.*.**.*.*.*

変数抽出

変数抽出では、一致式に一致するメトリクスに添付するタグを定義します。

[Add Metric Rule (メトリクス ルールの追加)] ポップアップの [Define variables (変数の定義)] セクションのフィールドを使用して、抽出の割当を定義します。

add-metric-rule-with-expression.png

変数を定義するときは、変数に名前を付け、タグ シーケンスを定義します。これにより区切り文字列の特定のセグメントに変数がマップされます。タグ シーケンスの形式は、対応する一致式が Graphite 文字列か 1 つ以上のキーと値のペアかによって変わります。 

ドット区切りの一致式からの変数の抽出

以下のドット区切りの一致式について考えます。 

collectd.*.*.*.*
 
4 つの変数を定義できます。それぞれ、アスタリスクによって表される各セグメントに対応します。「ドット区切りの一致式」で説明するように、キーが指定されない場合、Sumo はメトリクスの _rawName フィールドと式を照合します。 _rawName と照合する際、以下の形式で変数のタグ シーケンスを指定します。

$_sequence 

sequence は、一致式におけるセグメントの配置を示します。たとえば $_2 を入力すると、メトリクス一致式の 2 番目のコンポーネントが抽出されます。

以下のスクリーンショットは、"collectd" ルールの変数の定義を示しています。以下のスクリーンショットのエントリでは、Sumo に "cluster"、"node"、"id"、および "metric" タグを定義することを指示しています。これらのタグは、アスタリスクで表現される一致式のセグメントに、表れる順番にマップされます。  

キーと値のペアの一致式からの変数の抽出

一致式がドット区切り文字列ではなくキーと値のペアで構成されている場合、Sumo は _rawName フィールド以外のメトリクス フィールドと式を照合します。  キーと値のペアの式では、以下の形式でフィールド名を指定し、タグ シーケンスを定義する必要があります。 

$field._sequence

ここで:

  • field は、タグを抽出するフィールドの名前です。
  • sequence は、一致式におけるセグメントの配置を示します。 

たとえば以下のような一致式があるとします。

classPath=*.*.*

以下のようにタグ シーケンスを定義できます。

$classPath._3

これはメトリクス一致式の 3 番目のコンポーネントを抽出します。

_rawName フィールドと式を照合する場合は?

ユーザは、$_field_sequence 形式を使用して、_rawName フィールドを指定できます。たとえば以下のようなタグ シーケンスがあるとします。

$_rawName_2

一致するメトリクスには、_rawName フィールドの 2 番目のセグメント値がタグ付けされます。

変数割当の検証

変数割当がどのように機能するかを確認するために、ルール エディタの [Time Series (時系列)] セクションでメトリクスを選択します。各タグに割り当てられている値が表示されます。

variable-extracton.png

上記のスクリーンショットでは、以下のメトリクスが選択されています。

collectd.kafka-forge-aa.nite-kafka-forge-aa-1.irq.irq-cal

Sumo が変数に割り当てる値は、変数定義の右側に表示されます。ここに示すメトリクスの例では、Sumo は以下の名前と値のペアをメトリクスに関連付けます。

cluster=kafka-forge-aa
node=nite-kafka-forge-aa-1
id=irq
metric=irq-cal

メトリクス ルールと再インデックス化

新規メトリクス ルールまたは更新されたメトリクス ルールを保存するとき、Sumo はメトリクスの再インデックス化を開始します。[Metric Rules (メトリクス ルール)] ページの真ん中に、以下のメッセージが表示されます。

reindexing1.png

再インデックス化の実行中に、[Metric Rules (メトリクス ルール)] ページの下部にこのメッセージが表示されます。

reindexing2.png

 

  • この記事は役に立ちましたか?