2.2.1 JP1イベントを発行する手順

JP1イベントを発行するための作業手順を示します。

作業の流れは次のとおりです。

  1. 発行するJP1イベントの種類とイベント属性を決める
  2. JP1イベント発行関数を使用してコーディングする
  3. ソースファイルをコンパイルする

なお,JP1イベントに付加したユーザー独自のイベント属性をJP1/IM - Viewに表示できるようにするには,このあとJP1/IMで,JP1/IM - Managerがインストールされたマシン上に,次の定義ファイルを作成する必要があります。

JP1/IMでこれらの定義ファイルを作成する方法については,マニュアル「JP1/Integrated Management - Manager コマンド・定義ファイルリファレンス」を参照してください。

<この項の構成>
(1) 発行するJP1イベントの種類とイベント属性を決める
(2) JP1イベント発行関数を使用してコーディングする

(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 開始イベントの属性

属性の種別項目属性名内容
基本属性イベントID0x00000001
メッセージ「Starts the SAMPLE application.」
拡張属性
(共通情報)
重大度SEVERITYNotice
ユーザー名USER_NAMESAMPLE_USER
プロダクト名PRODUCT_NAME/COMPANY/APP1/SAMPLE_PRODUCT
(プロダクトの名称)
オブジェクトタイプOBJECT_TYPESAMPLE
オブジェクト名OBJECT_NAMESAMPLE_NAME
登録名タイプROOT_OBJECT_TYPEROOT_SAMPLE
登録名ROOT_OBJECT_NAMEROOT_SAMPLE_NAME
オブジェクトIDOBJECT_IDSAMPLE_ID
事象種別OCCURRENCESTART
開始時刻START_TIMESAMPLEアプリケーションの開始時刻。UTC 1970年1月1日 00:00:00からの秒数。
プラットフォーム種別PLATFORMNT
バージョン情報ACTION_VERSION0600
拡張属性
(固有情報)
SAMPLE共通属性1COMMON_ATTR1NATIVE
SAMPLE共通属性2COMMON_ATTR2TRUE
SAMPLE開始属性1START_ATTR1SAMPLE1
SAMPLE開始属性2START_ATTR2SAMPLE2
イベント属性定義(拡張属性(extattrs)):異常終了イベント
SAMPLEアプリケーションの異常終了イベントには,次の属性を定義します。

表2-3 異常終了イベントの属性

属性の種別項目属性名内容
基本属性イベントID0x00000002
メッセージ「The SAMPLE application terminated abnormally.」
拡張属性
(共通情報)
重大度SEVERITYError
ユーザー名USER_NAMESAMPLE_USER
プロダクト名PRODUCT_NAME/COMPANY/APP1/SAMPLE_PRODUCT
(プロダクトの名称)
オブジェクトタイプOBJECT_TYPESAMPLE
オブジェクト名OBJECT_NAMESAMPLE_NAME
登録名タイプROOT_OBJECT_TYPEROOT_SAMPLE
登録名ROOT_OBJECT_NAMEROOT_SAMPLE_NAME
オブジェクトIDOBJECT_IDSAMPLE_ID
事象種別OCCURRENCEEND
終了時刻END_TIMESAMPLEアプリケーションの終了時刻。UTC 1970年1月1日 00:00:00からの秒数。
終了コードRESULT_CODESAMPLEアプリケーション終了時の終了コード
プラットフォーム種別PLATFORMNT
バージョン情報ACTION_VERSION0600
拡張属性
(固有情報)
SAMPLE共通属性1COMMON_ATTR1NATIVE
SAMPLE共通属性2COMMON_ATTR2TRUE
SAMPLE終了属性1END_ATTR1SAMPLE1
SAMPLE終了属性2END_ATTR2SAMPLE2

(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;
}