Tutorial: NMIS8, creación de un nuevo modelo
1. Información general
En este tutorial, lo guiaremos a través de la creación de un nuevo modelo para un dispositivo compatible con NMIS 8 y para agregar una nueva métrica.
Lo que aprenderemos
- Cómo obtener datos útiles para ser utilizados en el modelo.
- Cómo implementar un nuevo modelo para un dispositivo Net-SNMP.
- Agregar una nueva métrica.
- Añadir un nuevo gráfico.
Lo que necesitarás
- Nuestro Opmantek Virtual Appliance (VM), el cual puede ser descargado de Opmantek.com
2. Configuración del entorno de trabajo
Si aún no lo has hecho. Descargue nuestro version mas reciente del dispositivo virtual de Opmantek.com
Debe importarlo a su virtualizador de preferencia, ejecutar la VM y obtener la dirección IP asignada.
Para este tutorial, mi servidor de NMIS8 está utilizando 192.168.1.100, tenga en cuenta que esta dirección IP puede ser diferente en su configuración.
Debe acceder a la VM a través de SSH para editar los archivos de configuración, las credenciales predeterminadas para la VM son:
username: root password: NM1$88
3.Recopilación de datos para el nuevo modelo y la detección del modelo.
Necesitamos tener todas las MIB estándar (IETF / IEEE) y las MIB específicas del proveedor para el dispositivo a modelar, una vez que tengamos las MIB, la mejor manera de interpretar las MIB es ejecutar un SNMPWALK al dispositivo a modelar, para ello, se primero se debe comprobar que el dispositivo este correctamente configurado.
Usualmente utilizaremos la VM de Opmantek para monitorear los dispositivos de nuestra red, pero por simplicidad, la misma VM se utilizara en este tutorial como el dispositivo a modelar, por lo que tendrá 2 roles, de manera predeterminada, el servidor NMIS se monitorea a si mismo y se puede encontrar como el dispositivo localhost.
Primero, debemos realizar un snmpwalk al dispositivo para obtener todos los datos y la métrica del mismo. Necesitamos la "comunidad" o la contraseña para acceder a esta información con éxito, para la VM de Opmantek, la comunidad es: nmisGig8 y la dirección IP para este ejemplo es 192.168.1.100
El comando debe ejecutarse de la siguiente manera:
snmpwalk -v 2c -c nmisGig8 192.168.1.100 .1
Resultado:
SNMPv2-MIB::sysDescr.0 = STRING: Linux Lab_Master 4.9.0-11-amd64 #1 SMP Debian 4.9.189-3+deb9u2 (2019-11-11) x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (166698) 0:27:46.98 SNMPv2-MIB::sysContact.0 = STRING: Root <root@nmis8> (configure /etc/snmp/snmpd.conf) SNMPv2-MIB::sysName.0 = STRING: Lab_Master SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf) SNMPv2-MIB::sysORLastChange.0 = Timeticks: (7) 0:00:00.07 SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup SNMPv2-MIB::sysORID.6 = OID: TCP-MIB::tcpMIB SNMPv2-MIB::sysORID.7 = OID: IP-MIB::ip SNMPv2-MIB::sysORID.8 = OID: UDP-MIB::udpMIB SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching. SNMPv2-MIB::sysORDescr.2 = STRING: The management information definitions for the SNMP User-based Security Model. SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB. SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities SNMPv2-MIB::sysORDescr.5 = STRING: View-based Access Control Model for SNMP. SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing TCP implementations SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing IP and ICMP implementations SNMPv2-MIB::sysORDescr.8 = STRING: The MIB module for managing UDP implementations SNMPv2-MIB::sysORDescr.9 = STRING: The MIB modules for managing SNMP Notification, plus filtering. SNMPv2-MIB::sysORDescr.10 = STRING: The MIB module for logging SNMP Notifications. SNMPv2-MIB::sysORUpTime.1 = Timeticks: (7) 0:00:00.07 SNMPv2-MIB::sysORUpTime.2 = Timeticks: (7) 0:00:00.07 SNMPv2-MIB::sysORUpTime.3 = Timeticks: (7) 0:00:00.07 SNMPv2-MIB::sysORUpTime.4 = Timeticks: (7) 0:00:00.07 SNMPv2-MIB::sysORUpTime.5 = Timeticks: (7) 0:00:00.07 SNMPv2-MIB::sysORUpTime.6 = Timeticks: (7) 0:00:00.07 SNMPv2-MIB::sysORUpTime.7 = Timeticks: (7) 0:00:00.07 SNMPv2-MIB::sysORUpTime.8 = Timeticks: (7) 0:00:00.07 SNMPv2-MIB::sysORUpTime.9 = Timeticks: (7) 0:00:00.07 SNMPv2-MIB::sysORUpTime.10 = Timeticks: (7) 0:00:00.07 IF-MIB::ifNumber.0 = INTEGER: 2 IF-MIB::ifIndex.1 = INTEGER: 1 IF-MIB::ifIndex.2 = INTEGER: 2 IF-MIB::ifDescr.1 = STRING: lo IF-MIB::ifDescr.2 = STRING: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) IF-MIB::ifType.1 = INTEGER: softwareLoopback(24) IF-MIB::ifType.2 = INTEGER: ethernetCsmacd(6) IF-MIB::ifMtu.1 = INTEGER: 65536 IF-MIB::ifMtu.2 = INTEGER: 1500 IF-MIB::ifSpeed.1 = Gauge32: 10000000 IF-MIB::ifSpeed.2 = Gauge32: 1000000000 IF-MIB::ifPhysAddress.1 = STRING: IF-MIB::ifPhysAddress.2 = STRING: 8:0:27:c4:1f:3f IF-MIB::ifAdminStatus.1 = INTEGER: up(1) IF-MIB::ifAdminStatus.2 = INTEGER: up(1) IF-MIB::ifOperStatus.1 = INTEGER: up(1) IF-MIB::ifOperStatus.2 = INTEGER: up(1) IF-MIB::ifLastChange.1 = Timeticks: (0) 0:00:00.00 IF-MIB::ifLastChange.2 = Timeticks: (3927) 0:00:39.27 IF-MIB::ifInOctets.1 = Counter32: 8315005 IF-MIB::ifInOctets.2 = Counter32: 1309639 IF-MIB::ifInUcastPkts.1 = Counter32: 41439 IF-MIB::ifInUcastPkts.2 = Counter32: 15249 IF-MIB::ifInNUcastPkts.1 = Counter32: 0 IF-MIB::ifInNUcastPkts.2 = Counter32: 38 IF-MIB::ifInDiscards.1 = Counter32: 0 --snip--
Info: Para un procesamiento más rápido, puede usar el comando "snmpbulkwalk" en lugar de "snmpwalk", ya que está optimizado para un mejor rendimiento.
Ahora que sabemos cómo obtener información útil del dispositivo, agreguemos un nuevo modelo de dispositivo a NMIS.
Imaginemos que acabamos de obtener un nuevo servidor Debian 9 (nuestra VM) y necesitamos crear un modelo para este. Para empezar,nos interesa obtener los detalles descritos en SysDescr y SysObjectId.
SNMPv2-MIB::sysDescr.0 = STRING: Linux Lab_Master 4.9.0-11-amd64 #1 SMP Debian 4.9.189-3+deb9u2 (2019-11-11) x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
Necesitamos obtener el OID del proveedor del sysObjectID: NET-SNMP-MIB, se puede encontrar usando google. En una búsqueda simple, obtenemos que el OID es: 1.3.6.1.4.1.8072 (https://oidref.com/1.3.6.1.4.1.8072). El código del nodo es: 8072.
El sysDescr: Debian 4.9.189-3 + deb9u2 nos dice que este dispositivo es un Debian 9 con Kernel 4.9.189
En base a esta información, crearemos un modelo.
Primero debemos agregar el Código del nodo a Enterprise.nmis, en este caso el proveedor ya está presente.
'8071' => { 'Enterprise' => 'Sandstorm Enterprises, Inc.', 'OID' => '8071' }, '8072' => { 'Enterprise' => 'net-snmp', 'OID' => '8072' }, '8073' => { 'Enterprise' => 'Lumos Technologies Inc', 'OID' => '8073' },
Luego, actualizamos o agregamos la información relacionada con el dispositivo en /usr/local/nmis8/models/Model.nmis. Usamos la descripción del sysDescr para encontrar el dispositivo que le corresponde.
La sección "net-snmp" en el archivo actualmente se ve así:
'Frogfoot Networks' => { 'order' => { '10' => { 'Ubiquiti' => 'Linux 2.6.3.' }, '20' => { 'FrogFoot' => 'Linux' } } }, 'net-snmp' => { 'order' => { '5' => { 'Checkpoint' => '2.6.18-92cp|2.6.18-92cpx86_64|2.4.21-21cpsmp' }, '10' => { 'net-snmp' => 'SunOS|Darwin|HP-UX' }, '20' => { 'net-snmp' => '.' } } }, 'Prime Computer' => { 'order' => { '10' => { 'net-snmp' => 'Cisco Secure Access Control System' } } },
Agregaremos un nuevo elemento para que coincida con un dispositivo que utiliza el agente net-snmp y tiene un sysDescr que incluye la palabra "Debian". Podríamos ser más específicos y agregar la versión si es necesario, sin embargo, este no es el caso.
Debería verse así ahora:
'Frogfoot Networks' => { 'order' => { '10' => { 'Ubiquiti' => 'Linux 2.6.3.' }, '20' => { 'FrogFoot' => 'Linux' } } }, 'net-snmp' => { 'order' => { '5' => { 'Checkpoint' => '2.6.18-92cp|2.6.18-92cpx86_64|2.4.21-21cpsmp' }, '10' => { 'net-snmp' => 'SunOS|Darwin|HP-UX' }, '15' => { 'Debian' => 'Debian' }, '20' => { 'net-snmp' => '.' } } }, 'Prime Computer' => { 'order' => { '10' => { 'net-snmp' => 'Cisco Secure Access Control System' } } },
Con estos cambios, nuestro modelo se cargará para el dispositivo.
Ahora probamos si nuestro modelo se ha agregado correctamente y si NMIS lo detecta automáticamente.
En la GUI de NMIS, agregamos el nuevo dispositivo. Ingresamos la comunidad SNMP, IP y un nombre para el dispositivo. Se debe tener en cuenta que el Modelo está seleccionado como "Automático" de forma predeterminada, y lo dejaremos como está.
Hacemos click en "Add and Update" para aplicar los cambios al nuevo nodo. Unos segundos mas trade, NMIS nos mostrara una ventana con los detalles de la operacion ejecutada.
Aquí podemos ver que nuestro modelo ha sido detectado con éxito: