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イベント発行関数の引数名です。
表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 |
表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; /* リターンコード */
long status = 0; /* 詳細エラーコード */
const char* server; /* イベントサーバ名 */
long baseID; /* イベントID */
const char* message; /* メッセージ */
char starttime[32];
const char* extattrs[16]; /* 拡張属性を格納するための配列 */
/* 登録先イベントサーバ名を設定します */
server = NULL;
/* イベントIDを設定します */
baseID = 0x00000001;
/* メッセージを設定します */
message = "Starts the SAMPLE application.";
/* 拡張属性を設定します */
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";
/* JP1イベントを登録します */
rc = JevRegistEvent(&status,
server,
baseID,
message,
extattrs,
16);
if(rc < 0) {
fprintf(stderr,
"JevRegistEvent() failed. status = %ld¥n",
status);
return -1;
}
return 0;
}