LogicMonitor + Catchpoint: 自律型ITの新時代へ

さらに詳しく

複合データポイントを使用すると、既存の通常データポイントまたは複合データポイントから派生した新しい計算値を作成できます。監視対象システムから直接生データを取得する通常データポイントとは異なり、複合データポイントは収集された値を使用して計算を実行し、ダッシュボード、レポート、アラートでより効果的に使用できる指標を生成します。

LogicMonitor は、複雑なデータポイントを計算するために次の方法をサポートしています。

  • 標準的な複雑なデータポイント—式構文を使用して、データポイント、リソース プロパティ、または数値から新しい値を計算します。
    例えば、SNMPインターフェースMIBは、インターフェースの受信オクテット(InOctets)を報告するOIDを提供します。これは、InOctetsデータポイントによって伝送されるMbps単位の値に、次の式で変換できます:InOctets*8/1000/1000
  • Groovyの複雑なデータポイント—式だけでは不十分な場合は、Groovy スクリプトを使用して生データに対して高度な処理を実行します。
    Groovy の複合データポイントでは、生データペイロードにはアクセスできますが、実際のデータポイント(例えば、「counter」や「derive」として計算されるデータポイントなど)にはアクセスできません。さらに、Groovy はリソースプロパティとインスタンスプロパティの両方に基づく計算にも使用できます。一般的に、Groovy の複合データポイントは、標準的な複合データポイントでは実現できないようなデータ操作に使用できます。

これらのオプションを組み合わせることで、基本的な変換から複雑なカスタム ロジックまですべてを可能にする柔軟性が得られ、環境にとって最も重要なメトリックを反映するように監視をカスタマイズできます。

推奨事項: 標準の複雑なデータポイントによって提供される式構文を超える高度な処理が必要な場合にのみ、Groovy の複雑なデータポイントを控えめに使用してください。

標準複素データポイントの式構文

LogicMonitorで標準的な複雑なデータポイントを作成する場合、データポイント式構文を使用して、既存のデータポイント、リソースプロパティ、または数値定数から新しい値を計算する方法を定義します。これらの式は、算術演算、論理演算、条件演算を実行でき、数学関数や定数を含めることもできます。

推奨事項: データポイント式は、次のように、中置記法または RPN (逆ポーランド記法) で記述できます。

  • 中置文字—(sendpkts-recdpkts)/sentpkts*100
  • RPN—sendpkts,recdpkts,-,sentpkts,/,100,*

以下のすべての例では中置表記法を使用しています。

式オペランド

次の種類のオペランドを使用できます。 

  • データポイント名
  • リソースプロパティ名
  • 任意の番号

次の例では、数値とデータポイント名を使用して、特定のインターフェイスで破棄されたインバウンドパケットの割合を計算します。
100 * InDiscards / (InBroadcastPkts + InUcastPkts + InMulticastPkts + InDiscards) * ##BandwidthLimit##

式演算子

データポイント式は、計算や評価を行うための様々な演算子をサポートしています。算術演算子、ビット演算子、論理演算子などがあり、データポイント値を操作したり比較したりする数式を作成できます。

次の表は、使用可能な演算子の種類とその機能をまとめたものです。

カテゴリー構文例:
算術演算子+ 追加2 + 2 = 4
- 引き算3 - 2 = 1
* 乗算2 * 3 = 6
/ ディビジョン4 / 2 = 2
% モジュラス4 % 2 = 0
ビット演算子x & y ビット単位で
•1010&1100 = 1000
x | ybitwise or
• 1010 | 1100 = 1110
論理演算子&&(expression1,expression2)
or
and(expression1,expression2)
論理および:expression1とexpression2の両方がtrue(ゼロ以外)の場合にtrueと評価されます
•and(2 + 2,1 + 1)= true
•and(2 + 2,2-2)= false
||(expression1,expression2)
or
or(expression1,expression2)
論理または:expression1またはexpression2のいずれかがtrue(ゼロ以外)の場合にtrueと評価されます
•or(2 + 2,1-1)= true
•または(2-2,1-1)= false

