提升/清除SNMP警报最佳实践

时间:2017-11-23 14:57:38

标签: snmp4j snmp-trap

我目前正在使用一个应用程序,当我的程序无法访问外部API时会引发SNMP ALARMS。当我成功从API获得回复时,我清除了警报。

以下是相同的代码。

            // Call Webservice to check the external API is up or not
            logger.debug("Sending trap data Clear Alarm {}" , trapData);
            AlarmTrap.INTERFACE_SMSC_STATUS.clear(trapData);
    }
    catch(CustomException e) 
    {

        AlarmTrap.INTERFACE_SMSC_STATUS.raise(trapData);

        logger.error("Error " + e);
        throw e;
    }

正如你所看到的每一次成功的回应我正在清除警报。虽然SNMP服务器丢弃相同类型的警报,但对当前执行没有影响。我想知道这是不是好的做法。以及SNMP协议本身是否处理重复警报并且不会发送到网络。

1 个答案:

答案 0 :(得分:1)

如果您不想为连续成功API响应发送重复警报,则可以创建一个AtomicBoolean类变量 - isErrorAlert,如果isErrorAlert = true,则只调用SNMP clear TRAP。

AtomicBoolean isErrorAlert = new AtomicBoolean();


try{
  //API Success case
  if(isErrorAlert.compareAndSet(true, false)){
     //send clear trap only if the error case is occured
  }

} catch(Exception e) {
  //Fail case
  isErrorAlert.set(true);
} 

参考文献: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicBoolean.html