This document will explain how to add full support for a new OS. **Some knowledge in PHP is needed.** #### MIB At first we copy the MIB file into the default directory: ```bash /opt/librenms/mibs ``` We are now ready to look at inside the file and find the OID we want to use. _For this documentation we'll use Pulse Secure devices._ Then we can test it with the snmpget command (hostname must be reachabled): ```bash //for example the OID iveCpuUtil.0: snmpget -v2c -c public -OUsb -m PULSESECURE-PSG-MIB -M /opt/librenms/mibs -t 30 secure iveCpuUtil.0 //quick explanation : snmpget -v2c -c COMMUNITY -OUsb -m MIBFILE -M MIB DIRECTORY HOSTNAME OID //Result here: iveCpuUtil.0 = Gauge32: 28 ``` #### New OS definition Let's begin to declare the new OS in LibreNMS. At first we modify the definition file located here: ```bash includes/definitions.inc.php ``` ```php // Pulse Secure OS definition $os = 'pulse'; $config['os'][$os]['text'] = 'Pulse Secure'; $config['os'][$os]['type'] = 'firewall'; $config['os'][$os]['icon'] = 'junos'; $config['os'][$os]['over'][0]['graph'] = 'device_bits'; $config['os'][$os]['over'][0]['text'] = 'Device Traffic'; $config['os'][$os]['over'][1]['graph'] = 'device_processor'; $config['os'][$os]['over'][1]['text'] = 'CPU Usage'; $config['os'][$os]['over'][2]['graph'] = 'device_mempool'; $config['os'][$os]['over'][2]['text'] = 'Memory Usage'; //Don't forget to declare the specific graphs if needed. It will be located near the end of the file. //Pulse Secure Graphs $config['graph_types']['device']['pulse_users']['section'] = 'firewall'; $config['graph_types']['device']['pulse_users']['order'] = '0'; $config['graph_types']['device']['pulse_users']['descr'] = 'Active Users'; $config['graph_types']['device']['pulse_sessions']['section'] = 'firewall'; $config['graph_types']['device']['pulse_sessions']['order'] = '0'; $config['graph_types']['device']['pulse_sessions']['descr'] = 'Active Sessions'; ``` #### Discovery OS We create a new file named as our OS definition and in this directory: ```bash includes/discovery/os/pulse.inc.php ``` Look at other files to get help in the code structure. For this example, it can be like this : ```php // Pulse Secure OS definition