LogicMonitorは、Cisco UCS Xシリーズ シャーシ、サーバ、ファブリック インターコネクト向けのすぐに使用可能な監視機能を提供します。このパッケージは、Cisco Intersight Telemetry APIを使用してメトリックとインベントリデータを取得します。SNMPとSyslogは、ファブリック インターコネクトの監視に新たなレイヤーを提供します。UCS Xシリーズ サーバは、ハイパーバイザ固有のモジュールを使用して監視することもできます。

Cisco UCS Xシリーズ モジュラ システム モニタリングの要件

Cisco UCS X シリーズの監視を有効にするには、次のものが必要です。

  • コレクターバージョンはサポートする必要があります LogicMonitor_Collector_Snippets
  • Cisco Intersight API キー(ID と秘密キーまたは秘密の場所)
    詳細については、を参照してください。 Intersight API キーの作成 シスコから。 

Cisco UCS Xシリーズリソースを監視に追加する

Cisco UCS Xシリーズのリソースは、NetScanを実行するか手動で追加することができます。詳細については、 NetScan の概要。

推奨事項: NetScan を使用してリソースを追加する方法は、各 Cisco 組織サイトのデバイス グループの下にデバイスを作成するため、推奨される方法です。

Advanced NetScan を使用して Cisco UCS X シリーズ リソースを追加する

詳細については、を参照してください。 強化されたスクリプト NetScan.

  1. LogicMonitorポータルで、 モジュール > 交換、Cisco UCS X シリーズ LogicModules をインストールします。
  2. MFAデバイスに移動する  その他情報 > 追加 > 複数のデバイス > 高度なネットスキャン.
  3. NetScan の名前を入力します (例: 「Cisco UCS X-Series」)。
  4. NetScan を実行するコレクタを選択します。
  5. 選択する 強化されたスクリプト NetScan   方法 ドロップダウンメニュー。
  6.  デバイスの資格情報 フィールド、選択 このスキャンにカスタム資格情報を使用する.
  7. 次の必須およびオプションのプロパティを追加します。
プロパティ必須
cisco.intersight.account.idIntersight アカウント IDあり
cisco.intersight.key.idAPI キー IDあり
cisco.intersight.secret.key秘密鍵はい*
cisco.intersight.secret.location秘密鍵ファイルへのパスはい*
lmaccess.id or logicmonitor.access.idLogicMonitorAPIアクセスIDはい**
lmaccess.key or logicmonitor.access.keyLogicMonitorAPIアクセスキーはい**
skip.device.dedupeデバイスの重複排除チェックをスキップしますいいえ
hostname.source競合を避けるためにホスト名のソースを決定するいいえ
cisco.ucsx.org.name組織名(デフォルト: UCSXOrganization)いいえ
cisco.ucsx.org.folderLogicMonitor のリソース グループ名いいえ
cisco.intersight.moidデバイスIDいいえ
cisco.intersight.modelデバイスモデルいいえ
cisco.intersight.serialSerial Numberいいえ

* 必須 cisco.intersight.secret.location 使用されている。
** 必須 skip.device.dedupe 設定されています。

  1.  選択する Groovyスクリプトを埋め込む 次のスクリプトを埋め込みます。

警告: スクリプトを編集しないでください。編集された拡張スクリプトのNetScanはサポートされません。LogicMonitor提供のスクリプトを編集した場合、問題が発生した場合、LogicMonitorサポートは(LogicMonitorの裁量により)サポート対象のスクリプトで編集内容を上書きするよう要求する場合があります。

/*******************************************************************************
*  © 2007-2025 - LogicMonitor, Inc. All rights reserved.
 ******************************************************************************/

import com.santaba.agent.groovy.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
// To enable logging, set to true
Boolean log = false

