Предобработка элемента данных для заббикса
Всем привет!
Имеется элемент данных который получает из redfish данные о StorageArray в таком виде:
{
"@odata.context":"/redfish/v1/$metadata#Systems/Members/1/SmartStorage/ArrayControllers/Members/$entity",
"@odata.id":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/",
"@odata.type":"#HpSmartStorageArrayController.1.1.0.HpSmartStorageArrayController",
"AdapterType":"SmartArray","BackupPowerSourceStatus":"Present",
"CacheMemorySizeMiB":1024,"CurrentOperatingMode":"RAID",
"Description":"HP Smart Storage Array Controller View",
"EncryptionCryptoOfficerPasswordSet":false,
"EncryptionEnabled":false,
"EncryptionFwLocked":false,
"EncryptionHasLockedVolumesMissingBootPassword":false,
"EncryptionMixedVolumesEnabled":false,
"EncryptionStandaloneModeEnabled":false,
"ExternalPortCount":0,
"FirmwareVersion":{
"Current":{
"VersionString":"8.32"
}
},
"HardwareRevision":"B",
"Id":"1",
"InternalPortCount":2,
"Location":"Slot 1",
"LocationFormat":"PCISlot",
"Model":"Smart Array P420 Controller",
"Name":"HpSmartStorageArrayController",
"SerialNumber":"PDSXK0BRH8E07C",
"Status":{
"Health":"OK",
"State":"Enabled"
},
"Type":"HpSmartStorageArrayController.1.1.0",
"links":{
"LogicalDrives":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/LogicalDrives/"
},
"PhysicalDrives":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/DiskDrives/"
},
"StorageEnclosures":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/StorageEnclosures/"
},
"UnconfiguredDrives":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/UnconfiguredDrives/"
},
"self":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/"
}
}
}
Правило обнаружения не может сформировать LLD макрос так как данный вывод заббикс не воспринимает как массив данных.
Нужно сделать предобработку JavaScript`ом что бы полученный кусок данных преобразовывался в вид:
{
"data":[
{
"@odata.context":"/redfish/v1/$metadata#Systems/Members/1/SmartStorage/ArrayControllers/Members/$entity",
"@odata.id":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/",
"@odata.type":"#HpSmartStorageArrayController.1.1.0.HpSmartStorageArrayController",
"AdapterType":"SmartArray","BackupPowerSourceStatus":"Present",
"CacheMemorySizeMiB":1024,"CurrentOperatingMode":"RAID",
"Description":"HP Smart Storage Array Controller View",
"EncryptionCryptoOfficerPasswordSet":false,
"EncryptionEnabled":false,
"EncryptionFwLocked":false,
"EncryptionHasLockedVolumesMissingBootPassword":false,
"EncryptionMixedVolumesEnabled":false,
"EncryptionStandaloneModeEnabled":false,
"ExternalPortCount":0,
"FirmwareVersion":{
"Current":{
"VersionString":"8.32"
}
},
"HardwareRevision":"B",
"Id":"1",
"InternalPortCount":2,
"Location":"Slot 1",
"LocationFormat":"PCISlot",
"Model":"Smart Array P420 Controller",
"Name":"HpSmartStorageArrayController",
"SerialNumber":"PDSXK0BRH8E07C",
"Status":{
"Health":"OK",
"State":"Enabled"
},
"Type":"HpSmartStorageArrayController.1.1.0",
"links":{
"LogicalDrives":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/LogicalDrives/"
},
"PhysicalDrives":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/DiskDrives/"
},
"StorageEnclosures":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/StorageEnclosures/"
},
"UnconfiguredDrives":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/UnconfiguredDrives/"
},
"self":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/"
}
}
}
]
}
Пробовал добавить код такой:
return JSON.stringify({"data": [value]})
Но в выводе появляются символы экранирования "".
P.S. в JavaScript я полный 0, поэтому буду признателен если напишите код, который будет преобразовывать получаемое значение элемента данных в нужный вывод.
Заранее благодарю!
Ответы (1 шт):
Пробовал добавить код такой:
return JSON.stringify({"data": [value]})
Но в выводе появляются символы экранирования "".
Вроде все нормально... Или у тебя value
это строка?
Если полученные данные - строка. Дальнейшие действия могут быть такие...
let value = `{
"@odata.context":"/redfish/v1/$metadata#Systems/Members/1/SmartStorage/ArrayControllers/Members/$entity",
"@odata.id":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/",
"@odata.type":"#HpSmartStorageArrayController.1.1.0.HpSmartStorageArrayController",
"AdapterType":"SmartArray","BackupPowerSourceStatus":"Present",
"CacheMemorySizeMiB":1024,"CurrentOperatingMode":"RAID",
"Description":"HP Smart Storage Array Controller View",
"EncryptionCryptoOfficerPasswordSet":false,
"EncryptionEnabled":false,
"EncryptionFwLocked":false,
"EncryptionHasLockedVolumesMissingBootPassword":false,
"EncryptionMixedVolumesEnabled":false,
"EncryptionStandaloneModeEnabled":false,
"ExternalPortCount":0,
"FirmwareVersion":{
"Current":{
"VersionString":"8.32"
}
},
"HardwareRevision":"B",
"Id":"1",
"InternalPortCount":2,
"Location":"Slot 1",
"LocationFormat":"PCISlot",
"Model":"Smart Array P420 Controller",
"Name":"HpSmartStorageArrayController",
"SerialNumber":"PDSXK0BRH8E07C",
"Status":{
"Health":"OK",
"State":"Enabled"
},
"Type":"HpSmartStorageArrayController.1.1.0",
"links":{
"LogicalDrives":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/LogicalDrives/"
},
"PhysicalDrives":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/DiskDrives/"
},
"StorageEnclosures":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/StorageEnclosures/"
},
"UnconfiguredDrives":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/UnconfiguredDrives/"
},
"self":{
"href":"/redfish/v1/Systems/1/SmartStorage/ArrayControllers/1/"
}
}
}`
value = '{"data": [' + value + ']}'
console.log(value)