AppliesToスクリプティングの概要

最終更新日: 21 年 2023 月 XNUMX 日

AppliesToスクリプトは、プロパティに基づいてLogicMonitorリソースのセットを選択するためのメソッドです。 これらのプロパティは、基本的なシステム情報の検出またはPropertySourceの実行を介して自動的に割り当てられるか、親リソースまたはリソースグループから継承されるか、手動で割り当てられます。 詳細については、を参照してください。 リソースとインスタンスのプロパティ.

独自のLogicMonitorスクリプト言語として、AppliesToスクリプトは、監視に追加したリソースを照会し、式がTRUEと評価されるリソースを返します。 AppliesToスクリプトは、LogicMonitor全体で次のようないくつかの目的を果たします。

  • LogicModuleをリソースに関連付ける。 に入力されたスクリプト式に適用 に適用されます LogicModule定義のフィールドで、LogicModule(DataSource、PropertySource、EventSource、TopologySourceなど)が適用されるリソースを決定します。 LogicMonitorがLogicModuleをリソースに関連付ける方法の詳細については、を参照してください。 データソースをリソースに適用する方法.
  • リソースを動的にグループ化します。 前述のように デバイスグループの概要、AppliesToスクリプト式は、リソースを動的にグループに編成するために使用されます。
  • カスタムリソースダッシュボードテンプレートをリソースに適用します。 AppliesToスクリプトを使用して、リソースのサブセットのカスタムリソースダッシュボードを表示できます。 [グラフ]タブ.
  • ダッシュボードに含めるためのリソース数を返します。 を含むさまざまなダッシュボードウィジェット 円グラフウィジェット & ビッグナンバーウィジェット AppliesToスクリプトクエリの結果に基づいてリソース数を返すようにカスタマイズできます。
  • カスタムAppliesTo関数の作成。 前述のように ユーザー定義のAppliesTo関数、AppliesToスクリプトを使用して、プラットフォーム全体で再利用するためのカスタムAppliesTo関数を作成できます。

AppliesToスクリプト構文

LogicMonitorのすぐに使用できるLogicModuleの大部分は、カスタマイズを必要としないAppliesTo式を備えています。 ただし、LogicModuleを更新/作成する場合、または製品の他の領域でAppliesTo式を作成する場合は、スクリプト言語がどのように動作するかを理解することが重要です。

注: LogicModuleが関連付けられているリソースを変更する目的でAppliesTo式を更新する場合は、関連付けを解除するとLogicModuleによって収集されたすべての履歴データが失われるため、細心の注意を払って行ってください。 ベストプラクティスとして、LogicModule定義を更新する前に、AppliesToスクリプトの変更を常にテストしてください。 AppliesToステートメントの作成とテスト このサポート記事のセクション。

オペレーター

次の演算子は、AppliesTo式で使用できます。

演算子行動
==に等しい
!=等しくない
>越える
>=以上
<未満
<=以下
=~正規表現の同等性(大文字と小文字を区別しない)
!~正規表現の不等式(大文字と小文字を区別しない)
&論理積、と同等 &&
&&論理的で、同等 &
or論理OR、同等 ||
||論理OR、同等 or
!論理否定
()グループ化演算子

絶対関数

機能 true() & false() それぞれ、すべてのリソースに一致するか、まったく一致しません。 として true() 関数はポータル内のすべてのリソースと一致します。使用する場合は控えめに、注意して使用してください。 ザ・ false() 関数は、LogicModuleを削除せずにグローバルに無効にするのに役立ちます(ただし、LogicModuleがリソースから関連付け解除されると、履歴データが失われることに注意してください)。 ザ・ false() 関数は、開発中のLogicModuleで使用して、リソースに時期尚早に適用されるのを防ぐこともできます。 どちらの関数もパラメーターを受け入れません。

便利な機能

LogicMonitorは、リソースの一般的なカテゴリを識別するための多数の組み込み関数を維持しています。 これらの関数のほとんどは、 system.sysinfo プロパティ(WMI(Windowsデバイスの場合)またはSNMP(Linux、NetApp、Netscaler、Ciscoの場合)を介して入力されます)および/または system.categories プロパティ(手動で入力することもできますが、通常はPropertySourcesによって入力されます)。 コンビニエンス関数はパラメーターを受け入れません。

