数式演算子および関数

式エディターで使用される数式演算子および関数のリファレンス (例を含む)。

派生属性の値は、同じデータ・ソースにある定数および他の属性値に基づいて式を評価した結果の値です。 式の文法は通常の数式 (オペランド 演算子 オペランド) で、グループ化には括弧を使用します。数値属性は、通常の数学演算子 (+ - * / %) を使用して、他の数値属性や定数と組み合わせることができます。% は、「左方オペランド」に 100 を乗算し、「右方オペランド」で除算します。 ストリング属性は、+ を使用して、他のストリング属性や定数と組み合わせることができます。また、以下で説明する関数を使用できます。関数は function_name(argument_1, argument_2, argument_3) の形式で入力します。

属性は、その名前 (「データ・ソース情報」ツリーに表示される名前) によって表されます。整数定数は、数値として指定されます。 ストリング定数は、引用符で囲みます。

次の関数を式で使用できます。
abs
数値の絶対値を戻します。
atof
ストリングを浮動小数点値に変換します。
atoi
ストリングを整数値に変換します。 通常の C atoi と同じ動作をします。10 進数でない最初の文字で停止します。
average
値のセットの平均である単 一の値を戻します。 値のセットは、関数の引数から取得されます。 複数の個別の値 (属性名や定数など) をそれぞれ別個の引数として指定できます。または、last 関数のみをこの関数の唯一の引数として指定することもできます (属性の最新の値の平均を計算する場合)。
この関数の使用例を以下に示します。
average (Attr_A, AttrB, Attr_C)
average (last (Attr_A, 10))
ceiling
引数以上の最小の整数を返します。

例えば、attribute_a = 12.4 の場合、ceiling(attribute_a) は値 13 を返します。また、attribute_a = -12.4 の場合、ceiling(attribute_a) は値 -12 を返します。

delta
ある属性の最新の値と、その属性の以前に収集された値の差分。delta の単一引数は last 関数である必要があります。この関数は属性の現行値と以前の値を取得します。通常は以下のように使用します。
delta (last(OtherAttribute, 2))
delta を計算するために last 関数のどの属性値が使用されるかについて詳しくは、間隔の特定の計算を参照してください。この関数は派生属性にのみ適用でき、属性グループ・フィルターには適用できません。
floor
引数以下の最大の整数を返します。

例えば、attribute_a = 12.4 の場合、floor(attribute_a) は値 12 を返します。また、attribute_a = -12.4 の場合、floor(attribute_a) は値 -13 を返します。

