2.2.1 JP1イベントを発行する手順
作業の流れは次のとおりです。
-
発行するJP1イベントの種類とイベント属性を決める
-
JP1イベント発行関数を使用してコーディングする
-
ソースファイルをコンパイルする
なお,JP1イベントに付加したユーザー独自のイベント属性をJP1/IM - Viewに表示できるようにするには,このあとJP1/IMで,JP1/IM - Managerがインストールされたマシン上に,次の定義ファイルを作成する必要があります。
-
イベント拡張属性定義ファイル
-
オブジェクトタイプ定義ファイル
JP1/IMでこれらの定義ファイルを作成する方法については,マニュアル「JP1/Integrated Management - Manager コマンド・定義ファイルリファレンス」を参照してください。
(1) 発行するJP1イベントの種類とイベント属性を決める
JP1(独自)イベントを発行するためには,まず,どんな事象をJP1イベントとして発行するのかを決めます。JP1/Baseのイベントサービスでは,発行するJP1イベントの数によって性能劣化が発生します。このため,JP1(独自)イベントはJP1/IMでシステム監視をするために必要なJP1イベントだけに絞り込む必要があります。
次に,イベント属性をどのように設定するかを決めます。イベント属性を決めるときは,JP1/IMでイベント監視をする際にそのアプリケーションの情報として何が必要かを考えます。アプリケーション単位で,発行するすべてのJP1(独自)イベントのイベント属性をあらかじめ決めておきます。
JP1イベントの属性値は,JP1/IMで自動アクション機能およびモニター画面呼び出しの際の引数として使用できます。次の例で記述するイベント属性の詳細については,「付録A JP1イベントの属性の設定基準」を参照してください。
ここでは,Windows上で動作する「SAMPLE」という名称のアプリケーションについて,開始イベントと異常終了イベントを発行する例について説明します。( )内は,JP1イベント発行関数の引数名です。
- 発行するJP1イベントの種類
-
-
アプリケーションの開始時にJP1イベントを発行する(開始イベント)
イベントID(BaseID):0x00000001
メッセージ(message):「SAMPLEアプリケーションを開始します。」
-
アプリケーションの異常終了時にJP1イベントを発行する(異常終了イベント)
イベントID(BaseID):0x00000002
メッセージ(message):「SAMPLEアプリケーションが異常終了しました。」
-
- イベント属性定義(拡張属性(extattrs)):開始イベント
-
SAMPLEアプリケーションの開始イベントには,次の属性を定義します。
表2‒2 開始イベントの属性 属性の種別
項目
属性名
内容
基本属性
イベントID
−
0x00000001
メッセージ
−
「Starts the SAMPLE application.」
拡張属性
(共通情報)
重大度
SEVERITY
Notice
ユーザー名
USER_NAME
SAMPLE_USER
プロダクト名
PRODUCT_NAME
/COMPANY/APP1/SAMPLE_PRODUCT
(プロダクトの名称)
オブジェクトタイプ
OBJECT_TYPE
SAMPLE
オブジェクト名
OBJECT_NAME
SAMPLE_NAME
登録名タイプ
ROOT_OBJECT_TYPE
ROOT_SAMPLE
登録名
ROOT_OBJECT_NAME
ROOT_SAMPLE_NAME
オブジェクトID
OBJECT_ID
SAMPLE_ID
事象種別
OCCURRENCE
START
開始時刻
START_TIME
SAMPLEアプリケーションの開始時刻。UTC 1970年1月1日 00:00:00からの秒数。
プラットフォーム種別
PLATFORM
NT
バージョン情報
ACTION_VERSION
0600
拡張属性
(固有情報)
SAMPLE共通属性1
COMMON_ATTR1
NATIVE
SAMPLE共通属性2
COMMON_ATTR2
TRUE
SAMPLE開始属性1
START_ATTR1
SAMPLE1
SAMPLE開始属性2
START_ATTR2
SAMPLE2
- イベント属性定義(拡張属性(extattrs)):異常終了イベント
-
SAMPLEアプリケーションの異常終了イベントには,次の属性を定義します。
表2‒3 異常終了イベントの属性 属性の種別
項目
属性名
内容
基本属性
イベントID
−
0x00000002
メッセージ
−
「The SAMPLE application terminated abnormally.」
拡張属性
(共通情報)
重大度
SEVERITY
Error
ユーザー名
USER_NAME
SAMPLE_USER
プロダクト名
PRODUCT_NAME
/COMPANY/APP1/SAMPLE_PRODUCT
(プロダクトの名称)
オブジェクトタイプ
OBJECT_TYPE
SAMPLE
オブジェクト名
OBJECT_NAME
SAMPLE_NAME
登録名タイプ
ROOT_OBJECT_TYPE
ROOT_SAMPLE
登録名
ROOT_OBJECT_NAME
ROOT_SAMPLE_NAME
オブジェクトID
OBJECT_ID
SAMPLE_ID
事象種別
OCCURRENCE
END
終了時刻
END_TIME
SAMPLEアプリケーションの終了時刻。UTC 1970年1月1日 00:00:00からの秒数。
終了コード
RESULT_CODE
SAMPLEアプリケーション終了時の終了コード
プラットフォーム種別
PLATFORM
NT
バージョン情報
ACTION_VERSION
0600
拡張属性
(固有情報)
SAMPLE共通属性1
COMMON_ATTR1
NATIVE
SAMPLE共通属性2
COMMON_ATTR2
TRUE
SAMPLE終了属性1
END_ATTR1
SAMPLE1
SAMPLE終了属性2
END_ATTR2
SAMPLE2
(2) JP1イベント発行関数を使用してコーディングする
前の項で説明したSAMPLEアプリケーションで,開始イベントを発行する場合のコーディング例を次に示します。
#include <stdio.h> #include <time.h> #include "JevApi.h" int regist_start_event() { int rc; /* Return code */ long status = 0; /* Detailed error code */ const char* server; /* Event server name */ long baseID; /* Event ID */ const char* message; /* Message */ char starttime[32]; const char* extattrs[16]; /* Array for storing extended attributes */ /* Set the destination event server name. */ server = NULL; /* Set the event ID. */ baseID = 0x00000001; /* Set the message. */ message = "Starts the SAMPLE application."; /* Set the extended attributes. */ extattrs[0] = "SEVERITY=Notice"; extattrs[1] = "USER_NAME=SAMPLE_USER"; extattrs[2] = "PRODUCT_NAME=/COMPANY/APP1/SAMPLE_PRODUCT"; extattrs[3] = "OBJECT_TYPE=SAMPLE"; extattrs[4] = "OBJECT_NAME=SAMPLE_NAME"; extattrs[5] = "OBJECT_ROOT_TYPE=ROOT_SAMPLE"; extattrs[6] = "OBJECT_ROOT_NAME=ROOT_SAMPLE_NAME"; extattrs[7] = "OBJECT_ID=SAMPLE_ID"; extattrs[8] = "OCCURRENCE=START"; sprintf(starttime, "START_TIME=%ld", time(NULL)); extattrs[9] = starttime; extattrs[10] = "PLATFORM=NT"; extattrs[11] = "VERSION=0600"; extattrs[12] = "COMMON_ATTR1=NATIVE"; extattrs[13] = "COMMON_ATTR2=TRUE"; extattrs[14] = "START_ATTR1=SAMPLE1"; extattrs[15] = "START_ATTR2=SAMPLE2"; /* Register the JP1 event. */ rc = JevRegistEvent(&status, server, baseID, message, extattrs, 16); if(rc < 0) { fprintf(stderr, "JevRegistEvent() failed. status = %ld\n", status); return -1; } return 0; }