開発 API のアラーム
sda はイベント作成プロセスを通じてアラームを生成します。イベントが作成されると、$SPECROOT/SS/CsVendor のサブディレクトリにある EventDisp ファイル内のエントリにマップされます。
casp1032jp
SPECTRUM Development API
はイベント作成プロセスを通じてアラームを生成します。イベントが作成されると、$SPECROOT
/SS/CsVendor のサブディレクトリにある EventDisp ファイル内のエントリにマップされます。たとえば、mtype 0x1c8000a の EventDisp ファイルが
$SPECROOT
/SS/CsVendor/Ctron_SSAH ディレクトリ内にあり、次のファイルに似ているとします。0x00010306 E 30 0x00010307 E 30 0x00010308 E 50 A 1,0x010308 0x00010309 E C 0x010308 0x0001030a E 50 A 1,0x01030a 0x0001030b E 50 A 1,0x01030b 0x021b070a E 50 0x021b070b E 50 A 1,0x021b070b 0x021b070c E 50 0x021b070d E 50 0x000d01a0 E 50 A 1,0x0d01a0 0x000d01a1 E 50 A 1,0x0d01a1 0x000d01a2 E 50 A 1,0x0d01a2 0x000d01a3 E 50 A 1,0x0d01a3 0x000d0351 E 50 A 1,0x0d0351 0x000d0001 E 50 A 1,0x0d0001 0x000d0002 E 50 A 1,0x0d0002 0x00830000 E 30 0x00830001 E 30 0x00830002 E 30 0x003c0002 E 50 A 1,0x003c0002 0x000d2afb E 30
左の列の数値はイベント コードです。コード E は、
CA Spectrum
にイベントを記録するように指示し、コード C は、CA Spectrum
にイベントをクリアするように指示し、コード A は、CA Spectrum
にアラームを生成するように指示します。1 はアラームの重大度を指定します。右の列の数値は、アラームに表示される想定される原因を示します。CsCAlarmDomain はモデル ドメインのアラームへのアクセスを提供します。アラームは、ルータやアプリケーションなどの監視対象エンティティで、製品オペレータの注意が必要な状況を示します。アラームの優先度は状況に対処する順序を提案しています。
CA Spectrum
アラーム システムは、クライアントに最も重要なアラームのみを提供します。このタスクを実行するには、クライアントが要求するものだけを提供したり、アラームの提供の優先順位を付けたりするなどの 2 つの方法があります。デフォルトで、アラームには ID、原因、優先度、重大度などの基本情報のみが付属します。必要に応じて、クライアントは、各アラームと共に送信される属性 ID によって定義される追加の特性を指定する必要があります。アラームの提供の優先順位を付けるため、クライアントは優先順位付けしたアラーム フィルタを指定します。フィルタはクライアントに付属するアラームを定義します。フィルタの優先順位を付けることで、
CA Spectrum
に、優先度の高いアラームのみを生成させます。たとえば、優先順位付けは、大量のアラームの更新によって一部のアラームが遅延するような状況で便利です。アラームに割り当てられる優先度は、アラームを受信するすべてのクライアントの優先度アラーム フィルタに依存します。クライアントは、クライアント アラーム要求の優先度を明確にしながら、クライアントに送信されるデータの量が最小にするようにインターフェースを使用する必要があります。
アラーム属性
CA Spectrum
はアラームとモデルの 2 つの属性のカテゴリを提供します。アラーム属性は、アラームのコンテキスト内にのみ存在します。モデルの属性は、モデルと共に格納されます。クライアントは、アラームに含める属性を選択できます。たとえば、アラームにモデル名とトラブルシュータ名を含めるように設定できます。モデル名はモデル属性で、トラブルシュータ名はアラーム属性です。クライアントに各アラームのモデル属性を選択させると、クライアントが新しいアラームを受信したときに、CA Spectrum
に追加のデータをクエリする必要性を最小限に抑えられます。以下のアラーム属性およびそれらの説明を確認してください。
- 確認済み(読み取り/書き込み)アラームの受信確認の状態、つまりユーザがアラームを見たかどうかを示します。タイプ:ブール値属性 ID:0x11f4d
- アラーム ID(読み取り専用)アラームが作成されたモデル ドメインと関係なく、アラームを一意に識別します。この属性はすべてのアラームで自動的に送信されます。タイプ:CsCAlarmID属性 ID:0x11f9c
- アラーム ステータス(読み取り/書き込み)アラームに関する情報を伝えます。ステータスは常に、修復が完了しているかどうかを示します。タイプ:文字列属性 ID:0x11f4f
- アラーム原因(読み取り専用)アラームの原因およびアラームが作成された状況の性質を識別します。この属性は、すべてのアラームで自動的に送信されるため、アプリケーションで明示的に要求する必要はありません。タイプ:CsCCauseID属性 ID:0x11f50
- アラーム ソース(読み取り専用)アラーム ソースを示す列挙値。現在、以下の値がサポートされています。
- 0アラームが最新であることを指定します。
- 1アラームが古いことを示します。アラームはSpectroSERVERの以前の実行から存在します。
タイプ:enum属性 ID:0x11fc4 - 名前によるクリア(読み取り専用) API を介してアラームをクリアしたユーザ名を指定します。この属性は、アラームの作成時には存在しませんが、削除する前に追加されます。タイプ:文字列属性 ID:0x11f51
- 作成日(読み取り専用)アラーム作成の日時。タイプ:CsCDateTime属性 ID:0x11f4e
- イベント ID リスト(読み取り/書き込み)アラームに関連付けられているイベントのリストを指定します。アラームが生成される原因となったイベントが含まれます。タイプ:CsCEventIDList属性 ID:0x11f52
- モデル ID(読み取り専用)アラームによって報告された状況でモデルを識別します。タイプ:モデル ID属性 ID:0x11f53
- 発生(読み取り専用)アラームの発生数が含まれます。このカウントは、トラップ、イベント、または IH を介してアラームをアサートした状況が再発すると更新されます。この属性は、初期アラームが最初に発生すると 1 に初期化されます。タイプ:符号なし長整数(ゲージ)属性 ID:0x11fc5
- 最終発生日(読み取り専用)アラームが最後に発生した日時を示します。タイプ:CsCDateTime属性 ID:0x1321a
- プライマリ アラーム(読み取り専用)アラームがプライマリ アラームであるかどうかを示します。プライマリ アラームは、モデルの重大度が最も高いアラームです。モデルは、一度に複数のプライマリ アラームを生成できます。タイプ:ブール値属性 ID:0x11f54
- 解決済み(読み取り専用)アラームがCA Spectrumによって内部で解決されるかどうかを示します。タイプ:ブール値属性 ID:0x11f55
- 重大度(読み取り専用)アラーム重大度を示します。この属性は、すべてのアラームで自動的に送信されるため、アプリケーションで明示的に要求する必要はありません。タイプ:CsCAlarmSeverity属性 ID:0x11f56
- トラブルシュータ(読み取り/書き込み)アラームの修復に割り当てられたトラブルシュータの名前を指定します。タイプ:文字列属性 ID:0x11f57注:この属性が書き込まれると、名前がユーザの有効なトラブルシュータ モデルに対応している場合に、トラブルシュータ モデル属性も更新されます。
- トラブルシュータ モデル(読み取り/書き込み)アラームの修復に割り当てられたトラブルシュータのモデルを指定します。タイプ:CsCModel属性 ID:0x11fc6注:この属性が書き込まれると、トラブルシュータ名属性も更新されます。ただし、モデルが有効でないか、ユーザに関連付けられていない場合は、書き込みが失敗し、エラー ATTR_BAD_VALUE が返されます。
- トラブル チケット ID(読み取り/書き込み)アラームに関連付けられているトラブル チケットの ID が含まれます。タイプ:文字列属性 ID:0x12022
- ユーザ クリア可能(読み取り専用)クライアントがアラームをクリアできるかどうかを示します。この属性は、クライアント アプリケーションでアラームがクリア可能でないことをユーザに示すことができるように提供されています。クライアントは、アラームがクリア可能かどうかを制御できません。タイプ:ブール値属性 ID:0x11f9b
- モデル ID(読み取り専用)アラームによって報告された状況でモデルの ID を識別します。タイプ:整数属性 ID:0x129aa
- モデル タイプ ID(読み取り専用)モデル タイプの ID を指定します。タイプ:整数属性 ID:0x129ab
アラームを取得することは、イベントを取得するのに似ています。アラームの検索フィルタを定義することによって、イベントを取得します。まず、CsCAlarmDomain インターフェースを取得し、次にアラーム結果セットを定義するフィルタを作成します。フィルタには、時間範囲、特定のモデル、アラーム タイプ、条件の組み合わせを指定できます。フィルタには、ここに示すすべての属性を使用できます。CsCorbaAlarmHelper クラスは、すべてのアラーム属性を定義します。また、ヘルパー クラスは、アラーム ID をバイト配列からテキスト文字列に、およびテキスト文字列からバイト配列に変換できます。アラーム ID はイベント ID と同様に一意であり、長い形式を使用します。
モデル ID によるアラームの取得の例
以下の例に、モデル ID によってアラームを取得する方法を示します。
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.CsCAlarmDomainPackage.*; import com.aprisma.spectrum.core.idl.CsCError.*; import com.aprisma.util.corba.*; public class RetrieveAlarms { public static void main( String[] args ) { Integer modelID = Integer.decode( args[0] ); CsCModelDomain md = null; try { String domainName = new String( "train124" ); CORBAHelper helper = CORBAHelper.getHelperImpl(); helper.init( null, null ); md = (CsCModelDomain) helper.getObjectImplementation( CsCModelDomain.class, domainName ); CsCorbaFilterAttrNode node = CsCorbaAttrFilterHelper.createModelIDNode( CsCorbaAlarmHelper.MODEL_HANDLE, CsCOperator_e.CSC_EQUALS, modelID.intValue() ); CsCValue[] filter = node.getFilter(); int[] attrIDs = new int[2]; attrIDs[0] = CsCorbaAlarmHelper.CREATION_DATE; attrIDs[1] = CsCorbaAlarmHelper.MODEL_HANDLE; CsCAlarmDomain ad = md.getAlarmDomain(); CsCAlarmList al = ad.getAlarmListByAttrFilter( filter, attrIDs ); System.out.println( "Status:" + al.error.toString() ); for ( int i=0; i < al.list.length; i++ ) { CsCAlarm alarm = al.list[i]; System.out.println( "Priority:" + alarm.priority ); System.out.println( "Severity:" + alarm.severity ); CsCAttrValList avl = alarm.attrValList; System.out.println( "CreationDate: " + avl.list[0].value.toString() ); System.out.println( "ModelHandle: " + avl.list[1].value.toString() ); } } catch ( Throwable e ) { System.out.println( e ); } } }
この例では、以下のオブジェクトとメソッドが必要です。
- パッケージ com.aprisma.spectrum.core.idl
- インターフェース
- CsCModelDomain
- CsCAlarmDomain
- クラス
- CsCModelDomainHelper
- パッケージ com.aprisma.spectrum.core.idl.CsCAlarmDomainPackage
- クラス
- CsCAlarm
- CsCAlarmList
- パッケージ com.aprisma.spectrum.core.util
- インターフェース
- CsCorbaFilterAttrNode
- クラス
- CsCorbaAlarmHelper
- CsCorbaAttrFilterHelper
- パッケージ com.aprisma.spectrum.core.idl.CsCAttribute
- クラス
- CsCAttrValList
- CsCAttrValue
- CsCValue
- パッケージ com.aprisma.spectrum.core.idl.CsCError
- クラス
- CsCError_e
アラームの更新とクリア
モデル属性を更新するときに、アラーム属性を更新できます。以下の例は、トラブル チケット システムからトラブル チケット ID を更新する方法を示しています。アラームの自動化用の Trouble_Shooter や Resolved などのその他の属性を使用することもできます。
byte[][] alarms = new byte[][]{alarm.alarmID}; CsCValue val = new CsCValue(); val.textString("123123"); CsCAttrValue attrVal = new CsCAttrValue(CsCorbaAlarmHelper.TROUBLE_TICKET_ID, val, CsCError_e.SUCCESS); CsCAttrValue[] attrValArray = new CsCAttrValue[1]; attrValArray[0] = attrVal; CsCAttrValList writeValList = new CsCAttrValList(attrValArray, CsCError_e.SUCCESS); try { ad.writeAttrValListOfAlarms(alarms, writeValList); } catch (Throwable e) { System.out.println(e); }
1 行目は、アラーム ID のバイト配列を受け取り、一度に複数のアラームを更新する場合は、2 次元配列に値を割り当てます。3 ~ 10 行目は TROUBLE_TICKET_ID を設定するための CsCAttrValList を構築しています。14 行目は、属性値を書き込むための呼び出しを行います。
イベントおよび EventDisp ファイルによって自動的にアラームをクリアすることができます。以下の API を使用して、アラームをクリアすることもできます。
try { ad.clearAlarm(alarm.alarmID); } catch (Throwable e) { System.out.println(e); }