getenv
指定された環境変数または「構成変数」の値を戻します。
ipAddressToName
IP アドレスをホスト名に変換します。この関数は 1 つの 引数 (ドット 10 進表記の IP アドレス・ストリング) を 必要とします。アドレスを解決できない場合は、IP アドレスが返されます。
itoa
整数をストリングに変換します。 この関数は、数値をストリングに連結する場合に、 最も役立ちます。 派生ストリング + 関数は、ストリング引数を 2 つだけ取ります。
last
minmaxaveragestddevrate、および delta 関数によって使用される値のリストを戻します。これは、収集する属性および計算で使用する値 の数という 2 つの引数を使用します。 必要とする属性が、 整数値をストリングとして格納する属性である場合は、最初の引数に atoi 関数を含めることができます。 例えば、atoi(numericalStringAttribute) のようにします。 2 番目の引数は数値でなければなりません。 定数としてハードコーディングするか、または atoi(getenv("ENV_VAR")) 式の結果を使用します。属性値を参照することはできません。
この関数の使用例を以下に示します。
average (last (Attr_A, 10))
last (Attribute_A, ${K01_NUM_COLLECTIONS}))
制約事項: last 関数は、特定の式の中で 1 回しか使えません。
matches
正規表現が値と一致したかどうかを示す、ブール値 (true または false) を返します。ストリング・ソースおよび結果をストリングと比較する正規表現の 2 つの引数を取ります。この関数は属性グループのフィルタリングに役立ちます。
max
値のセットの最大である単 一の値を戻します。 値のセットは、関数の引数から取得されます。 複数の個別の値 (属性名や定数など) をそれぞれ別個の引数として指定できます。または、last 関数のみをこの関数の唯一の引数として指定することもできます (属性の最新の値の最大値を計算する場合)。
min
値のセットの最小である単 一の値を戻します。 値のセットは、関数の引数から取得されます。 複数の個別の値 (属性名や定数など) をそれぞれ別個の引数として指定できます。または、last 関数のみをこの関数の唯一の引数として指定することもできます (属性の最新の値の最小値を計算する場合)。
nameToIpAddress
ホスト名を IP アドレスに変換します。この関数は 1 つの引数 (ホスト名ストリング) を必要とします。アドレスを解決できない場合は、ホスト名が返されます。
NetWareTimeToTivoliTimestamp
Novell NetWare の 16 進時刻値を Tivoli® Monitoring のタイム・スタンプに 変換します。この関数は 1 つの引数 (特別な NetWare 16 進時刻値) を 必要とします。 属性タイプはタイム・スタンプです。
rate
ある属性の最新の値と、その属性の以前に収集された値の間の変化率 (1 秒当たり)。 rate の単一引数は last 関数である必要があります。この関数は属性の現行値と以前の値を取得します。通常は以下のように使用します。
rate (last(OtherAttribute, 2))
rate を計算するために last 関数のどの属性値が使用されるかについて詳しくは、間隔の特定の計算を参照してください。この関数は派生属性にのみ適用でき、属性グループ・フィルターには適用できません。
replaceFirst
正規表現に一致する最初のサブストリングを、置き換えストリングで置き換えます。 この関数では、3 つの引数を使用します。1 つ目は、入力ストリングです。2 つ目は、入力ストリング内のサブストリングの突き合わせに使用する正規表現です。 3 つ目は、置き換えストリングです。 正規表現、および置き換えストリングで使用できる置換値の詳細については、ICU 正規表現を参照してください。
replaceAll
正規表現に一致するすべてのサブストリングを、置き換えストリングで置き換えます。 この関数では、3 つの引数を使用します。1 つ目は、入力ストリングです。2 つ目は、入力ストリング内のサブストリングの突き合わせに使用する正規表現です。 3 つ目は、置き換えストリングです。 正規表現、および置き換えストリングで使用できる置換値の詳細については、ICU 正規表現を参照してください。
round
数値を最も近い整数に数学的に丸めます。
sqrt
数値の平方根を返します。
stddev
値のセットの標準偏差である単 一の値を戻します。 値のセットは、関数の引数から取得されます。 複数の個別の値 (属性名や定数など) をそれぞれ別個の引数として指定できます。または、last 関数のみをこの関数の唯一の引数として指定することもできます (属性の最新の値の標準偏差を計算する場合)。
StringToTivoliTimestamp
日時ストリングを Tivoli Monitoring のタイム・スタンプに 変換します。この関数は 2 つの引数を必要とします。最初の引数は、 タイム・スタンプをフリー・フォームのストリングで表したものです。2 番目の引数は、 タイム・スタンプのフリー・フォーム・ストリング表記の解析方法を示す 書式制御ストリングです。有効な書式パラメーターを表 1 に示します。属性タイプはタイム・スタンプです。
表 1. StringToTivoliTimestamp の有効な書式パラメーター
シンボル 意味 フォーマット
y
yy
yyyy
96
1996
M
注: サポートされているのは 英語の月ストリングだけです。
M または MM
MMM
MMMM
09
Sept
September
d
d
dd
2
02
E 曜日
注: サポートされているのは 英語の曜日ストリングだけです。
EE
EEE
EEEE
Sa
Sat
Saturday
h 午前または午後の時間 (1 から 12) hh 07
H 時間 (0 から 23) HH 00
m mm 04
s ss 05
S ミリ秒
S
SS
SSS
2
24
245
a AM または PM マーカー a または aa am
その他の ASCII 文字 この文字をスキップします
- (ハイフン)
  (スペース)