// Set props object based on whether or not we are running inside a netscan or debug console
def props
try {
    hostProps.get("system.hostname")
    props = hostProps
    debug = true  // set debug to true so that we can ensure we do not print sensitive properties
}
catch (MissingPropertyException) {
    props = netscanProps
}

def accountId = props.get("cisco.intersight.account.id")
def keyId = props.get("cisco.intersight.key.id")
def secretKey = props.get("cisco.intersight.secret.key")
def secretKeyLocation = props.get("cisco.intersight.secret.location")

if (!accountId) {
    throw new Exception("Must provide cisco.intersight.account.id to run this script.  Verify necessary credentials have been provided in Netscan properties.")
}
if (!keyId) {
    throw new Exception("Must provide cisco.intersight.key.id to run this script.  Verify necessary credentials have been provided in Netscan properties.")
}
if (!secretKey && !secretKeyLocation) {
    throw new Exception("Must provide cisco.intersight.secret.key or cisco.intersight.secret.location to run this script.  Verify necessary credentials have been provided in Netscan properties.")
}

def logCacheContext = "${accountId}:cisco-ucsx"
Boolean skipDeviceDedupe = props.get("skip.device.dedupe", "false").toBoolean()
String hostnameSource    = props.get("hostname.source", "")?.toLowerCase()?.trim()

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 netscan. Currently running version ${formattedVer}.")
}

def modLoader   = GSH.getInstance(GroovySystem.version).getScript("Snippets", Snippets.getLoader()).withBinding(getBinding())
def emit        = modLoader.load("lm.emit", "1.1")
def lmDebugSnip = modLoader.load("lm.debug", "1")
def lmDebug     = lmDebugSnip.debugSnippetFactory(out, debug, log, logCacheContext)
def httpSnip    = modLoader.load("proto.http", "0")
def http        = httpSnip.httpSnippetFactory(props)

// Only initialize lmApi snippet class if customer has not opted out
def lmApi
if (!skipDeviceDedupe) {
    def lmApiSnippet = modLoader.load("lm.api", "0")
    lmApi            = lmApiSnippet.lmApiSnippetFactory(props, http, lmDebug)
}
def ciscoUCSXSnip = modLoader.load("cisco.ucsx", "0")
def ciscoUCSX     = ciscoUCSXSnip.ciscoUCSXSnippetFactory(hostProps, lmDebug, http)

String orgDisplayname        = props.get("cisco.ucsx.org.name") ?: "UCSXOrganization"
String rootFolder            = props.get("cisco.ucsx.org.folder") ? props.get("cisco.ucsx.org.folder") + "/" : ""
String serviceUrl            = props.get("cisco.intersight.url")
def addDeviceApiKey= props.get("cisco.ucsx.key.addToAllDevices") == null ? true : props.get("cisco.ucsx.key.addToAllDevices").toBoolean()

// Get information about devices that already exist in LM portal
List fields = ["name", "currentCollectorId", "displayName"]
Map args = ["size": 1000, "fields": fields.join(",")]
def lmDevices
// But first determine if the portal size is within a range that allows us to get all devices at once
def pathFlag, portalInfo, timeLimitSec, timeLimitMs
if (!skipDeviceDedupe) {
    portalInfo = lmApi.apiCallInfo("Devices", args)
    timeLimitSec = props.get("lmapi.timelimit.sec", "60").toInteger()
    timeLimitMs = (timeLimitSec) ? Math.min(Math.max(timeLimitSec, 30), 120) * 1000 : 60000 // Allow range 30-120 sec if configured; default to 60 sec

    if (portalInfo.timeEstimateMs > timeLimitMs) {
        lmDebug.LMDebugPrint("Estimate indicates LM API calls would take longer than time limit configured.  Proceeding with individual queries by display name for each device to add.")
        lmDebug.LMDebugPrint("\t${portalInfo}\n\tNOTE:  Time limit is set to ${timeLimitSec} seconds.  Adjust this limit by setting the property lmapi.timelimit.sec.  Max 120 seconds, min 30 seconds.")
        pathFlag = "ind"
    }
    else {
        lmDebug.LMDebugPrint("Response time indicates LM API calls will complete in a reasonable time range.  Proceeding to collect info on all devices to cross reference and prevent duplicate device creation.\n\t${portalInfo}")
        pathFlag = "all"
        lmDevices = lmApi.getPortalDevices(args)
    }
}

