Cisco UCS Xシリーズ モジュラーシステム監視
最終更新日 - 25年2025月XNUMX日
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.
- LogicMonitorポータルで、 モジュール > 交換、Cisco UCS X シリーズ LogicModules をインストールします。
- MFAデバイスに移動する その他情報 > 追加 > 複数のデバイス > 高度なネットスキャン.
- NetScan の名前を入力します (例: 「Cisco UCS X-Series」)。
- NetScan を実行するコレクタを選択します。
- 選択する 強化されたスクリプト NetScan 方法 ドロップダウンメニュー。
- デバイスの資格情報 フィールド、選択 このスキャンにカスタム資格情報を使用する.
- 次の必須およびオプションのプロパティを追加します。
| プロパティ | 値 | 必須 |
cisco.intersight.account.id | Intersight アカウント ID | あり |
cisco.intersight.key.id | API キー ID | あり |
cisco.intersight.secret.key | 秘密鍵 | はい* |
cisco.intersight.secret.location | 秘密鍵ファイルへのパス | はい* |
lmaccess.id or logicmonitor.access.id | LogicMonitorAPIアクセスID | はい** |
lmaccess.key or logicmonitor.access.key | LogicMonitorAPIアクセスキー | はい** |
skip.device.dedupe | デバイスの重複排除チェックをスキップします | いいえ |
hostname.source | 競合を避けるためにホスト名のソースを決定する | いいえ |
cisco.ucsx.org.name | 組織名(デフォルト: UCSXOrganization) | いいえ |
cisco.ucsx.org.folder | LogicMonitor のリソース グループ名 | いいえ |
cisco.intersight.moid | デバイスID | いいえ |
cisco.intersight.model | デバイスモデル | いいえ |
cisco.intersight.serial | Serial Number | いいえ |
* 必須 cisco.intersight.secret.location 使用されている。
** 必須 skip.device.dedupe 設定されています。
- 選択する 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- スケジュール セクション、有効にする このNetScanをスケジュールに従って実行する スイッチ。スキャンは1時間ごとに実行できます。
- 選択する Save or 保存して実行.
リソースを手動で追加する
- Cisco UCS Xシリーズ組織デバイスグループを作成します。詳細については、 リソース グループの追加.
- デバイスをグループに追加します。
- 各リソースに次のプロパティを設定します。
| プロパティ | 値 |
cisco.intersight.account.id | Intersight UI からのアカウント ID |
cisco.intersight.key.id | Intersight API キー ID |
cisco.intersight.secret.key | API 秘密キー (ファイル パスが使用されていない場合) |
cisco.intersight.secret.location | API 秘密キーへのファイル パス (使用されている場合) |
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では、必要に応じて、環境固有のニーズに合わせてこれらの定義済みしきい値を調整することをお勧めします。データポイントしきい値の調整の詳細については、以下を参照してください。 データポイントの静的しきい値.