便利な機能行動
isAWSService()の値がTRUEの場合、TRUEを返します。 システム.デバイスタイプ プロパティは「2」です。
isAzureService()の値がTRUEの場合、TRUEを返します。 システム.デバイスタイプ プロパティは「4」です。
isCisco()「cisco」の値がに含まれている場合はTRUEを返します。 システム.sysinfo or システム カテゴリ プロパティ。
isCollectorDevice()の値がTRUEの場合、TRUEを返します。 システムコレクター プロパティは「true」です。
isDevice()の値がTRUEの場合、TRUEを返します。 システム.デバイスタイプ プロパティが「0」の場合、または「collectorDataSources」の値がに含まれている場合 システム カテゴリ プロパティ。
isFreebsd()「freebsd」の値がに含まれている場合はTRUEを返します システム.sysinfo or システム カテゴリ プロパティ。
isF5()次の場合にTRUEを返します システム.sysoid プロパティは「1.3.6.1.4.1.3375.2.1.3.4.4」で始まるか、「f5」の値がに含まれている場合 システム カテゴリ プロパティ。
isGCPService()の値がTRUEの場合、TRUEを返します。 システム.デバイスタイプ プロパティは「7」です。
isLinux()「linux」の値がに含まれている場合はTRUEを返します システム.sysinfo or システム カテゴリ プロパティと「CiscoIOS」の値がに存在しない システム.sysinfo プロパティ。
isMisc()の基準がない場合はTRUEを返します isWindows(), isLinux(), isNetwork(), isStorage(), isVirtualization() 便利な機能が満たされています。
isNetApp()「netapp」の値がに含まれている場合はTRUEを返します システム.sysinfo or システム カテゴリ プロパティ。
isNetflow()の値がTRUEの場合、TRUEを返します。 system.enablenetflow プロパティは「true」です。
isNetscaler()「netscaler」の値がに含まれている場合はTRUEを返します システム.sysinfo or システム カテゴリ プロパティ。
isNetwork()次の場合にTRUEを返します システム.sysinfo or システム カテゴリ プロパティには、ネットワークと見なされるシステムを表す値が含まれています。 多数の値が含まれます。 「isNetwork」AppliesTo関数を参照してください(設定| AppliesTo関数| isNetwork)完全な式の場合。
isSolaris()「solaris」の値がに含まれている場合はTRUEを返します システム.sysinfo or システム カテゴリ プロパティ。
isStorage()次の場合にTRUEを返します システム.sysinfo or システム カテゴリ プロパティには、ストレージと見なされるシステムを表す値が含まれています。 多数の値が含まれます。 「isStorage」AppliesTo関数を参照してください(設定| AppliesTo関数| isStorage)完全な式の場合。
isUnix()「solaris」または「linux」または「freebs」の値がに含まれている場合はTRUEを返します。 システム.sysinfo or システム カテゴリ プロパティ。
isVirtualization()「vmware」または「xen」の値がに含まれている場合はTRUEを返します システム.仮想化 プロパティ、または「hyperv」の値がに含まれている場合 システム カテゴリ プロパティ。
isWindows()「windows」または「hyper-v」の値がに含まれている場合はTRUEを返します。 システム.sysinfo or システム カテゴリ プロパティ。
getCollectorVersion()の値を返します system.collector バージョン プロパティ。

配列を操作する関数

システムかカスタムかに関係なく、ほとんどのリソースプロパティは文字列型または数値型ですが、配列型であるものがいくつかあります。特に次のとおりです。

  • システム カテゴリ
  • システム.グループ
  • system.staticgroups
  • システム.ips

配列を操作するための特定のAppliesTo関数があります。

contains(<array>,"<string>")

指定された文字列が配列要素と一致する場合、この関数はTRUEを返します。 一致は検索文字列での完全一致であり、大文字と小文字は区別されません。 正規表現はサポートされていません。

