強化されたスクリプト ネットスキャン

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

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

要件

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

拡張スクリプト Netscan の追加

  1.   設定 > ネットスキャン > Add > 高度なネットスキャン。
  2. 管理者ポータルで、「プラットフォーム」をクリックします。 ネットスキャンを追加 ウィンドウで、 お名前 フォルダーとその下に 説明 .
  3. 入力します グループ. 既存のグループのリストから選択するか、フィールドを空白のままにしてグループに追加できます。 @デフォルト グループ。 詳細については、次を参照してください。 NetScanの作成.
  4. 使用 コレクターグループコレクタ コレクターを選択するためのフィールド。 これは、NetScan を実行するコレクターです。 [コレクター] フィールドのオプションは、コレクター グループに基づいてフィルター処理されます。
  5. 選択 強化されたスクリプト ネットスキャン  方法 ドロップダウンリスト。
  6.  デバイスの資格情報で、次のオプションのいずれかを選択します。
    • デバイスグループから資格情報を継承する
    • デバイスから資格情報を継承する
    • このスキャンにはカスタム認証情報を使用してください。 このオプションを選択する場合は、 Add [+] プロパティとプロパティ値を提供します。 提供されたリストから選択するか、独自のカスタム キー名を入力できます。 

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

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

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

コレクターの割り当て

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

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

スクリプトの書式設定

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

キー名Groovy データ型必須 / オプション
hostnameString必須
displaynameString必須
hostPropsMap<String, String>オプション
groupNameList<String>オプション
collectorIdIntegerオプション

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

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

[

{
    "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
}

]

カスタムプロパティ

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

  • auto. 
  • predef. 
  • system.
    • system.categories Enhanced Script 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
lmEmit.resource(resources)
記事上で