Hardware Health Check

Power Supply Status per Device

let devices = merge(`analytics:/tags/labels/devices/pod_name/value/<_POD_NAME>/elements`)
let devicesSwitchLabel = merge(`analytics:/tags/labels/devices/switch_role/value/<_SWITCH_ROLE>/elements`)


let powerSupply = `*:/Sysdb/environment/archer/power/status/powerSupply/*`
let filteredPsuStats = powerSupply | where(dictHasKey(powerSupply, _key) == true) | recmap(2, (merge(_value)["state"]["Name"]))

if str(_POD_NAME) == "" && str(_SWITCH_ROLE) == "" {
    let result = filteredPsuStats
} else {
    if str(_SWITCH_ROLE) == "" {
        let result = filteredPsuStats | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")))
    } else {
        if str(_POD_NAME) == "" {
            let result = filteredPsuStats | where(dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
        } else {
            let result = filteredPsuStats | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")) && dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
        }
    }
}

for deviceKey, deviceValue  in result{
    for powerSupplyKey, powerSupplyValue in deviceValue{
        if powerSupplyValue=="ok"{
            result[deviceKey][powerSupplyKey]="✔️"
        } else{
            result[deviceKey][powerSupplyKey]="❌"
        }
    }
}
result

Fan Status per Device

let devices = merge(`analytics:/tags/labels/devices/pod_name/value/<_POD_NAME>/elements`)
let devicesSwitchLabel = merge(`analytics:/tags/labels/devices/switch_role/value/<_SWITCH_ROLE>/elements`)

let fans = `*:/Sysdb/environment/archer/cooling/status/*`
let fansHwStatus = fans | where(dictHasKey(fans, _key) == true) | recmap(2, (merge(_value)["hwStatus"]["Name"]))

if str(_POD_NAME) == "" && str(_SWITCH_ROLE) == "" {
    let result = fansHwStatus
} else {
    if str(_SWITCH_ROLE) == "" {
        let result = fansHwStatus | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")))
    } else {
        if str(_POD_NAME) == "" {
            let result = fansHwStatus | where(dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
        } else {
            let result = fansHwStatus | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")) && dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
        }
    }
}

for deviceKey, deviceValue  in result{
    for fansKey, fansValue in deviceValue{
        if fansValue=="ok"{
            result[deviceKey][fansKey]="✔️"
        } else{
            result[deviceKey][fansKey]="❌"
        }
    }
}
result

Temperature Sensors per Device

let devices = merge(`analytics:/tags/labels/devices/pod_name/value/<_POD_NAME>/elements`)
let devicesSwitchLabel = merge(`analytics:/tags/labels/devices/switch_role/value/<_SWITCH_ROLE>/elements`)

let temperature = `*:/Sysdb/environment/archer/temperature/status/cell/1/*`
let filteredTemperatureStats = temperature | where(dictHasKey(temperature, _key) == true) | recmap(2, (merge(_value)["alertRaised"]))

if str(_POD_NAME) == "" && str(_SWITCH_ROLE) == "" {
    let result = filteredTemperatureStats
} else {
    if str(_SWITCH_ROLE) == "" {
        let result = filteredTemperatureStats | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")))
    } else {
        if str(_POD_NAME) == "" {
            let result = filteredTemperatureStats | where(dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
        } else {
            let result = filteredTemperatureStats | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")) && dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
        }
    }
}

for deviceKey, deviceValue  in result{
    for sensorKey, sensorValue in deviceValue{
        if sensorValue==false{
            result[deviceKey][sensorKey]="✔️"
        } else{
            result[deviceKey][sensorKey]="❌"
        }
    }
}
result
Hardware Health Check

Download the Dashboard JSON here