注意: ブールデータ型はデータポイント式ではサポートされていません。代わりに、ゼロ以外の値はTRUEとして扱われ、ゼロはFALSEとして扱われます。

両方のオペランドがゼロでない場合、
&& / は「1」を返します。どちらかのオペランドが0でない場合、
|| / または「1」を返します。

式関数

データポイント式は、基本的な演算子の枠を超えた計算および評価機能を拡張する、幅広い組み込み関数をサポートしています。これには、条件関数、比較関数、数学関数、そして数式で使用する定数が含まれます。

次の表は、使用可能な関数の種類とその目的の概要を示しています。

カテゴリー構文例:
条件付き構文if(x,y,z) 式xがtrueと評価された場合、yを返します。 それ以外の場合はzを返します
if(0, 1, 2) = 2
if(1, 1, 2) = 1
比較関数


お願い: 比較関数は通常、条件文内で使用されます。 (if) 声明。
lt(x,y)x <yの場合、trueと評価されます
lt(1, 2) = 1
le(x,y)x <= yの場合、trueと評価されます
le(3, 1) = 0
gt(x,y)x> yの場合、trueと評価されます
gt(2, 1) = 1
ge(x,y)x> = yの場合、trueと評価されます
ge(4, 1) = 1
eq(x,y)x == yの場合、trueと評価されます
eq(4, 1) = 0
limit(x,y,z) xがyとzの包括的境界の間にある場合、xを返します。 それ以外の場合はNaN
limit(1, 2, 3) = NaN
limit(4, 4, 7) = 4
in(i[, j, …, n], z) zが可能な値のリストに存在する場合、true(1)と評価されます。 それ以外の場合はfalse(0)を返します
in(DatapointOne, DatapointTwo, DatapointThree, value) = 1 いずれかのデータポイントが現在「値」を返す場合
in(value1, value2, value3, DatapointOne) = 1 DatapointOneが現在リストされている値のいずれかを返す場合
max(x,y)xとyの大きい方を返します
max(1,2) = 2
min(x,y)xとyの小さい方を返します
min(1,2) = 1
un(x)xが不明(数値ではない)の場合、true(1)と評価されます
un(1) = 0
数学関数round(x)値xを整数値に丸めます
round(1.89) = 2
floor(x)xの前の最小の次の整数を返します
floor(2.78) = 2
ceil(x)xの前の最大の次の整数を返します
ceil(2.78) = 3
abs(x)xの絶対値を返します
abs(-3) = 3
log(x)xの自然対数を返します
exp(x)xの自然指数を返します(ex)
pow(x,y)xをy乗した結果を返します(xy)
sqrt(x)xの平方根を返します
sin(x)xの正弦を返します
cos(x)xのコサインを返します
定数unkn()NaN(数値ではない)を返します
pi()円周率の値を返します
e()オイラーの数の値を返します(e)
inf()正の無限大の値を返します
neginf()負の無限大の値を返します
random()0から1までの乱数を返します

標準複素データポイントの特殊なケース

場合によっては、データポイント式では、正確な計算と結果の表示を確実にするために、負の値または不明な値 (NaN) に対して特別な処理が必要になります。

次の表は、これらの特殊なケースと、LogicMonitor がそれらを処理する方法をまとめたものです。