説明
contains(system.groups,"network")「network」、「Network」、「nEtWoRk」などの名前のリソースツリーのルートにあるグループ(動的および静的)に一致します。

  system.groups プロパティは、リソースを動的にグループに編成することを目的としたAppliesToスクリプト式では使用できません。 で説明したように デバイスグループの概要、グループメンバーシップに依存する動的グループを作成する場合は、 system.staticgroups プロパティ(たとえば、 contains(system.staticgroups,"network").
contains(system.staticgroups,"Acme Corp/Prod")「Prod」または「prod」という名前の「AcmeCorp」の子グループに一致しますが、「production」、「Prod_QA」などの名前の子グループには一致しません。

静的グループメンバーシップ(動的グループメンバーシップではない)のみが照会されます。 system.staticgroups プロパティが参照されます。
contains(system.ips,"192.168.170.1")192.168.170.1のIPアドレスを持つリソースを照合します。

  contains() 関数は、リソースの完全なIPアドレスを照合するためにのみ使用できます。 部分的なIPアドレスまたは範囲のマッチングには、 join() 機能。

join(<array>,"<separator>")

この関数は、指定された区切り文字で区切られた配列要素を持つ文字列に配列を平坦化します。 必要なパラメーターは配列名です(たとえば、 system.groups)および文字列区切り文字(たとえば、「、」)。 とは異なり contains()、部分一致および正規表現がサポートされています。 単独で使用すると、指定した配列プロパティに任意の値が設定されているリソースに対してTRUEを返します。

説明
join(system.ips,",")=~"192\\.168\\.100\\."リソースをサブネット192.168.100.XのIPアドレスと照合します。 リソースの部分的なIPアドレスを照合する機能は、サブネットまたはIP範囲でデバイスをグループ化する場合に役立ちます。

この例では、IP アドレスのピリオドを二重バックスラッシュでエスケープする必要があります。
join(system.groups,",")=~"Prod"リソースツリーの任意のレベルで、「Prod」、「production」、「Prod1」などの名前を持つグループ内のリソースを照合します。
join(system.staticgroups,",")=~"/.*dev"名前に「dev」、「Dev」、「DEV」などが含まれる非動的な子グループのリソースに一致します。
!join(system.categories,",")対象となるすべてのリソースに一致します system.categories 空です。 に相当 !system.categories.

hasCategory("<string>")

この関数は、 system.categories 指定された文字列に対して大文字と小文字を区別しない完全一致である配列要素のプロパティ。 正規表現はサポートされていません。 一致する場合はTRUEを返します。

説明
hasCategory("sonicwallfw")system.categories に「sonicwallfw」が存在する場合は TRUE を返します。

文字列と数値を操作する関数

次の関数は、文字列型または数値型のプロパティを操作します。

exists("<property value>")

指定された値がリソースのプロパティのいずれかに割り当てられている場合、この関数はTRUEを返します。

sum(x,y,z)

この関数は、パラメーターとして渡された数値の合計を返します。

startsWith(<property>,"<value>")

プロパティ値が関数で指定された値で始まる場合、この関数はTRUEを返します。 通常、値は文字列であり、二重引用符で囲む必要があります。 文字列の先頭からの部分一致がサポートされています。 正規表現はそうではありません。 二重引用符なしで値を数値として渡すことができます。 ただし、数値の部分一致はサポートされていないため、関数がTRUEを返すには、一致が完了している必要があります。

説明
startsWith(system.sysinfo,"Microsoft")Windowsリソースと一致します。
startsWith(system.collectorversion,"28")Collectorバージョン28.xxxによって監視されているリソースと一致します。
startsWith(system.collectorversion,"28102")Collectorバージョン28.102によって監視されているリソースと一致します。 これはと同等であることに注意してください system.collectorversion==23102.

sysoid

これはのエイリアスです system.sysoid OIDのピリオドをエスケープする必要をなくすプロパティ。 で使用する ==, =!, =~ & !~ リソースのシステムOIDを指定された値と比較する演算子。 部分一致の場合は、 =~ or !~。 単独で使用すると、値が設定されているリソースに対してTRUEを返します。 system.sysoid.

説明
sysoid!="1.3.6.1.4.1.8072.3.2.10"「1.3.6.1.4.1.8072.3.2.10」ではないシステムOIDを持つリソースを照合します。
sysoid=~"8741.1"リソースを「8741.1」を含むシステムOIDと照合します。
sysoid値が指定されていない場合、このプロパティに値が設定されているすべてのリソースに対してTRUEを返します。

<property name>

任意のプロパティ名をAppliesTo関数として参照できます。 単独で使用すると、指定したプロパティに値が設定されているすべてのリソースに対してTRUEを返します。 比較のために演算子とともに使用できます。

説明
system.collectorversion>=28000Collectorsバージョン28.000以降で監視されているリソースと一致します。
system.collectorid!=system.prefcollectorid優先コレクターによってモニターされていないリソースに対してTRUEを返します。
auto.serial.number=~"^C0E"の値を持つリソースに対してTRUEを返します auto.serial.number 「C0E」で始まるプロパティ。

getPropValue("<property name>")

デバイスのプロパティ名に「:」、「/」、「*」、「=」、スペースなどの特殊文字が含まれている場合は、 getPropValue("<property name>") 関数。 プロパティ名に特殊文字を含めないことをお勧めしますが、それを避けられない場合は、この関数を使用して、AppliesTo式でプロパティを使用できます。

たとえば、「SiteA:unit」という名前のプロパティがあり、このプロパティの値が10〜19のリソースを返したい場合は、最初に次のことを試してください。

SiteA:unit=~"[10-19]"

ただし、正規表現の文字をエスケープする必要があることを通知する構文エラーが表示されます。 エラーを回避するには、代わりに次の式を使用する必要があります。

getPropValue("SiteA:unit")=~"[10-19]"

注: プロパティ名は二重引用符で囲まれます。

日時 getPropValue("<property name>") 単独で使用すると、指定したプロパティに値が設定されているすべてのリソースに対してTRUEを返します。

ユーザー定義関数

独自のAppliesToコンビニエンス関数をグローバルに定義できます。これらの関数は、AppliesToスクリプトを入力として受け取るLogicMonitor内の任意の場所から呼び出すことができます。 で説明したように ユーザー定義のAppliesTo関数、ユーザー定義の便利な関数は、[関数の適用]ページから作成および管理されます。

使用上の注意

正規表現

  • 正規表現の一致では大文字と小文字は区別されません。 ただし、プロパティ名と値はバックエンドで大文字と小文字を区別しないため、これは問題ではありません。 大文字と小文字が混在する名前と値を入力でき、設定すると大文字と小文字が混在して表示されますが、これはAppliesTo関数による処理方法には影響しません。
  • 文字列値で使用される正規表現トークンはエスケープしないでください。
    join(system.groups,",")=~"qa|dev"
  • 文字列値の正規表現トークンをリテラル文字として扱うには、「\\」でエスケープする必要があります。
    system.sysoid=~"(.+\\.){5}8072"

その他

すべてのプロパティ名は、リソース情報タブに表示されるとおりに引用符で囲まれていない文字列として参照されます。例外は、 getPropValue("<property name>") 関数。プロパティ名は二重引用符で囲む必要があります。

その他の例

複数のAppliesTo式をブール演算子でグループ化およびリンクして、AppliesToステートメントを必要に応じて具体的にすることができます。

説明
isWindows() && (system.sysinfo =~ “x64” || system.sysinfo =~ “Vista”)64ビットオペレーティングシステムまたはVistaを実行しているWindowsリソースを返します。
hasCategory("snmp") && !isWindows()「snmp」が値としてリストされているすべてのリソースを返します。 system.categories プロパティ(Windowsリソースを除く)。
isLinux() && system.collectorversion>=28000 && (location=~”オースティン” || join(system.groups,”,”)=~”dev|qa”)オースティンにあるか、「dev」または「qa」を含む名前のグループのメンバーである、Collectorバージョン28以降によって監視されているLinuxリソースを返します。

AppliesToステートメントの作成とテスト

AppliesToスクリプトがLogicMonitorプラットフォーム全体の入力として受け入れられる場合は常に、次のように表示されます。 に適用されます フィールド。 の に適用されます フィールドには、AppliesToステートメントが直接含まれています。 このフィールドには、ステートメントが意図したとおりに機能していることを確認するための、より直感的なステートメント作成およびテスト機能のウィザードが付属しています。

[適用先]フィールドとそれに付随するウィザードおよびテスト機能。

注: LogicModuleが関連付けられているリソースを変更する目的でAppliesTo式を更新する場合は、リソースのLogicModuleによって収集されたすべての履歴データが分離時に失われるため、細心の注意を払って行ってください。 ベストプラクティスとして、LogicModule定義を更新する前に、必ずAppliesToスクリプトの変更をテストしてください。

AppliesToウィザードを使用したステートメントの作成

AppliesToステートメントを手動で直接入力できますが に適用されます フィールドでは、ステートメントの作成に役立つAppliesToウィザードを利用する方が効率的であることがわかります。

ウィザード ボタンをクリックしてウィザードを開きます。 AppliesToウィザードを使用すると、次の基準のいずれかを使用してリソースの関連付けを決定するAppliesToステートメントをすばやく生成できます。

  • リソースタイプ。 選択する リソースタイプを選択 オプションを使用すると、LogicMonitorの組み込みの便利な関数を使用して定義される、いくつかの一般的なリソースタイプカテゴリのXNUMXつに分類されるリソースへの関連付けを絞り込むことができます。 たとえば、「Cisco」を選択すると、次の要素で構成されるAppliesToステートメントが生成されます。 isCisco() 便利な機能。 提供されたリソースタイプのいずれもユースケースに適用できない場合は、「その他」を選択して、 system.categories 特定の値のプロパティ。
  • リソースグループのメンバーシップ。 選択する リソースグループを選択します オプションを使用すると、XNUMXつ以上のグループ、およびオプションでそれらのサブグループに属するリソースへの関連付けを絞り込むことができます。
  • リソース名または説明。 選択する リソースを選択 オプションを使用すると、手動で選択したリソース、またはホスト名または表示名に特定の文字列が含まれているリソースに関連付けることができます。
  • カスタム。 カスタムクエリ 前のXNUMXつのオプションのいずれかによって作成されたステートメントを手動で編集または構築するオプション。

ウィザードを使用してAppliesToステートメントを作成した後、[ Save に保存するボタン に適用されます フィールド。 ステートメントをテストすることを強くお勧めします( ホイール試乗 ウィザードのボタンまたは真下にあるボタン に適用されます 次のセクションで説明するように、最終的なフォームの保存を実行する前に。

テストステートメント

AppliesToステートメントを作成または編集した後、フォームを保存して新しいステートメントを本番環境に移行する前に、ステートメントをテストすることを強くお勧めします。 []をクリックすると、AppliesToステートメントをテストできます。 ホイール試乗 ウィザードのボタンまたは テスト適用先 真下にあるボタン に適用されます フィールド。

次に示すように、テスト機能は、AppliesToステートメントによって返されるリソースの単純なカウントと、クリックすると一致するリソースの詳細を一覧表示するウィンドウを開く「Showme」ハイパーリンクを返します。

AppliesToステートメントのテスト
このAppliesToステートメントは現在XNUMXつのリソースに一致しますが、元のAppliesToステートメントに一致した他のXNUMXつのリソースを除外します。

既存のAppliesToステートメントを更新する場合、[影響を受けるアイテム]ウィンドウには、前のクエリに含まれていたリソースも一覧表示されますが、現在のクエリが保存されて本番環境に移行した場合は除外されます。

LogicModule定義内でAppliesTo更新を行う場合、ステートメントのテスト時に間もなく除外されるリソースを表示する機能は特に重要です。 これは、LogicModuleとリソースの間の関連付けを削除すると、そのリソースに対してそのLogicModuleによって以前に収集されたすべての履歴データも完全に削除されるためです。 最初にテストすることで、分離(および結果として生じるデータ損失)が意図的なものであることを確認します。

記事上で