#!/bin/perl use strict; my $major=0; my $minor=0; my $critical=0; my $systime=0; my $syshr = 0; my $sysmin=0; my $syssec=0; $systime=`date '+%H:%M:%S'`; ($syshr,$sysmin,$syssec) = split(/:/,$systime); printf("Hr: $syshr Min: $sysmin Sec: $syssec"); my $errorcount = 0; my $k = 0; my @logdesc; chdir('/opt/vk/app/osa/ecp/current/log/') or die "chdir Failed $! \n"; ### This is the array in which we are grepping Critical and Major alarms @logdesc=`egrep 'MAJOR|CRITICAL' AppOsaEcp.log | cut -f 1-2 -d "]" | sort | uniq`; # printf("##### 1st line $logdesc[0]\n"); my $arraycount = 0 ; $arraycount=@logdesc; my @fields; my @errorstring; @fields=split(/\s+/,$logdesc[0]); printf("\n\nCritical and Major errors observerd during last one hour are : \n\n"); my $i=0; my $loghr=0; my $logmin=0; my $logsec=0; my @errorarray; my $cnt=0; my $s=0; my $matchcount=0; ###### Parsing the log file to find alarms depending on time-stamp to find erros in last one hour for($i=0;$i<=$arraycount;$i++) { (@fields) = split(/\s+/,$logdesc[$i]); ($loghr,$logmin,$logsec) = split(/:/,$fields[1]); if(($syshr == 0) && ($loghr == 23)) { if( $logmin > $sysmin ) { if( $fields[3] =~ /MAJOR/ ) { $major++; } if( $fields[3] =~ /CRITICAL/ ) { $critical++; } if( $fields[3] =~ /MINOR/ ) { $minor++; } $errorarray[$cnt++] = $fields[4]; for($s=0;$s<$cnt;$s++) { if( $errorarray[$s] eq "$fields[4]" ) { $matchcount++; } } (@errorstring) = split(/]/,$logdesc[$i]); if( $matchcount == 1 ) { printf("$fields[0] $fields[1] $errorstring[1]"); } } } if(( $syshr >= 0) && ($loghr >= 0)) { my $dhr = 0; $dhr=$syshr-$loghr; if( $dhr == 1) { if( $logmin >= $sysmin ) { if( $fields[3] =~ /MAJOR/ ) { $major++; } if( $fields[3] =~ /CRITICAL/ ) { $critical++; } if( $fields[3] =~ /MINOR/ ) { $minor++; } $errorarray[$cnt++] = $fields[4]; for($s=0;$s<$cnt;$s++) { if( $errorarray[$s] eq "$fields[4]" ) { $matchcount++; } } (@errorstring) = split(/]/,$logdesc[$i]); if( $matchcount == 1 ) { printf("$fields[0] $fields[1] $errorstring[1]"); } } } if( $dhr == 0) { if( $logmin < $sysmin ) { if( $fields[3] =~ /MAJOR/ ) { $major++; } if( $fields[3] =~ /CRITICAL/ ) { $critical++; } if( $fields[3] =~ /MINOR/ ) { $minor++; } $errorarray[$cnt++] = $fields[6]; for($s=0;$s<$cnt;$s++) { if( $errorarray[$s] eq "$fields[4]" ) { $matchcount++; } } (@errorstring) = split(/]/,$logdesc[$i]); if( $matchcount == 1 ) { printf("$fields[0] $fields[1] $errorstring[1]"); } } } } } print "\n\nCount of Alarms in Last One Hour .............. \n\n"; print "CRITICAL = $critical\nMAJOR = $major\nMINOR = $minor \n\n";