On Mon, Oct 13, 2008 at 02:45:18PM +0200, [EMAIL PROTECTED] wrote:
> I need a CSV report (generated daily to import into Excel) that says which
> models were alarmed critical from which time on for how long during
> yesterday (i.e. an outage report which was AFAIR part of the old Report
> Generator). As easy as it seems, I have come along a few problems and need
> a little push into the right direction.
Consider using AlarmNotifier.
Below is some sample code for logging every event, along with severity, time,
model, etc. Feedback appreciated.
alarmrc:
VNM_MAIL_TIMEOUT=600000
VNM_CONNECT_TIME_LIMIT=60000
KEEP_ALIVE_TIMEOUT=30000
KEEP_ALIVE_INTERVAL=60000
GET_GRAY_INITIAL_ALARMS=false
GET_EXISTING_ALARMS=false
UPDATE_EXISTING_ALARMS=true
USE_DEVICE_NETWORK_ADDRESS=true
SEND_EVENT_UPDATES=true
USE_NEW_INTERFACE=true
EXTRA_ATTRS_AS_ENVVARS=
EXTRA_ATTRS_AS_ARGS=0x0023000e,0x11f51,0x12022
UPDATE_ATTRS=0x11f4d,0x12022
GET_PROBABLE_CAUSES=true
GET_EVENTS=true
SHOW_ALL_EVENTS=true
MSG_TIMESTAMP_FORMAT=%X %x
LANDSCAPE=1600
SEND_ALARM_DELAY=1000
SET_SCRIPT=/tmp/logger/alarm_logger_set.pl
CLEAR_SCRIPT=/tmp/logger/alarm_logger_clear.pl
UPDATE_SCRIPT=/tmp/logger/alarm_logger_update.pl
alarm_logger.pl:
#!/usr/bin/env perl
# modify as required, but keep this code light as it's executed for every
# alarm action (set, clear, update).
use warnings;
use strict;
my ($action) = ( $0 =~ /alarm_logger_(\w+)\.pl/ );
$action = uc $action;
my @default_args = (
'Date', # 08/22/2008
'Time', # 13:50:01
'Model_Type', # Pingable
'Model_Name', # router1
'Alarm_ID', # 26671
#'Global_Alarm_ID',
'Severity', # CRITICAL
'Cause', # 10009
'Repair_Person', #
'Server', # server1
'Landscape', # 0x9000000
'Model_Handle', # 0x9000986
'Model_Type_Handle',# 0x10290
'IP_Address', # 192.168.37.132
'Security_String', #
'Alarm_State', # NEW
'Acknowledged', # FALSE
'Clearable', # FALSE
'Dummy', # FALSE
'Dummy', #
'Dummy', # 0
'Dummy', #
'Dummy', # 23150
'Dummy', #
'Device_Type', # IP Device
);
my @extra_args = qw(
Cleared_By_User_Name
Trouble_Ticket_ID
);
my @args = (@default_args, @extra_args);
if ( @args != @ARGV ) {
die "Arglist length mismatch detected: @ARGV\n";
}
my %alarm_details;
@[EMAIL PROTECTED]@ARGV;
$alarm_details{Action}=$action;
$alarm_details{Prob_Cause}=$ENV{PCAUSE};
$alarm_details{Prob_Cause}=~s/\n.*//xms;
$alarm_details{Event_Msg}=$ENV{EVENTMSG};
#use Data::Dumper;
#warn Dumper \%alarm_details;
# modify to output fields of interest
print "LOG:",
join(",",@alarm_details{qw(Server Model_Name Date Time Action
Severity Alarm_ID Prob_Cause Acknowledged Trouble_Ticket_ID
Cleared_By_User_Name)}),
"\n";
Running:
mkdir /tmp/logger
cp alarm_logger.pl /tmp/logger
cp alarmrc /tmp/logger
cd /tmp/logger
ln -s alarm_logger.pl alarm_logger_set.pl
ln -s alarm_logger.pl alarm_logger_clear.pl
ln -s alarm_logger.pl alarm_logger_update.pl
$SPECROOT/Notifier/AlarmNotifier -r /tmp/logger/alarmrc >
/tmp/logger/output.log
Output looks like:
LOG:server1,router1,10/13/2008,09:45:08,SET,CRITICAL,223507,DEVICE HAS
STOPPED RESPONDING TO POLLS,FALSE,,N/A
--
yathrib
---
To unsubscribe from spectrum, send email to [EMAIL PROTECTED] with the body:
unsubscribe spectrum [EMAIL PROTECTED]