Performance

Introduction

As part of Unified Assurance, Oracle Communications includes a library of devices for out-of-the-box polling support for useful metrics. PCOM is for performance metrics. Oracle Communications does not provide a MIB2PCOM application for converting a MIB to a pre-certified PCOM file. This is a manual process where you ask some technical questions and get the answers before creating a PCOM file. You start by curating a PCOM file directly, and then use the PCOM2Rules application to create the foundation rules.

Here are the questions that you need to ask before creating your PCOM.

The following diagram shows the overall process for creating foundation rules with a pre-certified PCOM file.

Unified Assurance PCOM2Rules Process

Description of illustration pcom-to-foundation-rules.png

PCOM Schema Definition

PCOM files are device validation models. These definitions are a JSON format that defines the SNMP OIDs needed to satisfy basic polling functionality like CPU, Memory, Disk, Temp, Fan, Interfaces, etc. The work involved is essentially taking MIBs and converting them into Oracle Communications' COM definition. So get a MIB, extract out the CPU, Memory, Disk, Temp, Fan, Interfaces values, and create a JSON file with these values using Oracle Communications' COM schema.

Schema notes

Top-level information

Object information

SNMP fields

Filename

Example

This is an example of the HP-MEMPROC MIB. The following values can provide some useful Metrics (CPU, Memory, Disk, Temp, Fan, Interfaces, etc).

Create a file called HP-MEMPROC-PCOM.json and put these values in using Oracle Communications' COM schema:

{
    "@vendor" : "hp",
    "mibs" : [
        "HP-MEMPROC-MIB"
    ],
    "notes" : "Hewlett Packard",
    "enterpriseOids" : [
        "1.3.6.1.4.1.11"
    ],
    "aliases" : [],
    "objects" : [
        {
            "@objectName" : "HP-MEMPROC-MIB::hpmpCPUPctBusy",
            "certification" : "STANDARD",
            "class" : "CPU",
            "description" : "Information relating to CPU Utilization.",
            "domain" : "PERFORMANCE",
            "metaData" : {
                "certified" : false
            },
            "method" : "snmp",
            "notes" : [
            ],
            "snmp" : {
                "discovery" : {
                    "name" : "HP-MEMPROC-MIB::hpmpCPUIndex",
                    "oid" : "1.3.6.1.4.1.11.2.3.7.11.17.7.1.5.1.1.1.1.1"
                },
                "factor" : null,
                "filter" : null,
                "instance" : "CPU$i",
                "maximum" : null,
                "values" : [
                    {
                        "metricType" : "CPU Utilization",
                        "name" : "HP-MEMPROC-MIB::hpmpCPUPctBusy",
                        "oid" : "1.3.6.1.4.1.11.2.3.7.11.17.7.1.5.1.1.1.1.5",
                        "valueType" : "Gauge32",
                        "thresholds" : [
                            "High CPU Minor",
                            "High CPU Major"
                        ]
                    }
                ]
            },
            "subClass" : "UTILIZATION",
            "weight" : 2
        },
        {
            "@objectName" : "HP-MEMPROC-MIB::hpmpCPUEntry",
            "certification" : "STANDARD",
            "class" : "CPU",
            "description" : "An index that uniquely represents a CPU on this device. This index is assigned arbitrarily by the engine and is not saved over reboots.",
            "domain" : "PERFORMANCE",
            "metaData" : {
                "certified" : false
            },
            "method" : "snmp",
            "notes" : [
            ],
            "snmp" : {
                "discovery" : {
                    "name" : "HP-MEMPROC-MIB::hpmpCPUIndex",
                    "oid" : "1.3.6.1.4.1.11.2.3.7.11.17.7.1.5.1.1.1.1.1"
                },
                "factor" : null,
                "filter" : null,
                "instance" : null,
                "maximum" : null,
                "values" : [
                    {
                        "instance" : "1 Minute Average CPU$i",
                        "metricType" : "CPU Load Average",
                        "name" : "HP-MEMPROC-MIB::hpmpCPULoad1min",
                        "oid" : "1.3.6.1.4.1.11.2.3.7.11.17.7.1.5.1.1.1.1.2",
                        "valueType" : "Integer32"
                    },
                    {
                        "instance" : "5 Minute Average CPU$i",
                        "metricType" : "CPU Load Average",
                        "name" : "HP-MEMPROC-MIB::hpmpCPULoad5min",
                        "oid" : "1.3.6.1.4.1.11.2.3.7.11.17.7.1.5.1.1.1.1.3",
                        "valueType" : "Integer32"
                    },
                    {
                        "instance" : "15 Minute Average CPU$i",
                        "metricType" : "CPU Load Average",
                        "name" : "HP-MEMPROC-MIB::hpmpCPULoad15min",
                        "oid" : "1.3.6.1.4.1.11.2.3.7.11.17.7.1.5.1.1.1.1.4",
                        "valueType" : "Integer32"
                    }
                ]
            },
            "subClass" : "LOAD",
            "weight" : 2
        },
        {
            "@objectName" : "HP-MEMPROC-MIB::hpmpMemEntry",
            "certification" : "STANDARD",
            "class" : "MEMORY",
            "description" : "An index that uniquely represents a Memory pool on this device. This index is assigned arbitrarily by the engine and is not saved over reboots.",
            "domain" : "PERFORMANCE",
            "metaData" : {
                "certified" : false
            },
            "method" : "snmp",
            "notes" : [
            ],
            "snmp" : {
                "discovery" : {
                    "name" : "HP-MEMPROC-MIB::hpmpMemIndex",
                    "oid" : "1.3.6.1.4.1.11.2.3.7.11.17.7.1.5.1.2.1.1.1"
                },
                "factor" : 1024,
                "filter" : null,
                "instance" : {
                    "name" : "HP-MEMPROC-MIB::hpmpMemDescr",
                    "oid" : "1.3.6.1.4.1.11.2.3.7.11.17.7.1.5.1.2.1.1.2"
                },
                "maximum" :
                {
                    "name" : "HP-MEMPROC-MIB::hpmpMemTotal",
                    "oid" : "1.3.6.1.4.1.11.2.3.7.11.17.7.1.5.1.2.1.1.4"
                },
                "values" : [
                    {
                        "metricType" : "Memory Used",
                        "name" : "HP-MEMPROC-MIB::hpmpMemInUse",
                        "oid" : "1.3.6.1.4.1.11.2.3.7.11.17.7.1.5.1.2.1.1.3",
                        "valueType" : "Gauge32",
                        "thresholds" : [
                            "High Mem Major"
                        ]
                    },
                    {
                        "metricType" : "Memory Free",
                        "eval" : "$hpmpMemTotal[$i] - $hpmpMemInUse[$i]"
                    }
                ]
            },
            "subClass" : "USAGE",
            "weight" : 2
        }
    ]
}

SNMP Walks of New Devices

Oracle Communications would appreciate SNMP walks from SNMP-capable devices to help build out our device walk library. These can be generated using the standard walk command:

snmpwalk -v <SNMP Version> -c <community> -ObentU <IPAddress> 1.3.6 > vendor.model.snmpwalk

For example: (fake device)

snmpwalk -v 2c -c public -ObentU <IPADDRESS> 1.3.6 > Cisco.2900.snmpwalk

Useful resources