CA Spectrum でのイベント管理

内容
casp1032jp
内容
ネットワーク マネージャは、多くの場合、
CA Spectrum
 に加えて、特別な機能を管理するサードパーティ製品に依存します。たとえば、サードパーティ製品がファイアウォールを監視し、別の製品がネットワーク トラフィックを監視します。これらの製品は、情報を収集し、データをフィルタリングし、イベントを
CA Spectrum
 に送信します。これは、イベントを相関、保存、表示し、これらをアラームにします。
以下の例では、API インターフェースを使用して、イベントを作成および管理する方法を示します。
Integer modelID = Integer.decode( args[0] ); Integer eventCode = Integer.decode( args[1] ); int severity = 3; CsCValue svalue = new CsCValue(); svalue.gaugeValue(severity); CsCAttrValue sav = new CsCAttrValue( CsCorbaEventHelper.SEVERITY, svalue, CsCError_e.SUCCESS); CsCAttrValue[] ava = new CsCAttrValue[]{sav}; CsCAttrValList avl = new CsCAttrValList( ava, CsCError_e.SUCCESS); byte[] eventid = md.createEvent( modelID.intValue(), eventCode.intValue(), avl ); System.out.println("Event ID:" + CsCorbaEventHelper.toString( eventide ));
上記の例では、CsCModelDomain インターフェース モデルのイベントが生成されます。1、2 行目は、モデル ID およびイベント コードをデコードします。4 ~ 12 行目は、値 3 の CsCValue を作成して、作成されるイベントの重大度として割り当てます。13 ~ 14 行目では、CsCorbaEventHelper が呼び出され、イベント ID がテキスト文字列形式で出力されます。次の行の toString メソッドでは、インストール内のすべてのイベント ドメイン間でイベントを一意に識別するイベント ID を表示します。イベント ID の例は、3a63543c-0026-1000-00d9-0080108d4051 です。
このクラスには、以下の値を取得することができるすべての属性が含まれています。
  • Creation_Date
  • 作成者
  • イベント ID
  • Event_Type
  • Model_Handle
  • Model_Name
  • Model_Type
  • Model_Type_Name
  • Severity および Type_Attributes
クラスには、イベント ID などのデータをテキスト形式に変換するヘルパー メソッドも含まれています。CsCEventDomain はモデル ドメインのイベントへのアクセスを提供します。イベントは、ルータやアプリケーションなどの監視対象エンティティの状況のレコードです。複数のエンティティから一連のイベントを格納することにより、ネットワーク全体の履歴を作成できます。履歴を使用して、監視対象エンティティの問題または複数の監視対象エンティティのインタラクションに起因する問題を追跡できます。
クライアントまたは
CA Spectrum
 がイベントを作成しますが、
CA Spectrum
がそれらを受信します。ほとんどのイベントはクライアントに配布され、データベースに格納されます。
CA Spectrum
 が内部的に使用するイベントは、クライアントでは使用できません。CsCEventDomain では、データベースからイベントを取得してイベントを受信するためのクライアント インターフェースを提供します。
