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]

Reply via email to