強化されたスクリプト NetScan - 新しい UI

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

改善された出力フォーマット、追加のグループ割り当てオプション、およびリソース フィルタリングのために、LogicMonitor Enhanced Script NetScan を使用します。 デバイス資格情報を特定のリソースまたはリソース グループから継承したり、NetScan 構成でカスタム資格情報を設定したりできます。

要件

拡張スクリプト Netscan を使用するには、Netscan を実行するコレクタに LM Collector バージョン 32.400 以降がインストールされている必要があります。

拡張スクリプト NetScan の追加

  1. MFAデバイスに移動する 設定 > NetScans > 追加 > Advanced NetScan.



  2. [NetScan の追加] ウィンドウで、 お名前 フォルダーとその下に 説明.
  3. ネットスキャングループ フィールドにグループ名を入力します。 既存のグループのリストから選択するか、フィールドを空白のままにして @default グループに追加できます。 詳細については、次を参照してください。 NetScanの作成.
  4. ノーザンダイバー社の コレクターグループ & コレクタ オプションで、コレクター グループとコレクターをそれぞれ選択します。 これは、NetScan を実行するコレクターです。 [コレクタ] フィールドのオプションは、選択したコレクタ グループに基づいてフィルタリングされます。
  5. 選択 強化されたスクリプト ネットスキャン 方法 ドロップダウンリスト。
  6. デバイスの資格情報、次のいずれかのオプションを選択します。
    • デバイスグループから資格情報を継承する
    • デバイスから資格情報を継承する
    • このスキャンにカスタム資格情報を使用する – 追加 [+] を選択して、プロパティとプロパティ値を指定します。 表示されたリストからプロパティを選択するか、カスタム キー名を入力できます。

注: これらのプロパティは、netscanProps.get(“property.key”) を使用してスクリプトで使用するためにアクセスできます。 これらのプロパティのいずれかをリソースに追加するには、デバイスの JSON 構造の hostProps フィールドの下にそれらを含めます。 詳細については、次を参照してください。 スクリプトの書式設定.

  1. フィルタ セクションで、XNUMX つまたは複数のリソースをスキャンから除外します。 フィルタリングは、Netscan スクリプトで割り当てられたデバイスの属性と値に基づいています。
  2. スクリプトを提供するには、次のいずれかの方法を選択します。
    • スクリプトファイルをアップロード - 選択 スクリプトのアップロード ローカル マシンからスクリプトをアップロードします。
    • ネットワークからスクリプト ファイルをアップロードする – パス/ファイル名を入力して、ネットワークの場所からスクリプトをアップロードします。
    • Groovyスクリプトを埋め込む – 指定されたフィールドに Groovy スクリプトを貼り付けます。 詳細については、スクリプトの書式設定を参照してください。
  3. 親グループ フィールドに、デフォルト グループを入力します。 スクリプト出力でグループが指定されていない場合、リソースはデフォルト グループに追加されます。 スクリプト出力でグループが指定されている場合、デフォルト グループは無視されます。
  4. 次のいずれかのオプションを選択して、重複する IP アドレスを NetScan から除外できます。
    • 監視対象のリソース/デバイスの照合 — すでに監視されているリソースと同じ IP アドレスを持つ検出されたリソースを除外します。
    • この NetScan によってすでに検出されている一致するリソース/デバイス— この NetScan によってすでに監視対象に移動されている、検出されたリソースを除外します。
    • これらのリソース グループ内のリソース/デバイスの一致— 指定したリソース グループに属するリソースと同じ IP アドレスを持つ検出されたリソースを除外します。 このオプションを選択すると、追加のフィールドが表示され、XNUMX つ以上のリソース グループを指定できます。
    • これらのコレクタに現在割り当てられている一致するリソース/デバイス— 指定されたコレクタに割り当てられたリソースと同じ IP アドレスを持つ検出されたリソースを除外します。 このオプションを選択すると、追加のフィールドが表示され、XNUMX つ以上のコレクターを指定できるようになります。
  5. 有効にします この NetScan を実行しますスケジュール通り チェックボックスをオンにして、スケジュールに従って拡張スクリプト Netscan を実行します。
    • 周波数— 毎時、毎日、毎週、または毎月。
    • 開始時刻— 表示されたフィールドに開始時刻を入力します。
    • 時間帯— [イベントのタイム ゾーン] ポップアップ ウィンドウからタイム ゾーンを選択します。
  6. 次のいずれかを実行して、スキャンを保存します。
    • 選択 保存して実行 変更を保存し、Netscan を実行します。
    • 選択 Save Netscan を実行せずに保存します。

注: これらのプロパティは、netscanProps.get(“property.key”) を使用してスクリプトで使用するためにアクセスできます。 これらのプロパティのいずれかをデバイスに追加する場合は、デバイスの JSON 構造の hostProps フィールドの下にそれらを含めます。 詳細については、次を参照してください。 スクリプトの書式設定.