すべてのイベントには、タイプと識別子が含まれています。ネットワークで発生するそれぞれの新しい状況によって、新しいイベント タイプを作成されます。2 つの例は、
リンク アップ
イベント タイプと
リンク ダウン
イベント タイプです。イベント識別子(CsCEventID)は作成されるモデル ドメインから独立したイベントを一意に識別します。デフォルトでは、この基本情報のみがクライアントに渡されます。
各イベントには、属性値エラー リストに格納されている追加の情報が含まれています。属性 ID は、リクエスト時にクライアントに送信される追加の情報を識別します。
以下のセクションでは、イベント属性およびその説明を示します。
  • イベント ID
    イベントが作成されるモデル ドメインから独立したイベントを一意に識別します。
    タイプ:
     CsCEventID
    属性 ID:
     0x11fbc
  • イベント タイプ
    イベントが作成される状況の性質を示します。イベント タイプは、32 ビットの識別子です。上位 16 ビットは開発者を示し、下位 16 ビットは、開発者が作成した各イベント タイプを区別するために管理モジュールの開発者によって割り当てられます。イベント タイプは、管理モジュールの一部として定義され、常に各イベントに含まれています。
    タイプ:
    整数
    属性 ID:
     0x11fb8
  • 作成者
    イベントを作成したユーザの名前。
    CA Spectrum
     は、イベントを作成する際にこの属性を作成します。
    タイプ:
     テキスト文字列
    属性 ID:
     0x11fb9
  • 作成日時
    イベントが記録された日付と時間。
    タイプ:
     CsCDateTime
    属性 ID:
    0x11f4e
  • 重大度
    イベントの重大度を定義します。重大度の高いイベントは、ネットワーク管理者がより注意する必要があるか、大規模な失敗を表します。有効な値は、0 ~ 100 であり、100 が最高の重大度です。イベントの重大度は、管理モジュールによって割り当てられ、ユーザによって変更できます。すべてのイベントには、それに関連付けられている重大度があります。
    タイプ:
    整数
    属性 ID:
     0x11fb5
  • モデル ID
    イベントが作成されたモデル ID です。
    タイプ:
    モデル ID
    属性 ID:
     0x11f53
  • モデル名
    モデルの名前。
    タイプ:
     テキスト文字列
    属性 ID:
     0x1006e
  • モデル タイプ
    イベントが作成されたモデルのタイプ。
    タイプ:
     CsCMType
    属性 ID:
    0x10001
  • モデル タイプ名
    タイプ:
     テキスト文字列
    属性 ID:
     0x10000
    モデル タイプの名前。
  • タイプ属性
    タイプ:
    ブール値
    属性 ID:
     0x11fba
    イベントは、イベント固有の属性がある場合があります。イベント固有の属性を使用して、イベント フォーマット ファイルからイベント メッセージを作成することができます。この属性を使用して、クライアントが、
    CA Spectrum
    が各イベントですべてのイベント固有属性を送信するように指定することができます。
  • モデル ID
    イベントが作成されたモデルの ID。
    タイプ:
    整数
    属性 ID:
     0x129aa
  • ドメイン ID
    イベントが作成されたドメインの ID。
    タイプ:
    整数
    属性 ID:
     0x129ac
イベント作成の例
以下の例では、イベントを作成する方法を示します。
import java.io.*; import com.aprisma.spectrum.core.idl.*; import com.aprisma.spectrum.core.util.*; import com.aprisma.spectrum.core.idl.CsCException.*; import com.aprisma.spectrum.core.idl.CsCAttribute.*; import com.aprisma.spectrum.core.idl.CsCError.*; import com.aprisma.util.corba.*; public class CreateEvent { public static void main( String[] args ) { Integer modelID = Integer.decode( args[0] ); Integer eventCode = Integer.decode( args[1] ); CsCModelDomain md = null; try { String domainName = new String( "mySpectroSERVER" ); CORBAHelper helper = CORBAHelper.getHelperImpl(); helper.init( null, null ); md = (CsCModelDomain) helper.getObjectImplementation( CsCModelDomain.class, domainName ); int severity = 7; CsCValue svalue = new CsCValue(); svalue.gaugeValue( severity ); CsCAttrValue sav = new CsCAttrValue( CsCorbaEventHelper.SEVERITY, svalue, CsCError_e.SUCCESS ); CsCAttrValue[] ava = new CsCAttrValue[]{sav}; CsCAttrValList avl = new CsCAttrValList( ava, CsCError_e.SUCCESS ); byte[] eventid = md.createEvent( modelID.intValue(), eventCode.intValue(), avl ); } catch ( Throwable e ) { System.out.println( e ); } } }
上記の例では、以下のオブジェクトとメソッドが必要です。
  • パッケージ com.aprisma.spectrum.core.idl
    • インターフェース
      • CsCModelDomain
      • CsCEventDomain
    • クラス
      • CsCModelDomainHelper
  • パッケージ com.aprisma.spectrum.core.idl.CsCEventDomainPackage
    • クラス
      • CsCEvent
  • パッケージ com.aprisma.spectrum.core.util
    • クラス
      • CsCorbaEventHelper
  • パッケージ com.aprisma.spectrum.core.idl.CsCAttribute
    • クラス
      • CsCAttrValList
      • CsCAttrValue
      • CsCValue
  • パッケージ com.aprisma.spectrum.core.idl.CsCError
    • クラス
      • CsCError_e
