Error de SNMPv3 Perl Net::SNMP - Error de sincronización de tiempo durante el descubrimiento.
El siguiente procedimiento es para dar solución al error de sincronización durante un descubrimiento realizado con el protocolo SNMPv3 a dispositivos con un firmware que no ejecuta un procedimiento de autenticación completo, por tal motivo se ve afectado la colección de datos.
El módulo Net::SNMP utiliza el esquema del procedimiento en la Sección 4 de RFC 3414 para realizar el descubrimiento.
Parece que el firmware del hardware no exige la comprobación de la puntualidad y no responde con una PDU de informe usmStatsNotInTimeWindows durante el proceso de descubrimiento, por lo tanto se genera un error de sincronización.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
error: [2633] Net::SNMP::_discovery_synchronization_cb(): Time synchronization failed during discovery debug: [2636] Net::SNMP::_discovery_synchronization_cb(): synchronization failed error: [1064] Net::SNMP::PDU::_report_pdu_error(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769 error: [299] Net::SNMP::MessageProcessing::prepare_data_elements(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769 error: [398] Net::SNMP::Dispatcher::_transport_response_received(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769 error: [2520] Net::SNMP::__ANON__(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769 during discovery |
- Se determinaron que determinó que este error podría ignorarse, por por lo que modificar la biblioteca Net :: SNMP Perl podría solucionar este problema.
- Si encuentra el error 'La sincronización de tiempo falló durante el descubrimiento' usando la biblioteca perl Net :: SNMP, puede ser una solución fácil. Es necesario editar el módulo Net :: SNMP para no invocar este error, generando un Bypass en el proceso de descubrimiento. tal Tal proceso tiene que ejecutarse como root.
...
Antes de realizar la edicion del archivo SNMP.pm es recomendable realizar un BKP, una vez realizodo realizado el BKP abrimos el archivo SNMP.pm ubicado en la ruta /usr/local/share/perl5/Net/
...
Nota: buscar con la siguiente linea linea: if (($this→{_security}→discovered())
...
Ya localizado el segmento se tiene que editar y comentar las líneas correspondientes quedando dela de la siguiente manera:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
2620 if ( $this->{_security}->discovered() ) 2621# ($this->{_error} =~ /usmStatsNotInTimeWindows/)) 2622 { 2623 $this->_error_clear(); 2624 DEBUG_INFO('discovery and synchronization complete'); 2625 return $this->_discovery_complete(); 2626 } 2627 2628 # If we received the usmStatsNotInTimeWindows report or no error, but 2629 # we are still not synchronized, provide a generic error message. 2630 #LATAM Bypass "sincronización de tiempo" de SNMPv3 2631# if ((!$this->{_error}) || ($this->{_error} =~ /usmStatsNotInTimeWindows/)) { 2632# $this->_error_clear(); 2633# $this->_error('Time synchronization failed during discovery'); 2634# } |
...
Finalizando la edición es necesario reiniciar el servicio snmpd: service snmpd .restart
Referencias:
Perl Net::SNMP Error: Time synchronization failed during discovery
...