List<Map> resources = []

def now = new Date()
def dateFormat = "yyyy-MM-dd'T'HH:mm:ss.s z"
TimeZone tz = TimeZone.getDefault()
Map duplicateResources = [
    "date" : now.format(dateFormat, tz),
    "message" : "Duplicate device names and display names, keyed by display name that would be assigned by the netscan, found within LogicMonitor portal.  Refer to documentation for how to resolve name collisions using 'hostname.source' netscan property.",
    "total" : 0,
    "resources" : []
]

def chasses = ciscoUCSX.intersightAPISingleGet("equipment/Chasses").Results
if (!chasses) {
    throw new Exception("Error occurred during GET request to equipment/Chasses")
}

def serverInfo = ciscoUCSX.intersightAPISingleGet("compute/PhysicalSummaries").Results
if (!serverInfo) {
    throw new Exception("Error occurred during GET request to compute/PhysicalSummaries")
}

def fabricInterconnects = ciscoUCSX.intersightAPISingleGet("network/Elements").Results.findAll { it.SwitchType == "FabricInterconnect" }
if (!fabricInterconnects) {
    throw new Exception("Error occurred during GET request to network/Elements filtered for SwitchType=FabricInterconnect")
}

def chassisMoidToName = [:]
chasses.each { chassis ->
    def model = chassis.Model
    if (!model.contains("UCSX")) return

    def name = chassis.Name
    def ip = name
    def moid = chassis.Moid
    def serial = chassis.Serial

    chassisMoidToName.put(moid, name)

    // Skip devices that do not have an IP and name; we must have at least one to create a device
    if (!ip && !name) return

    String displayName = name

    // Check for existing device in LM portal with this displayName; set to false initially and update to true when dupe found
    def deviceMatch = false
    // If customer has opted out of device deduplication checks, we skip the lookups where we determine if a match exists and proceed as false
    if (!skipDeviceDedupe) {
        if (pathFlag == "ind") {
            deviceMatch = lmApi.findPortalDevice(displayName, args)
            if (!deviceMatch) deviceMatch = lmApi.findPortalDeviceByName(ip, args)
        }
        else if (pathFlag == "all") {
            deviceMatch = lmApi.checkExistingDevices(displayName, lmDevices)
            if (!deviceMatch) deviceMatch = lmApi.checkExistingDevicesByName(ip, lmDevices)
        }
    }
    if (deviceMatch) {
        // Log duplicates that would cause additional devices to be created; unless these entries are resolved, they will not be added to resources for netscan output
        def collisionInfo = [
            (displayName) : [
                "Netscan" : [
                    "hostname"    : ip,
                    "displayName" : displayName
                ],
                "LM" : [
                    "hostname"    : deviceMatch.name,
                    "collectorId" : deviceMatch.currentCollectorId,
                    "displayName" : deviceMatch.displayName
                ],
                "Resolved" : false
            ]
        ]

        // If user specified to use LM hostname on display name match, update hostname variable accordingly
        // and flag it as no longer a match since we have resolved the collision with user's input
        if (hostnameSource == "lm" || hostnameSource == "logicmonitor") {
            ip = deviceMatch.name
            deviceMatch = false
            collisionInfo[displayName]["Resolved"] = true
        }
        // If user specified to use netscan data for hostname, update the display name to make it unique
        // and flag it as no longer a match since we have resolved the collision with user's input
        else if (hostnameSource == "netscan") {
            // Update the resolved status before we change the displayName
            collisionInfo[displayName]["Resolved"] = true
            displayName = "${displayName} - ${ip}"
            deviceMatch = false
        }

        duplicateResources["resources"].add(collisionInfo)
    }

    // Verify we have minimum requirements for device creation
    if (ip) {
        def deviceProps = [
            "cisco.intersight.account.id"   : emit.sanitizePropertyValue(accountId),
            "cisco.intersight.moid"         : emit.sanitizePropertyValue(moid),
            "cisco.intersight.model"        : emit.sanitizePropertyValue(model),
            "cisco.intersight.serial"       : emit.sanitizePropertyValue(serial),
            "system.categories"             : "CiscoUSCXChassis,NoPing"
        ]

        if (addDeviceApiKey) {
            deviceProps.put("cisco.intersight.key.id", keyId)
            if (secretKey) deviceProps.put("cisco.intersight.secret.key", secretKey)
            if (secretKeyLocation) deviceProps.put("cisco.intersight.secret.location", secretKeyLocation)
        }

        if (serviceUrl) deviceProps.put("cisco.intersight.url", serviceUrl)

        // Set group and collector ID based on user CSV inputs if provided
        def collectorId = null
        Map resource = [
            "hostname"    : ip,
            "displayname" : name,
            "hostProps"   : deviceProps,
            "groupName"   : ["${rootFolder}${orgDisplayname}/Chasses/${name}"]
        ]

        // Only add the collectorId field to resource map if we found a collector ID above
        if (collectorId) {
            resource["collectorId"] = collectorId
            if (duplicateResources["resources"][displayName]["Netscan"][0]) duplicateResources["resources"][displayName]["Netscan"][0]["collectorId"] = collectorId
        }

        if (!deviceMatch) {
            resources.add(resource)
        }
    }
}

