強化されたスクリプト NetScan
最終更新日: 12 年 2024 月 XNUMX 日LogicMonitor 拡張スクリプト NetScan を使用すると、出力フォーマットの改善、グループ割り当てオプションの追加、デバイス フィルタリングが可能になります。 特定のデバイス、デバイス グループからデバイス資格情報を継承することを選択することも、Netscan 構成でカスタム資格情報を設定することもできます。
要件
拡張スクリプト NetScan を使用するには、Netscan を実行するコレクタに LM Collector バージョン 32.400 以降がインストールされている必要があります。
拡張スクリプト NetScan の追加
- に行く 設定 > ネットスキャン > Add > 高度なネットスキャン。
- ソフトウェア設定ページで、下図のように ネットスキャンを追加 ウィンドウで、 お名前 フォルダーとその下に Description .
- 入力します グループ. 既存のグループのリストから選択するか、フィールドを空白のままにしてグループに追加できます。 @デフォルト グループ。 詳細については、次を参照してください。 NetScanの作成.
- コレクターグループ と コレクタ コレクターを選択するためのフィールド。 これは、NetScan を実行するコレクターです。 [コレクター] フィールドのオプションは、コレクター グループに基づいてフィルター処理されます。
- 選択 強化されたスクリプト ネットスキャン 方法 ドロップダウンリスト。
- デバイスの資格情報で、次のオプションのいずれかを選択します。
- デバイスグループから資格情報を継承する
- デバイスから資格情報を継承する
- このスキャンにはカスタム認証情報を使用してください。 このオプションを選択する場合は、 Add [+] プロパティとプロパティ値を提供します。 提供されたリストから選択するか、独自のカスタム キー名を入力できます。
ご注意: これらのプロパティは、次を使用してスクリプトで使用するためにアクセスできます。 netscanProps.get("property.key")
. これらのプロパティのいずれかをデバイスに追加する場合は、デバイスの JSON 構造の hostProps フィールドの下にそれらを含めます。 詳細については、次を参照してください。 スクリプトの書式設定.
- フィルタ デバイスをスキャンから除外する機能。 フィルタリングは、Netscan スクリプトで割り当てられたデバイスの属性と値に基づいています。
- スクリプトを提供するには、次のいずれかの方法を選択します。
- スクリプト ファイルをアップロードします。 選択する スクリプトのアップロード ローカル マシンからスクリプトをアップロードします。
- ネットワークからスクリプト ファイルをアップロードします。 入力します パス/ファイル名 ネットワークの場所からスクリプトをアップロードします。
- Groovy スクリプトを埋め込みます。 指定されたフィールドに Groovy スクリプトを貼り付けます。 詳細については、次を参照してください。 スクリプトの書式設定.
- 入力します デフォルトグループ. スクリプト出力でグループが指定されていない場合、リソースはデフォルト グループに追加されます。 スクリプト出力でグループが指定されている場合、デフォルト グループは無視されます。
- また、ご購読はいつでも停止することが可能です 重複するIPアドレスを除外する 次のいずれかのオプションを選択して、NetScan から
- 監視対象のリソース/デバイスの照合 - 新しいリソースを追加する場合にのみ、システムは同じ IP アドレスを持つ検出されたリソースを除外します (同じリソースを再度監視することを避けるため)。 ただし、次回、追加されたリソースに対して拡張スクリプト NetScan を実行するときに、「監視対象リソースに一致するリソースの IP アドレスを除外する」という基準は適用されません。 リソースを追加した後、そのプロパティを更新して拡張スクリプト NetScan を実行すると、リソースが更新されます。
- この NetScan によってすでに検出されているリソース/デバイスと一致する - この NetScan によって既に監視対象に移動されている、検出されたリソースを除外します。
- これらのリソース グループ内のリソース/デバイスの照合 - 指定したリソース グループに属するリソースと同じ IP アドレスを持つ検出されたリソースを除外します。 このオプションを選択すると、追加のフィールドが表示され、XNUMX つ以上のリソース グループを指定できます。
- これらのコレクタに現在割り当てられているリソース/デバイスと一致する - 指定されたコレクタに割り当てられているリソースと同じ IP アドレスを持つ検出されたリソースを除外します。 このオプションを選択すると、追加のフィールドが表示され、XNUMX つ以上のコレクターを指定できるようになります。
- 有効にします このNetScanをスケジュールに従って実行する チェックボックスをオンにして、スケジュールに従って拡張スクリプト Netscan を実行します。
- 頻度 - 毎時、毎日、毎週、または毎月。
- 開始時間 - 表示されたフィールドに開始時間を入力します。
- タイム ゾーン - からタイム ゾーンを選択します。 イベントのタイムゾーン ポップアップウィンドウ。
- 次のいずれかを実行して、スキャンを保存します。
- 選択 保存して実行 変更を保存し、Netscan を実行します。
- 選択 Save Netscan を実行せずに保存します。
ご注意: これらのプロパティは、次を使用してスクリプトで使用するためにアクセスできます。 netscanProps.get("property.key")
. これらのプロパティのいずれかをデバイスに追加する場合は、デバイスの JSON 構造の hostProps フィールドの下にそれらを含めます。 詳細については、次を参照してください。 スクリプトの書式設定.
拡張 NetScan スクリプトを使用してプロパティを更新する
- MFAデバイスに移動する 設定 > ネットスキャン 必要なリソースを選択します.
- ソフトウェア設定ページで、下図のように ネットスキャンの管理 ページに移動して、 デバイスの資格情報 セクションに機密データを追加します。
- 選択 このスキャンにカスタム資格情報を使用する.
- 必要なプロパティとプロパティ値の情報をそれぞれのフィールドに入力します。
- 必要に応じて Groovy スクリプトを変更します。注意: Groovy スクリプトに機密情報が含まれていないことを確認してください。
- 選択 Save.
ご注意: スキャンがスケジュールどおりに実行される場合、それ以上のアクションは必要ありません。 スケジュールに従ってスキャンが完了すると、リソースは変更されたプロパティで更新されます。 ただし、スキャンがスケジュールどおりに実行されない場合は、EnhancedScriptNetScan ポリシーを手動で実行できます。
コレクターの割り当て
拡張スクリプト Netscan から作成されたデバイスは、任意のコレクタに割り当てることができます。 コレクター割り当ての優先順位は次のとおりです。各ステップで存在と有効性の両方をチェックし、見つかった最初の一致を取得します。
優先順位 | チェック |
名 | この collectorId JSON 出力でデバイスに指定された値。 |
秒 | NetScan によって報告されたホスト グループの優先コレクター。 複数のグループ割り当ての場合は、グループがリストされている順序に従います。 |
三番 | デフォルトの NetScan グループの優先コレクター。 |
第4 | NetScan を実行するコレクター。 |
スクリプトの書式設定
強化されたスクリプト Netscan では、出力に JSON 形式が必要です。 デバイスは、次のキーのみを使用してオブジェクトのリストとしてフォーマットする必要があります。
キー名 | Groovy データ型 | 必須 / オプション |
hostname | String | 必須 |
displayname | String | 必須 |
hostProps | Map<String, String> | オプション |
groupName | List<String> | オプション |
collectorId | Integer | オプション |
スクリプトのフォーマット例
次の例は、スクリプト出力の書式設定に関するガイダンスを示しています。
[
{
"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)