拡張 NetScan スクリプトを使用してプロパティを更新する 

  1. MFAデバイスに移動する  設定 > ネットスキャン 必要なリソースを選択します.
  2. ソフトウェア設定ページで、下図のように ネットスキャンの管理 ページに移動して、 強化されたスクリプト セクションに機密データを追加します。
  3. 選択 このスキャンにカスタム資格情報を使用する.
  4. 必要なプロパティとプロパティ値の情報をそれぞれのフィールドに入力します。

    「このスキャンにはカスタム資格情報を使用する」オプションを選択します
  5. 必要に応じて Groovy スクリプトを変更します。
    Note: Groovy スクリプトに機密情報が含まれていないことを確認してください。 
  6.  選択 Save.

注: スキャンがスケジュールどおりに実行される場合、それ以上のアクションは必要ありません。 スケジュールに従ってスキャンが完了すると、リソースは変更されたプロパティで更新されます。 ただし、スキャンがスケジュールどおりに実行されない場合は、EnhancedScriptNetScan ポリシーを手動で実行できます。

コレクターの割り当て

拡張スクリプト Netscan から作成されたデバイスは、任意のコレクタに割り当てることができます。 コレクター割り当ての優先順位は次のとおりです。各ステップで存在と有効性の両方をチェックし、見つかった最初の一致を取得します。

優先順位チェック
JSON 出力でデバイスに指定された CollectorId 値。
二番NetScan によって報告されたホスト グループの優先コレクター。 複数のグループ割り当ての場合、グループがリストされる順序。
三番デフォルトの NetScan グループの優先コレクター。
第4NetScan を実行するコレクター。

スクリプトの書式設定

強化されたスクリプト Netscan では、出力に JSON 形式が必要です。 デバイスは、次のキーのみを使用してオブジェクトのリストとしてフォーマットする必要があります。

キー名Groovy データ型必須 / オプション
hostname文字列必須
表示名文字列必須
ホスト小道具地図オプション
グループ名リストオプション
コレクターID整数オプション

スクリプトのフォーマット例

次の例は、スクリプト出力の書式設定に関するガイダンスを示しています。

[

{
    "hostname" : "1.1.1.1",
    "displayname" : "Server 123",
    "hostProps" : {
        "custom.prop"  : "value",
        "another.prop" : "384597",
        "ya.prop"      : "null"
    },
    "groupName" : ["ParentGroup/ChildGroup", "RootLevelGroup"],
    "collectorId" : 18
},
{
    "hostname" : "1.1.1.2",
    "displayname" : "Server 456",
    "hostProps" : {
        "custom.creds.user" : varUser.toString(),
        "custom.creds.pass" : varPass.toString()
    },
    "groupName" : ["GrandparentGroup/ParentGroup/NewGroupNotYetInExistence"],
    "collectorId" : 20
}

]

カスタムプロパティ

hostProps フィールドを使用して、NetScan の実行中にカスタム プロパティをデバイスに割り当てることができます。 これらのプロパティはカスタムであり、[リソース] ページから編集できます。 次のプレフィックスのいずれかを含むプロパティを割り当てた場合、それらは無視され、デバイスはそれらなしで追加されます。

  • 車。 
  • 事前定義。 
  • システム。
    • system.categories は、拡張スクリプト Netscan から設定できる唯一のシステム プロパティです。

拡張スクリプトのサンプル Netscan スクリプト

次のボイラープレート コードを使用して、独自のカスタム スクリプトを作成できます。 

注: これには、高度な Groovy スクリプト機能が必要です。

/*******************************************************************************
 * © 2007-2022 - LogicMonitor, Inc. All rights reserved.
 ******************************************************************************/
 
import com.logicmonitor.common.sse.utils.GroovyScriptHelper as GSH
import com.logicmonitor.mod.Snippets
import com.santaba.agent.AgentVersion
import java.text.DecimalFormat
 
// To run in debug mode, set to true
Boolean debug = false
 
// Import any needed credentials or properties that have been set in the UI
String netCreds = netscanProps.get("custom.property.key")
 
// Retrieve the collector version
Integer collectorVersion = AgentVersion.AGENT_VERSION.toInteger()
 
// Bail out early if we don't have the correct minimum collector version to ensure netscan runs properly
if (collectorVersion < 32400) {
    def formattedVer = new DecimalFormat("00.000").format(collectorVersion / 1000)
    throw new Exception(" Upgrade collector running netscan to 32.400 or higher to run full featured enhanced script netscan. Currently running version ${formattedVer}.")
}
 
// Bail out early if we don't have the necessary credentials
if (!netCreds) {
    throw new Exception(" Must provide credentials to run this script.  Verify necessary credentials have been provided in Netscan properties.")
}
 
// Load the lm.emit snippet to ensure proper output formatting
def modLoader = GSH.getInstance()._getScript("Snippets", Snippets.getLoader()).withBinding(getBinding())
def lmEmit = modLoader.load("lm.emit", "0.0")
 
// Get your data and build your list of resources
List<Map> resources = []
 
/*
Insert your custom code to retrieve data about the devices you want to add
*/
 
// Loop through your data to build your device map with proper keys
// in loop...
    Map resource = [
        "hostname"    : ip,          // String
        "displayname" : displayName, // String
        "hostProps"   : deviceProps, // Map<String, String>
        "groupName"   : groupName,   // List<String>
        "collectorId" : 123          // Integer
    ]
 
    resources.add(resource)
// ...end loop
 
// Output validated data in JSON format
// If errors have been made in acceptable/required keys, lm.emit will throw and inform the user
lm.emit(resources)
記事上で