serverInfo.each { server ->
    def model = server.Model
    if (!model.contains("UCSX")) return

    def name = server.Name
    def ip = server.MgmtIpAddress
    def moid = server.Moid
    def serial = server.Serial
    def chassisMoid = server.EquipmentChassis.Moid
    def chassisName = chassisMoidToName.get(chassisMoid)

    // Skip devices that do not have an IP and name; we must have at least one to create a device
    if (!ip && !name) return

    String displayName = name

    // Check for existing device in LM portal with this displayName; set to false initially and update to true when dupe found
    def deviceMatch = false
    // If customer has opted out of device deduplication checks, we skip the lookups where we determine if a match exists and proceed as false
    if (!skipDeviceDedupe) {
        if (pathFlag == "ind") {
            deviceMatch = lmApi.findPortalDevice(displayName, args)
            if (!deviceMatch) deviceMatch = lmApi.findPortalDeviceByName(ip, args)
        }
        else if (pathFlag == "all") {
            deviceMatch = lmApi.checkExistingDevices(displayName, lmDevices)
            if (!deviceMatch) deviceMatch = lmApi.checkExistingDevicesByName(ip, lmDevices)
        }
    }

    if (deviceMatch) {
        // Log duplicates that would cause additional devices to be created; unless these entries are resolved, they will not be added to resources for netscan output
        def collisionInfo = [
            (displayName) : [
                "Netscan" : [
                    "hostname"    : ip,
                    "displayName" : displayName
                ],
                "LM" : [
                    "hostname"    : deviceMatch.name,
                    "collectorId" : deviceMatch.currentCollectorId,
                    "displayName" : deviceMatch.displayName
                ],
                "Resolved" : false
            ]
        ]

        // If user specified to use LM hostname on display name match, update hostname variable accordingly
        // and flag it as no longer a match since we have resolved the collision with user's input
        if (hostnameSource == "lm" || hostnameSource == "logicmonitor") {
            ip = deviceMatch.name
            deviceMatch = false
            collisionInfo[displayName]["Resolved"] = true
        }
        // If user specified to use netscan data for hostname, update the display name to make it unique
        // and flag it as no longer a match since we have resolved the collision with user's input
        else if (hostnameSource == "netscan") {
            // Update the resolved status before we change the displayName
            collisionInfo[displayName]["Resolved"] = true
            displayName = "${displayName} - ${ip}"
            deviceMatch = false
        }

        duplicateResources["resources"].add(collisionInfo)
    }

    // Verify we have minimum requirements for device creation
    if (ip) {
        if (ip == "127.0.0.1") ip = name
        if (!name) name = ip
        def deviceProps = [
            "cisco.intersight.account.id"   : emit.sanitizePropertyValue(accountId),
            "cisco.intersight.moid"         : emit.sanitizePropertyValue(moid),
            "cisco.intersight.chassis.moid" : emit.sanitizePropertyValue(chassisMoid),
            "cisco.intersight.model"        : emit.sanitizePropertyValue(model),
            "netscan.serial"                : emit.sanitizePropertyValue(serial),
            "system.categories"             : "CiscoUSCXServer"
        ]

        if (addDeviceApiKey) {
            deviceProps.put("cisco.intersight.key.id", keyId)
            if (secretKey) deviceProps.put("cisco.intersight.secret.key", secretKey)
            if (secretKeyLocation) deviceProps.put("cisco.intersight.secret.location", secretKeyLocation)
        }

        if (serviceUrl) deviceProps.put("cisco.intersight.url", serviceUrl)

        // Set group and collector ID based on user CSV inputs if provided
        def collectorId = null
        Map resource = [
                "hostname"    : ip,
                "displayname" : name,
                "hostProps"   : deviceProps,
                "groupName"   : ["${rootFolder}${orgDisplayname}/Chasses/${chassisName}/Servers"]
        ]

        // Only add the collectorId field to resource map if we found a collector ID above
        if (collectorId) {
            resource["collectorId"] = collectorId
            if (duplicateResources["resources"][displayName]["Netscan"][0]) duplicateResources["resources"][displayName]["Netscan"][0]["collectorId"] = collectorId
        }

        if (!deviceMatch) {
            resources.add(resource)
        }
    }
}

