2017-04-25 18:35:42 +01:00
|
|
|
source: Developing/os/Mem-CPU-Information.md
|
2018-10-27 23:04:34 +01:00
|
|
|
path: blob/master/doc/
|
2017-04-25 18:35:42 +01:00
|
|
|
|
2019-06-20 13:53:45 -05:00
|
|
|
This document will guide you through adding detection for Memory /
|
|
|
|
Processor for your new device.
|
2017-04-25 18:35:42 +01:00
|
|
|
|
|
|
|
#### Memory
|
|
|
|
|
2019-06-20 13:53:45 -05:00
|
|
|
Detection for memory is done via two php scripts, one for discovery
|
|
|
|
and the other for polling:
|
2017-04-25 18:35:42 +01:00
|
|
|
|
|
|
|
`includes/discovery/mempools/pulse.inc.php`
|
|
|
|
|
|
|
|
```php
|
|
|
|
<?php
|
2019-12-03 13:08:43 +01:00
|
|
|
echo 'PULSE-MEMORY-POOL: ';
|
|
|
|
$usage = str_replace('"', "", snmp_get($device, 'iveMemoryUtil.0', '-OvQ', 'PULSESECURE-PSG-MIB'));
|
|
|
|
if (is_numeric($usage)) {
|
|
|
|
discover_mempool($valid_mempool, $device, 0, 'pulse-mem', 'Main Memory', '100', null, null);
|
2017-04-25 18:35:42 +01:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
`includes/polling/mempools/pulse.inc.php`
|
|
|
|
|
|
|
|
```php
|
|
|
|
<?php
|
|
|
|
echo 'Pulse Secure MemPool\n';
|
|
|
|
$perc = str_replace('"', "", snmp_get($device, "iveMemoryUtil.0", '-OvQ', 'PULSESECURE-PSG-MIB'));
|
|
|
|
if (is_numeric($perc)) {
|
|
|
|
$memory_available = str_replace('"', "", snmp_get($device, "memTotalReal.0", '-OvQ', 'UCD-SNMP-MIB'));
|
|
|
|
$mempool['total'] = $memory_available;
|
|
|
|
$mempool['used'] = ($memory_available / 100 * $perc);
|
|
|
|
$mempool['free'] = ($memory_available - $mempool['used']);
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Processor
|
|
|
|
|
2019-06-20 13:53:45 -05:00
|
|
|
Detection for processors is done via a yaml file unless custom
|
|
|
|
processing of data is required.
|
2017-04-25 18:35:42 +01:00
|
|
|
|
2018-02-05 07:39:13 -06:00
|
|
|
##### YAML
|
2017-04-25 18:35:42 +01:00
|
|
|
|
2018-02-05 07:39:13 -06:00
|
|
|
`includes/definitions/discovery/pulse.yaml`
|
2017-04-25 18:35:42 +01:00
|
|
|
|
2018-02-05 07:39:13 -06:00
|
|
|
```yaml
|
|
|
|
mib: PULSESECURE-PSG-MIB
|
|
|
|
modules:
|
|
|
|
processors:
|
|
|
|
data:
|
|
|
|
-
|
|
|
|
oid: iveCpuUtil
|
|
|
|
num_oid: '.1.3.6.1.4.1.12532.10.{{ $index }}'
|
|
|
|
type: pulse
|
|
|
|
```
|
2017-04-25 18:35:42 +01:00
|
|
|
|
2018-02-05 07:39:13 -06:00
|
|
|
Available yaml data keys:
|
2017-04-25 18:35:42 +01:00
|
|
|
|
2018-02-05 07:39:13 -06:00
|
|
|
Key | Default | Description
|
|
|
|
----- | --- | -----
|
|
|
|
oid | required | The string based oid to fetch data, could be a table or a single value
|
|
|
|
num_oid | required | the numerical oid to fetch data from when polling, usually should be appended by {{ $index }}
|
|
|
|
value | optional | Oid to retrieve data from, primarily used for tables
|
|
|
|
precision | 1 | The multiplier to multiply the data by. If this is negative, the data will be multiplied then subtracted from 100.
|
|
|
|
descr | Processor | Description of this processor, may be an oid or plain string. Helpful values {{ $index }} and {{$count}}
|
|
|
|
type | <os name> | 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
|
2017-04-25 18:35:42 +01:00
|
|
|
|
2018-02-05 07:39:13 -06:00
|
|
|
Accessing values within yaml:
|
2017-04-25 18:35:42 +01:00
|
|
|
|
2018-02-05 07:39:13 -06:00
|
|
|
| | |
|
|
|
|
| --- | --- |
|
|
|
|
| {{ $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 Discovery and Polling
|
|
|
|
|
2019-06-20 13:53:45 -05:00
|
|
|
If you need to implement custom discovery or polling you can implement
|
|
|
|
the ProcessorDiscovery interface and the ProcessorPolling interface in the OS class.
|
2017-04-25 18:35:42 +01:00
|
|
|
|
2018-02-05 07:39:13 -06:00
|
|
|
OS Class files reside under `LibreNMS\OS`
|
2017-04-25 18:35:42 +01:00
|
|
|
|
2018-02-05 07:39:13 -06:00
|
|
|
```php
|
|
|
|
<?php
|
|
|
|
namespace LibreNMS\OS;
|
|
|
|
|
|
|
|
use LibreNMS\Device\Processor;
|
|
|
|
use LibreNMS\Interfaces\Discovery\ProcessorDiscovery;
|
|
|
|
use LibreNMS\Interfaces\Polling\ProcessorPolling;
|
|
|
|
use LibreNMS\OS;
|
|
|
|
|
|
|
|
class ExampleOS extends OS implements ProcessorDiscovery, ProcessorPolling
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Discover processors.
|
|
|
|
* Returns an array of LibreNMS\Device\Processor objects that have been discovered
|
|
|
|
*
|
|
|
|
* @return array Processors
|
|
|
|
*/
|
|
|
|
public function discoverProcessors()
|
|
|
|
{
|
|
|
|
// discovery code here
|
|
|
|
}
|
2017-04-25 18:35:42 +01:00
|
|
|
|
2018-02-05 07:39:13 -06:00
|
|
|
/**
|
|
|
|
* Poll processor data. This can be implemented if custom polling is needed.
|
|
|
|
*
|
|
|
|
* @param array $processors Array of processor entries from the database that need to be polled
|
|
|
|
* @return array of polled data
|
|
|
|
*/
|
|
|
|
public function pollProcessors(array $processors)
|
|
|
|
{
|
|
|
|
// polling code here
|
|
|
|
}
|
2017-04-25 18:35:42 +01:00
|
|
|
}
|
|
|
|
```
|