ラベル:OPMSGで良い場合はerrloggerコマンドが使用できます。
# errlogger "This is test message"
---------------------------------------------------------------------------
ラベル: OPMSG
ID: AA8AB241
日付/時刻: XXXXX
順序番号: XXX
マシン ID: XXXXX
ノード ID: XXXXX
クラス: O
タイプ: TEMP
WPAR: Global
リソース名: OPERATOR
説明
オペレーター通知
ユーザー側の原因
errlogger コマンド
推奨される処置
詳細データを検討してください
詳細データ
errlogger コマンドからのメッセージ
This is test message
---------------------------------------------------------------------------
ラベル指定したい場合はras_loggerコマンドがあります。
# /usr/lib/ras/ras_logger << EOF^JSC_DISK_ERR4^JTESTDISK^J0^J8^JEOF
※^JはCtrl+V->Jで入力する改行コードです。
---------------------------------------------------------------------------
ラベル: SC_DISK_ERR4
ID: DCB47997
日付/時刻: XXXXX
順序番号: XXX
マシン ID: XXXXX
ノード ID: XXXXX
クラス: H
タイプ: TEMP
WPAR: Global
リソース名: TESTDISK
リソース・クラス: NONE
リソース・タイプ: NONE
ロケーション:
説明
ディスク操作エラー
考えられる原因
メディア
DASD 装置
ユーザー側の原因
メディアに欠陥
推奨される処置
除去可能なメディアの場合は、メディアを変更して再試行してください
問題判別手順を実行してください
障害の原因
メディア
ディスク・ドライブ
推奨される処置
除去可能なメディアの場合は、メディアを変更して再試行してください
問題判別手順を実行してください
詳細データ
パス ID
8
センス・データ
---------------------------------------------------------------------------
detail_data(センスデータ)までこだわりたい場合は、errlogサブルーチンになります。
# cat errlogtest.c
/*
/usr/lpp/devices.fcp.disk/inst_root/devices.fcp.disk.rte.err
+ SC_DISK_ERR4:
Comment = "CD-ROM, disk, or read/write optical recovered error"
catname = "scdisk.cat"
Class = H
Report = TRUE
Log = TRUE
Alert = FALSE
Err_Type = TEMP
Err_Desc = 1312
Prob_Causes = 5000, 6310
User_Causes = 5100
User_Actions = 1601, 00E1
Fail_Causes = 5000, 6310
Fail_Actions = 1601,00E1
Detail_Data = 2, {3, 2, "PATH ID"}, DEC
Detail_Data = 302, 11, HEX
# ibm-clang -g -lrts -o errlogtest errlogtest.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/err_rec.h>
#include <sys/errids.h>
#include <string.h>
#include <memory.h>
int main(int argc, char *argv[]){
char *detail_data = "This is test data.";
char path_id = 6;
struct err_rec *err_record;
err_record = (struct err_rec *)calloc(1,sizeof(ERR_REC(ERR_REC_MAX)));
memset(err_record, 0x00, sizeof(ERR_REC(ERR_REC_MAX)));
err_record->error_id = 0xDCB47997;
strncpy(err_record->resource_name, "TESTDSIK", 9);
err_record->detail_data[1] = path_id;
strncpy(&err_record->detail_data[2], &detail_data[0], ERR_REC_MAX-2);
errlog(err_record, sizeof(ERR_REC(ERR_REC_MAX)));
exit(0);
}
error_idに指定するIDはerrpt -tコマンドで確認できます。
# ./errlogtest
---------------------------------------------------------------------------
ラベル: SC_DISK_ERR4
ID: DCB47997
日付/時刻: XXXXX
順序番号: XXX
マシン ID: XXXXX
ノード ID: XXXXX
クラス: H
タイプ: TEMP
WPAR: Global
リソース名: TESTDSIK
リソース・クラス: NONE
リソース・タイプ: NONE
ロケーション:
説明
ディスク操作エラー
考えられる原因
メディア
DASD 装置
ユーザー側の原因
メディアに欠陥
推奨される処置
除去可能なメディアの場合は、メディアを変更して再試行してください
問題判別手順を実行してください
障害の原因
メディア
ディスク・ドライブ
推奨される処置
除去可能なメディアの場合は、メディアを変更して再試行してください
問題判別手順を実行してください
詳細データ
パス ID
6
センス・データ
5468 6973 2069 7320 7465 7374 2064 6174 612E 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000
---------------------------------------------------------------------------
なお、センスデータが不要なラベルを使用する場合は下記のようにerr_rec0構造体を使用できます。
#include <stdio.h>
#include <stdlib.h>
#include <sys/err_rec.h>
#include <sys/errids.h>
#include <string.h>
#include <memory.h>
int main(int argc, char *argv[]){
struct err_rec0 err_record;
memset(&err_record, 0x00, sizeof(struct err_rec0));
err_record.error_id = 0xDCB47997;
strncpy(err_record.resource_name, "TESTDSIK", 9);
errlog(&err_record, sizeof(struct err_rec0));
exit(0);
}
注意:
今回は方法の紹介のみですので、エラーテンプレートの内容などはAIXのマニュアルを参照ください。