fabricInterconnects.each { fabricInterconnect ->
    def model = fabricInterconnect.Model
    if (!model.contains("UCSX")) return

    def name = fabricInterconnect.SwitchProfileName.replace("-A", " FI-A").replace("-B", " FI-B")
    def ip = fabricInterconnect.OutOfBandIpAddress
    def moid = fabricInterconnect.Moid
    def serial = fabricInterconnect.Serial

    // Skip devices that do not have an IP and name; we must have at least one to create a device
    if (!ip && !name) return

    String displayName = name

    // Check for existing device in LM portal with this displayName; set to false initially and update to true when dupe found
    def deviceMatch = false
    // If customer has opted out of device deduplication checks, we skip the lookups where we determine if a match exists and proceed as false
    if (!skipDeviceDedupe) {
        if (pathFlag == "ind") {
            deviceMatch = lmApi.findPortalDevice(displayName, args)
            if (!deviceMatch) deviceMatch = lmApi.findPortalDeviceByName(ip, args)
        }
        else if (pathFlag == "all") {
            deviceMatch = lmApi.checkExistingDevices(displayName, lmDevices)
            if (!deviceMatch) deviceMatch = lmApi.checkExistingDevicesByName(ip, lmDevices)
        }
    }
    if (deviceMatch) {
        // Log duplicates that would cause additional devices to be created; unless these entries are resolved, they will not be added to resources for netscan output
        def collisionInfo = [
            (displayName) : [
                "Netscan" : [
                    "hostname"    : ip,
                    "displayName" : displayName
                ],
                "LM" : [
                    "hostname"    : deviceMatch.name,
                    "collectorId" : deviceMatch.currentCollectorId,
                    "displayName" : deviceMatch.displayName
                ],
                "Resolved" : false
            ]
        ]

        // If user specified to use LM hostname on display name match, update hostname variable accordingly
        // and flag it as no longer a match since we have resolved the collision with user's input
        if (hostnameSource == "lm" || hostnameSource == "logicmonitor") {
            ip = deviceMatch.name
            deviceMatch = false
            collisionInfo[displayName]["Resolved"] = true
        }
        // If user specified to use netscan data for hostname, update the display name to make it unique
        // and flag it as no longer a match since we have resolved the collision with user's input
        else if (hostnameSource == "netscan") {
            // Update the resolved status before we change the displayName
            collisionInfo[displayName]["Resolved"] = true
            displayName = "${displayName} - ${ip}"
            deviceMatch = false
        }

        duplicateResources["resources"].add(collisionInfo)
    }

    // Verify we have minimum requirements for device creation
    if (ip) {
        if (ip == "127.0.0.1") ip = name
        if (!name) name = ip
        def deviceProps = [
            "cisco.intersight.account.id" : emit.sanitizePropertyValue(accountId),
            "cisco.intersight.moid"       : emit.sanitizePropertyValue(moid),
            "cisco.intersight.model"      : emit.sanitizePropertyValue(model),
            "netscan.serial"              : emit.sanitizePropertyValue(serial),
            "system.categories"           : "CiscoUSCXFabricInterconnect"
        ]

        if (addDeviceApiKey) {
            deviceProps.put("cisco.intersight.key.id", keyId)
            if (secretKey) deviceProps.put("cisco.intersight.secret.key", secretKey)
            if (secretKeyLocation) deviceProps.put("cisco.intersight.secret.location", secretKeyLocation)
        }

        if (serviceUrl) deviceProps.put("cisco.intersight.url", serviceUrl)

        // Set group and collector ID based on user CSV inputs if provided
        def collectorId = null
        Map resource = [
                "hostname"    : ip,
                "displayname" : name,
                "hostProps"   : deviceProps,
                "groupName"   : ["${rootFolder}${orgDisplayname}/Fabric Interconnects"]
        ]

        // Only add the collectorId field to resource map if we found a collector ID above
        if (collectorId) {
            resource["collectorId"] = collectorId
            if (duplicateResources["resources"][displayName]["Netscan"][0]) duplicateResources["resources"][displayName]["Netscan"][0]["collectorId"] = collectorId
        }

        if (!deviceMatch) {
            resources.add(resource)
        }
    }
}

