Предобработка элемента данных для заббикса

Всем привет!

Имеется элемент данных который получает из 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 шт):

Автор решения: ksa

Пробовал добавить код такой: 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)

→ Ссылка