2017-11-23 1 views
1

私のプログラムが外部APIに到達できないときにSNMPアラームが発生するアプリケーションが現在あります。これまでにAPIからの応答が正常に返ってきたときにアラームをクリアします。SNMPアラームのベストプラクティスの向上/クリア

以下は同じコードです。

  // 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

連続した成功API応答に対して重複したアラームを送信したくない場合は、isErrorAlert = trueの場合にSNMPクリアTRAPだけが呼び出されるAtomicBooleanクラス変数-isErrorAlertを作成できます。

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

+0

はい、これが正解である - あなたのコードは、過去の結果を覚えている場合にのみ、結果の変更トラップを送信する必要があります。 – Jolta

関連する問題