/ (スラッシュ)
: (コロン)
* (アスタリスク)
, (コンマ)

表 2 は、タイム・スタンプのストリング表記およびその解析に使用する書式制御ストリングの例を示します。

表 2. StringToTivoliTimestamp の例 . タイム・スタンプのストリング表記のいくつかの例がリストおよび説明されている表
タイム・スタンプのストリング表記 書式制御ストリング
96.07.10 at 15:08:56 yy.MM.dd ** HH:mm:ss
Wed, August 10, 2010 12:08 pm EEE, MMMM dd, yyyy hh:mm a
Thu 21/01/2010 14:10:33.17 EEE dd/MM/yyyy HH:mm:ss.SS
sum
値のセットの合計である単 一の値を戻します。 値のセットは、関数の引数から取得されます。 複数の個別の値 (属性名や定数など) をそれぞれ別個の引数として指定できます。または、last 関数のみをこの関数の唯一の引数として指定することもできます (属性の最新の値の合計を計算する場合)。
TivoliLogTimeToTivoliTimestamp
Tivoli のログ・ファイルのタイム・スタンプを、Tivoli Monitoring のタイム・スタンプに変換します。この関数は 1 つの引数 (Tivoli ログ・ファイルのストリング・タイム・スタンプ) を必要とします。 属性タイプはタイム・スタンプです。
tokenize
トークン化されたストリングの中の 1 つのトークン。この関数は 3 つの引数を 必要とします。最初の引数は、 トークンに分割するストリングです。2 番目の引数は、トークンを相互に区切る ストリング内の文字を 1 つ以上指定します。この引数で指定された 文字のいずれかが出現すると、最初の引数の中にあるトークンが識別され、 分離されます。3 番目の引数は、この関数の結果として返す トークンのインデックスです。最初のトークンは インデックス 0 であり、2 番目のトークンはインデックス 1 です (以下同様)。この引数をストリング LAST にして、最後のトークンを返させることもできます。
UTCtoGMT
協定世界時を GMT の Tivoli Monitoring タイム・スタンプに変換します。この関数は 1 つの引数 (整数の time_t 値) を 必要とします。 属性タイプはタイム・スタンプです。
UTCtoLocalTime
協定世界時をローカルの Tivoli Monitoring タイム・スタンプに 変換します。この関数は 1 つの引数 (整数の time_t 値) を 必要とします。 属性タイプはタイム・スタンプです。
引数を取らずに数値を返す関数を以下に示します。
count
最初に呼び出されたときに 1 から開始するカウンターを保持し、 続けて呼び出されるごとにカウンターは 1 増加します。 last を使用している式でこの関数を同時に使用すると、last() によって格納された要素の数と一致しますが、それは last() が最大個数に達するまでの間に限ります。この時点で、last() は新しい値のために 最も古い値の削除を開始します。そのため、count() は永久に増加し続けますが、last() の値の総数は同じ ままになります。
cumulativeSum
フロー制御要約イベントによって表される重複イベントの引数値の合計を返します。または、データ・ソースからの単一イベントである場合、その引数を返します。この関数では、1 つの数値引数を使用します。 この関数は、イベント・フィルタリングおよび要約がオンに設定されたイベントの属性グループにのみ適用されます。
eventThreshold
イベントを生成した属性グループについて構成されているしきい値を返します。 以下の 3 つの列挙を使用した数値です。
  • SEND_ALL (-3)
  • SEND_FIRST (-2)
  • SEND_NONE (-1)