lmDebug.LMDebugPrint("Duplicate Resources:")
duplicateResources.resources.each {
    lmDebug.LMDebugPrint("\t${it}")
}

emit.resource(resources, debug)

return 0
  1.    スケジュール セクション、有効にする このNetScanをスケジュールに従って実行する スイッチ。スキャンは1時間ごとに実行できます。
  2. 選択する Save or 保存して実行.

リソースを手動で追加する 

  1. Cisco UCS Xシリーズ組織デバイスグループを作成します。詳細については、 リソース グループの追加.
  2. デバイスをグループに追加します。
  3. 各リソースに次のプロパティを設定します。
プロパティ
cisco.intersight.account.idIntersight UI からのアカウント ID
cisco.intersight.key.idIntersight API キー ID
cisco.intersight.secret.keyAPI 秘密キー (ファイル パスが使用されていない場合)
cisco.intersight.secret.locationAPI 秘密キーへのファイル パス (使用されている場合)

NetScan のトラブルシューティング

このスイートのNetScanは、ポータル内の既存のデバイスを更新し、Cisco UCS XシリーズAPIから取得した関連情報を追加できます。また、表示名が同じでsystem.hostnameの値が異なるという競合が発生した場合、NetScanがポータル内に重複したデバイスを作成することもあります。デバイスが適切に更新され、重複したデバイスが作成されないようにするため、このNetScanはLogicMonitorのAPIを使用して既存のデバイスを照会し、検出された名前の競合を報告します。このファイルはコレクターログからアクセスできます。