イベントの取得
検索フィルタを定義することによって、イベントを取得できます。まず、CsCEventDomain インターフェースを取得し、返されるイベント結果セットを定義するフィルタ タイプを作成します。フィルタには、時間範囲、特定のモデル、イベント タイプ、条件の組み合わせを指定できます。
メソッド getEventListByAttrFilter を呼び出すと、クライアントにイベントが返されます。最初のパラメータはフィルタです。2 番目のパラメータは、フィルタによって検出されたすべてのイベントに対して返される属性を指定します。要求に対する応答は、1 つの結果セットとして返すことはできず、エラーとして CsCError::LIMIT_REACHED が返されます。getNextEventListByAttrFilter を呼び出して、残りのイベントを取得する必要があります。検索の上限は、10,000 レコードです。 getNextEventListByAttrFilter に requestID を渡して、このリクエストに関連付けられているイベントの次のグループを要求する必要があります。この requestID は、それが返された 5 分後、またはすべてのイベントがクライアントに返されたときに無効になります。
タイプ別にイベントを取得する例
以下の例では、タイプ別にイベントを取得する方法を示します。
import java.io.*; import com.aprisma.spectrum.core.idl.*; import com.aprisma.spectrum.core.util.*; import com.aprisma.spectrum.core.idl.CsCEventDomainPackage.*; import com.aprisma.spectrum.core.idl.CsCException.*; import com.aprisma.spectrum.core.idl.CsCAttribute.*; import com.aprisma.spectrum.core.idl.CsCError.*; import com.aprisma.util.corba.*; public class RetrieveEvent { public static void main( String[] args ) { Integer modelID = Integer.decode( args[0] ); Integer eventCode = Integer.decode( args[1] ); CsCModelDomain md = null; try { String domainName = new String( "mySpectroSERVER" ); CORBAHelper helper = CORBAHelper.getHelperImpl(); helper.init( null, null ); md = (CsCModelDomain) helper.getObjectImplementation( CsCModelDomain.class, domainName ); CsCEventDomain ed = (CsCEventDomain) helper.getObjectImplementation( CsCEventDomain.class, domainName ); CsCorbaFilterAttrNode node = CsCorbaAttrFilterHelper.createGaugeValueNode( CsCorbaEventHelper.EVENT_TYPE, CsCOperator_e.CSC_EQUALS, eventCode.intValue()); CsCValue[] filter = node.getFilter(); int[] attrIDs = new int[4]; attrIDs[0] = CsCorbaEventHelper.CREATOR; attrIDs[1] = CsCorbaEventHelper.MODEL_NAME; attrIDs[2] = CsCorbaEventHelper.MODEL_TYPE_NAME; attrIDs[3] = CsCorbaEventHelper.TYPE_ATTRIBUTES; org.omg.CORBA.IntHolder requestID = new org.omg.CORBA.IntHolder(); CsCEventList el = ed.getEventListByAttrFilter(filter, attrIDs, requestID); System.out.println("Overall:" + el.error.toString()); if (el.error == CsCError_e.SUCCESS || el.error == CsCError_e.LIMIT_REACHED ) { printEventInfo( el ); if (el.error == CsCError_e.LIMIT_REACHED) { el = ed.getNextEventListByAttrFilter( requestID.value); printEventInfo(el); } } } catch ( Throwable e ) { System.out.println( e ); } } public static void printEventInfo( CsCEventList el ) { for (int i = 0; i < el.list.length; i++) { CsCEvent event = el.list[i]; CsCAttrValList avl = event.attrValList; System.out.println("EventCode:" + event.type); for (int j = 0; j < avl.list.length; j++) { CsCAttrValue av = avl.list[j]; System.out.println("AttrID:" + av.attributeID); CsCValue val = av.value; System.out.println("AttrVal:" + val.toString()); } } } }
上記の例では、以下のオブジェクトとメソッドが必要です。
  • パッケージ com.aprisma.spectrum.core.idl
    • インターフェース
      • CsCModelDomain
      • CsCEventDomain
    • クラス
      • CsCModelDomainHelper
  • パッケージ com.aprisma.spectrum.core.idl.CsCEventDomainPackage
    • クラス
      • CsCEvent
  • パッケージ com.aprisma.spectrum.core.util
    • クラス
      • CsCorbaEventHelper
  • パッケージ com.aprisma.spectrum.core.idl.CsCAttribute
    • クラス
      • CsCAttrValList
      • CsCAttrValue
      • CsCValue
  • パッケージ com.aprisma.spectrum.core.idl.CsCError
    • クラス
      • CsCError_e