括弧内の数値は未加工値です。ただし、Agent Builder は列挙を定義するため、デフォルトではテキスト・バージョンを Tivoli Enterprise Portal または IBM® Cloud Application Performance Management コンソールで確認できます。 3 つの事前定義された選択項目のいずれかではなく、実際の数値のしきい値を指定した場合、この関数はその数を返します。 値は 0 より大きい整数です。この関数は、イベント・フィルタリングおよび要約がオンに設定されたイベントの属性グループにのみ適用されます。
isSummaryEvent
データ・ソースからの単一イベントである場合、0 を返します。イベントがフロー制御要約イベントである場合、1 を返します。 関数にデフォルトの属性を使用する場合、表示される値はイベントおよび要約イベントです。 属性を手動で作成する場合、名前を列挙として定義しない限り、表示される値は 0 および 1 です。 この関数は、イベント・フィルタリングおよび要約がオンに設定されたイベントの属性グループにのみ適用されます。
occurrenceCount
フロー制御要約イベントによって表される一致イベントの数を返します。データ・ソースからの単一イベントである場合、1 を返します (フロー制御要約イベントには、最初のイベントが含まれます)。この関数は、イベント・フィルタリングおよび要約がオンに設定されたイベントの属性グループにのみ適用されます。
summaryInterval
イベントを生成した属性グループについて構成されている要約間隔を秒単位で返します。この関数は、イベント・フィルタリングおよび要約がオンに設定されたイベントの属性グループにのみ適用されます。

派生属性およびフィルタリング属性を作成する数式演算子および関数の使用例

例 1 - 派生属性

以下の属性タイプを定義するデータ・ソースがあるとします。
Name ストリング
xBytes 数値
yBytes 数値
Virtual_Size 数値
以下を定義することができます。
  • 属性 totalBytes は、xBytesyBytes の合計として定義できます。式 xBytes + yBytes を入力します。
  • 属性 yPercent が合計バイト数 (yBytes) の百分率である場合、yBytes % (xBytes + yBytes) または yBytes % totalBytes のように定義できます。

例 2 - 派生属性

この式は、Virtual_Size 属性について最近収集された値の最大値を返します。収集するサンプル数には、getenv によって取得した構成変数 K4P_COLLECTIONS_PER_HISTORY_INTERVALatoi によって数値に変換したものを使用しています。

max(last(Virtual_Size,atoi(getenv("K4P_COLLECTIONS_PER_HISTORY_INTERVAL"))))

例 3 - 派生属性

この式は、xBytes および yBytes 属性値の平方合計の平方根を返します。
sqrt(xBytes * xBytes + yBtyes * yBytes)

例 4 - 派生属性

この式は、属性グループの最新の 20 個のサンプルをもとに、xBytes 属性の平均を返します。エージェントが開始されてから収集されたサンプルが 20 個よりも少ない場合は、すべてのサンプルをもとに xBytes 属性の平均を返します。
average(last(xBytes,20))

例 5 - フィルタリング属性

以下を返すデータ・ソースがあるとします。
Name    Type  Size  Used  Free 
Memory  MEM      8     4     4
Disk1   DISK   300   200   100
Disk2   DISK   500   100   400
ディスク使用量のみを調べたいとします。解決策は、フィルターを作成して、返されるデータを制限することです。返されるデータを制限するには、 以下のようにブール値 (true または false の値) を返す単純なフィルターを作成します。
ディスク・フィルター:
Type=="DISK"
このようにすると、フィルター Type=="DISK" が true の場合に、属性グループは以下の例のようにディスク使用量のデータのみを返します。
Name    Type   Size  Used  Free 
Disk1   DISK   300   200   100
Disk2   DISK   500   100   400

例 6 - フィルタリング属性

以下を返すデータ・ソースがあるとします。
Name   Size  Used  Free 
Memory    8     4     4
Disk1   300   200   100
Disk2   500   100   400
返されるデータは前の例に似ていますが、今回は Type 属性が存在しません。ここで matches 関数を使用して、「Name」属性の値と "Disk" の後ろに数値が続くものとが一致する、すべてのデータ行を検索できます。
ディスク・フィルター:
matches(Name, "Disk[0-9]*")
フィルターにより、属性 Name のストリングと "Disk" の後ろに数値が続くものとが一致した場合、以下のようにディスクの使用量のデータ行のみが返されます。
Name   Size  Used  Free 
Disk1   300   200   100
Disk2   500   100   400