コレクタ ログの取得の詳細については、「」を参照してください。 コレクターのログ – LogicMonitor へのログの送信.

このレポート内のデバイスは、NetScan がプロパティ hostname.source で構成されていない限り、NetScan 出力の一部として LogicMonitor に報告されません。このプロパティを使用すると、ユーザーは、NetScan 出力で使用されるホスト名のソースを選択することによって、検出された名前の競合を解決できます。考えられる 2 つのホスト名ソースは、次の値によって決まります。

  • 「lm」または「logicmonitor」 名前が競合しているデバイスは、LogicMonitor の既存の system.hostname を使用して、ポータル内のデバイスが NetScan を使用して更新されるようにします。 この設定では新しいデバイスは作成されません。
  • 「netscan」 名前が競合しているデバイスは、NetScan スクリプトで決定された system.hostname を維持し、追加するように報告された表示名を更新します。 <system.hostname> 一意であり、ポータルに追加できることを確認するためです。 このオプションは、厳密な命名規則がなく、同じ表示名を持つ複数のデバイスがある場合に役立ちます。

注意: NetScan は、system.hostname の値を更新できません。 NetScans は、表示名、カスタム プロパティ、およびグループ割り当てを更新できます。

LogicModulesをインポートする

LogicMonitor パブリックリポジトリからすべての Cisco UCS X シリーズ LogicModule をインポートします。パッケージ内の LogicModule のリストを参照してください。これらの LogicModule が既に存在する場合は、最新バージョンであることを確認してください。

以前のセットアップ要件がすべて満たされていると仮定すると、LogicModuleがインポートされると、データ収集が自動的に開始されます。 

パッケージ内のLogicModules

LogicMonitorのCisco UCS Xシリーズ向けパッケージは、以下のLogicModuleで構成されています。完全なカバレッジを得るには、これらのLogicModuleがすべてLogicMonitorプラットフォームにインポートされていることを確認してください。

表示名タイプ 詳細説明
addCategory_Cisco_UCSX_DeviceプロパティソースCisco UCS-X システムのカテゴリとプロパティを追加します
UCS X Chassis Fansデータソースシャーシファンのパフォーマンスを監視します
UCS X Chassis Healthデータソースシャーシの状態と電力使用量を監視します
UCS X Chassis Power Suppliesデータソース電源ユニットのパフォーマンスを監視します
UCS X Fabric Interconnect CPUデータソースFI CPUメトリックを監視します
UCS X Fabric Interconnect FansデータソースFIファンモジュールを監視する
UCS X Fabric Interconnect HealthデータソースFI の健全性、エネルギー、電力使用量を監視します
UCS X Fabric Interconnect MemoryデータソースFIメモリ使用量を監視する
UCS X Fabric Interconnect Power SuppliesデータソースFI電源メトリックを監視します
UCS X Fabric Interconnect TemperatureデータソースFI温度を監視する
UCS X Server Healthデータソースサーバーの健全性、エネルギー、電力使用量を監視します
UCS X Server Temperatureデータソースサーバーの温度を監視する
addERI_Cisco_UCSX_DeviceプロパティソースUCS-X固有のERIプロパティを追加します
Cisco_UCSX_TopologyトポロジーソースUCS Xシリーズのトポロジをマップします

このパッケージの DataSource によって追跡されるさまざまなメトリクスに静的なデータポイントのしきい値を設定する場合、LogicMonitor はテクノロジー所有者のベスト プラクティス KPI 推奨事項に従います。

推奨事項: LogicMonitorでは、必要に応じて、環境固有のニーズに合わせてこれらの定義済みしきい値を調整することをお勧めします。データポイントしきい値の調整の詳細については、以下を参照してください。 データポイントの静的しきい値.

14日間フルアクセス LogicMonitor プラットフォーム