source: Developing/os/Mem-CPU-Information.md path: blob/master/doc/ This document will guide you through adding detection for Memory / Processor for your new device. #### Memory LibreNMS will attempt to detect memory statistics using the standard HOST-RESOURCES-MIB and UCD-SNMP-MIB MIBs. To detect non-standard MIBs, they can be defined via Yaml. ##### YAML In order to successfully detect memory amount and usage, two of the for keys below are required. Some OS only provide a usage percentage, which will work, but a total RAM amount will not be displayed. - total - used - free - percent_used `includes/definitions/discovery/mempools/arubaos.yaml` ```yaml mempools: data: - total: WLSX-SWITCH-MIB::sysXMemorySize used: WLSX-SWITCH-MIB::sysXMemoryUsed precision: 1024 ``` The code can also interpret table based OIDs and supports many of the same features as Health Sensors including {{ }} parsing, skip_values, and precache. Valid data entry keys: - `oid` oid to walk to collect processor data - `total` oid or integer total memory size in bytes (or precision) - `used` oid memory used in bytes (or precision) - `free` oid memory free in bytes (or precision) - `percent_used` oid of percentage of used memory - `descr` A visible description of the memory measurement defaults to "Memory" - `warn_percent` Usage percentage to used for alert purposes - `precision` precision for all byte values, typically a power of 2 (1024 for example) - `class`used to generate rrd filename, defaults to system. If system, buffers, and cached exist they will be combined to calculate available memory. - `type` used to generate rrd filename, defaults to the os name - `index` used to generate rrd filename, defaults to the oid index - `skip_values` skip values see [Health Sensors](Health-Information.md) for specification - `snmp_flags` additional net-snmp flags ##### Custom Processor Discovery and Polling If you need to implement custom discovery or polling you can implement the MempoolsDiscovery interface and the MempoolsPolling interface in the OS class. MempoolsPolling is optional, standard polling will be used based on OIDs stored in the database. OS Class files reside under `LibreNMS\OS` ```php | Name of this sensor. This is used with the index to generate a unique id for this sensor. index | {{ $index }} | The index of this sensor, defaults to the index of the oid. skip_values | optional | Do not detect this sensor if the value matches Accessing values within yaml: | | | | --- | --- | | {{ $index }} | The index after the given oid | | {{ $count }} | The count of entries (starting with 1) | | {{ $`oid` }} | Any oid in the table or pre-fetched | ##### Custom Processor Discovery and Polling If you need to implement custom discovery or polling you can implement the ProcessorDiscovery interface and the ProcessorPolling interface in the OS class. OS Class files reside under `LibreNMS\OS` ```php