カテゴリー 詳細説明 例:
負の値データポイント式は負の符号で始めることはできません。負の値を表すには、ゼロからの減算を使用してください。  0-2 -2.
不明な値 (NaN)条件付きロジックを使用して、式内で不明な値 (欠損値、非数値データ、無限データなど) を処理できます。if(un(DatapointOne),0,DatapointOne) データポイントが不明な場合は 0 を返し、それ以外の場合はその値を返します。
NaNを使用した条件付き処理条件付きで「データなし」(NaN)を返すには、 unkn() 機能。if(lt(DatapointTwo,5),unkn(),DatapointTwo) 値が 5 未満の場合、「データなし」を返します。
論理演算におけるNaN論理式(and, or)は、オペランドがNaNであっても、常に0または1に評価されます。誤った結果を避けるには、評価前にNaNの有無を確認してください。if(or(un(Datapoint1),un(Datapoint2)),unkn(),<expression>) 式を実行する前に有効な入力を確認します。
演算子/関数の種類によるNaNの動作算術演算子
+, -, *, /, %
NaNを返します
ビット演算子
&, |
非NaNを返します
論理演算子
and, or, xor
0または1を返します
条件付きExpr
if(x,y,z) そしてxはNaNである
zを返します
比較機能
lt, le, gt, ge, eq, in
0または1を返します
数学関数
min, max, sin, cos…
NaNを返します

Groovy の複雑なデータポイントの式構文

データポイント式では不可能な追加処理が必要な場合は、Groovyスクリプトを使用して、より高度なデータポイント計算を実行できます。Groovyの複雑なデータポイントでは、収集された生データをGroovyスクリプトで処理します。Groovyの複雑なデータポイントでは、生データのペイロードにはアクセスできますが、実際のデータポイント(例えば、「counter」や「derive」として計算されるデータポイント)にはアクセスできません。さらに、Groovyはリソースプロパティとインスタンスプロパティの両方に基づく計算にも使用できます。

Groovy 複合データポイントは、標準的な複合データポイントではデータ操作が不可能な場合によく使用されます。また、モジュールがデータ収集に埋め込み Groovy スクリプトを使用していない場合、あるいは使用していても公式の LogicMonitor モジュールである場合にも便利です。このような場合、Groovy 複合データポイントは、高度なデータ処理とカスタマイズを柔軟に実行できる手段を提供します。

Groovy を使用して複雑なデータポイントを構築する場合、Collector は通常のデータポイントから収集した生データを Groovy 変数に事前設定します。これらのオブジェクトの型と構文は、データソースで使用される収集方法によって異なります。

注意: 標準の複雑なデータポイントによって提供される式構文を超える高度な処理が必要な場合にのみ、Groovy の複雑なデータポイントを控えめに使用してください。

以下の表は、各収集メソッドで使用可能な変数名と、Groovyの複雑なデータポイントがそれらを使用して生の監視データを処理および操作する方法を示しています。各例では、一般的なユースケースと、意味のある計算値を返すために適用されるGroovyロジックの種類を取り上げています。

コレクションタイプGroovy変数例:
SNMPoutput—SNMPペイロードは配列として表現され、各OID/レスポンスペアは、 =. 着信値と発信値を合計して合計オクテットを計算します。

// iterate through output array
output.each
{ line ->
    (oid, value) = line.toString().split('=');
    // get inOctet and outOctet values
    if (oid.startsWith(".1.3.6.1.2.1.31.1.1.1.6"))
    {
        totalInOctets = value.toFloat();
    }
    else if (oid.startsWith(".1.3.6.1.2.1.31.1.1.1.10"))
    {
        totalOutOctets = value.toFloat();
    }
}
// sum the values and return
totalOctets = totalInOctets + totalOutOctets;
return(totalOctets);
HTTPstatus—httpクライアントのステータスコード(1~5)。5は接続失敗です。

responseTime—応答時間(ミリ秒)

output—ヘッダーと本文を含むHTTPレスポンス全体

body—HTTP本体のみ
HTTP ステータスの結果を正規化して解釈します。

if (status < 2)
{
    myStatus = 5;
}
else
{
    myStatus = 10;
}
return(myStatus);
WMIoutput— 指定された WMI クラスのすべてのプロパティを、プロパティ名 (大文字) をキーとして含むマップ。 WMI クラスから特定のプロパティ値を取得します。

rawDate=output["LOCALDATETIME"];
return(rawDate);
JMXoutput—指定された各 MBean とその生の値を含むマップ。 返された日付文字列からの経過時間を計算します。

rawDate = output["solr/##WILDVALUE2##:type=/replication,id=org.apache.solr.handler.ReplicationHandler:replicationFailedAt"]
fd = Date.parse('EEE MMM dd HH:mm:ss z yyyy', rawDate)
today = new Date()
return((today.time - fd.time)/1000)

注意: Groovyの複合データポイントは、生のデータを「counter」や「derive」などのレートで計算されたデータポイントではなく、収集されたそのままの形で(つまり「gauge」データポイントとして)参照します。Groovyでデータを処理した後は、 return(); 計算された値を Collector に渡して保存するメソッド。

Groovy の複雑なデータポイントにおけるリソースとインスタンスのプロパティ

Groovy 複合データポイント内で収集したリソースまたはインスタンス プロパティを使用できます。

次の表は、Groovy 内でリソースまたはインスタンスのプロパティを参照する方法を説明しています。

プロパティ取得
hostProps.get("auto.PropertyName")リソースプロパティ
instanceProps.get("auto.PropertyName")インスタンスプロパティ
taskProps.get("auto.PropertyName")いずれかのタイプのプロパティ

詳細と例については、を参照してください。 埋め込まれたGroovyスクリプト.

複雑なデータポイントの構成

注意: 以下の手順は、データポイントの共通設定手順の概要です。各収集方法に関連する具体的な手順については、各収集方法の該当するドキュメントを参照してください。

  1. LogicMonitorで、次の場所に移動します モジュール.
  2. 選択する マイ モジュール ツールボックスをクリックし、新しい DataSource を作成するか、複雑なデータポイントを作成する DataSource に移動します。
    詳細については、を参照してください。 データソースの構成 or モジュール管理.
  3. モジュールの必要に応じて設定を構成または変更します。
    詳細については、を参照してください。 データソースの構成.
  4.  データポイント 設定、選択 複雑なデータポイントを追加する、次の操作を実行します。
  5.   フィールドにデータポイントの名前を入力します。
  6.   詳細説明  フィールドに、必要に応じて説明を入力します。
  7. ノーザンダイバー社の 方法 ドロップダウンで、データポイントの計算に使用する以下のいずれかの方法を選択します。
    • 標準的な複素データポイントを計算するには、「式(中置または逆接)を使用して値を計算する」を選択し、計算に使用する式を入力します。 表現 フィールド。
      標準的な複雑なデータポイントを計算するために使用できる式の詳細については、 標準複素データポイントの式構文.
    • Groovyの複雑なデータポイントを計算するには、「Groovyスクリプトを使用して値を計算する」を選択し、 Groovyソースコード フィールド。
      標準的な複雑なデータポイントを計算するために使用できるGroovyスクリプト構文の詳細については、以下を参照してください。 Groovy の複雑なデータポイントの式構文.
  8. (オプション)データポイントの読み取り可能なステータス値を表示するには、 ステータス表示名を追加をクリックし、次の操作を行います。
    1.  ステータス値 フィールドに、データポイントによって返される数値を入力します。 
    2. ノーザンダイバー社の Operator ドロップダウン メニューで、値を適用する方法を選択します。
      • 値が指定値より大きい場合は、 「(>) より大きい。」
      • 値が指定された値に達するか超える場合は、「(>=) 以上」を選択します。
      • 指定した値より小さい場合は、「(<) 未満」を選択します。
      • 値が指定された値以下の場合は、「(<=) 以下」を選択します。
      • 値が指定した値と完全に一致する場合は、「(=) 等しい」を選択します。
      • 指定した値以外のすべての値には、「(!=) 等しくない」を選択します。
    3.  表示名 フィールドに、対応するステータステキストを入力します(例: 3 = Non-operational).
    4. 選択する Apply 保存する。 
    5. 設定する アラートのしきい値 必要に応じて設定します。
      詳細については、を参照してください。 アラートしきい値の概要.
    6. 選択する 青い保存アイコン データポイントを保存します。
  9. データソースの追加設定を構成し、 Save.

14日間フルアクセス LogicMonitor プラットフォーム