Update from Michael Tate
authorMike Rylander <mrylander@gmail.com>
Thu, 8 May 2014 15:35:30 +0000 (11:35 -0400)
committerMike Rylander <mrylander@gmail.com>
Thu, 8 May 2014 15:35:30 +0000 (11:35 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
monitoring/eg-stats/parse-eg-stats.pl

index 403175b..65070e8 100644 (file)
-#!/usr/bin/perl -w
-package main;
-use POSIX;
-use strict;
-
-
-#get date info
-my ($SEC, $MIN, $HOUR, $DAY,$MONTH,$YEAR) = (localtime(time))[0,1,2,3,4,5,6];
-$YEAR+=1900;
-$MONTH++;
-if ($DAY < 10) {
-   $DAY = "0".$DAY;
-}
-if ($MONTH < 10) {
-   $MONTH = "0".$MONTH;
-}
-
-my $posF = "/tmp/eg_stats_position.log";
-my $statsF = "/var/log/evergreen/prod/$YEAR/$MONTH/$DAY/eg_stats.log";
-my $pos; 
-my $loc;
-my $status = 0; #status is OK!
-my $info = "";
-
-#if it exists open it and get the current position
-#if not set the current position to 0
-if (-e $posF) {
-   open(DATA, "<$posF");
-   my @values = <DATA>;
-   if (@values != 2) { #make sure the array is the correct size
-      $pos = 0;
-   } else {
-      chomp($loc = $values[0]);
-      if ($loc ne $statsF) { #check to see that we are in the correct file
-         $pos = 0;
-      } else {
-         chomp($pos = $values[1]); 
-         #check to see if $pos is a valid positive integer(or 0), if not set to 0
-         if (!( $pos =~ /^\d+$/ )) { 
-            $pos = 0;
-         }
-      }
-   }
-   close DATA;
-} else {
-   $pos = 0;
-}
-#parse the file and output for Nagios if necessary
-if (-e $statsF) {
-   open(DATA, "<$statsF");
-   seek DATA, $pos, 0;
-   while(<DATA>) {
-      my($line) = $_;
-      chomp($line);
-      #check for lost controller first
-      if (($line =~ m/listener count: 0/) || ($line =~ m/controller count: 0/) || ($line =~ m/master count: 0/)){
-         if ($line =~ m/listener count: 0/) {
-            $info = $info."Lost a listener: $line - ";
-         }
-        if ($line =~ m/master count: 0/) {
-            $info = $info."Lost a master: $line - ";
-         }
-        if ($line =~ m/controller count: 0/) {
-            $info = $info."Lost a controller: $line - ";
-         }
-         $status = 2;
-      } 
-      #now check for drone ratio
-      if ($line =~ m/SERVICE/) {
-         my ($count) = $line =~ /drone count: (\d+\/\d+)/i;
-        my $ratio = eval($count);
-        my $pct = ceil($ratio * 100);
-         if ($ratio >= 0.75) {
-            $info = $info."Drone count is $pct % - $line - ";
-            $status = 1;
-         }
-         if ($ratio >= 0.9) {
-            $info = $info."Drone count is $pct % - $line - "; 
-            $status = 2;
-         }    
-      }
-      
-   }
-   $pos = tell DATA;
-   close DATA;
-} else {
-   $pos = 0;
-}
-
-#update position info
-open(DATA, ">$posF");
-print DATA "$statsF\n$pos\n";
-close DATA;
-
-if ($info eq "") {
-   $info = "EG-STATS-COLLECTOR STATUS: OK!";
-}
-
-print $info;
-exit $status;
+#!/usr/bin/perl -w\r
+package main;\r
+use POSIX;\r
+use strict;\r
+\r
+\r
+#get date info\r
+my ($SEC, $MIN, $HOUR, $DAY,$MONTH,$YEAR) = (localtime(time))[0,1,2,3,4,5,6];\r
+$YEAR+=1900;\r
+$MONTH++;\r
+if ($DAY < 10) {\r
+   $DAY = "0".$DAY;\r
+}\r
+if ($MONTH < 10) {\r
+   $MONTH = "0".$MONTH;\r
+}\r
+\r
+my $posF = "/tmp/eg_stats_position.log";\r
+use Time::Piece;\r
+my $logdate = Time::Piece->new->strftime('%Y/%m/%d');\r
+# print $logdate;\r
+my $loghour = Time::Piece->new->strftime('%H');\r
+# print $loghour;\r
+my $statsF = "/var/log/evergreen/prod/$logdate/eg_stats.$loghour.log";\r
+my $pos; \r
+my $loc;\r
+my $status = 0; #status is OK!\r
+my $info = "";\r
+\r
+#if it exists open it and get the current position\r
+#if not set the current position to 0\r
+\r
+\r
+if (-e $posF) {\r
+   open(DATA, "<$posF");\r
+   my @values = <DATA>;\r
+   if (@values != 2) { #make sure the array is the correct size\r
+      $pos = 0;\r
+   } else {\r
+      chomp($loc = $values[0]);\r
+      if ($loc ne $statsF) { #check to see that we are in the correct file\r
+         $pos = 0;\r
+      } else {\r
+         chomp($pos = $values[1]); \r
+         #check to see if $pos is a valid positive integer(or 0), if not set to 0\r
+         if (!( $pos =~ /^\d+$/ )) { \r
+            $pos = 0;\r
+         }\r
+      }\r
+   }\r
+   close DATA;\r
+} else {\r
+   $pos = 0;\r
+}\r
+\r
+#parse the file and output for Nagios if necessary\r
+if (-e $statsF) {\r
+   open(DATA, "<$statsF");\r
+   seek DATA, $pos, 0;\r
+   while(<DATA>) {\r
+      my($line) = $_;\r
+      chomp($line);\r
+      #check for lost controller first\r
+      if (($line =~ m/listener count: 0/) || ($line =~ m/controller count: 0/) || ($line =~ m/master count: 0/)){\r
+         if ($line =~ m/listener count: 0/) {\r
+            $info = $info."Lost a listener: $line - ";\r
+         }\r
+        if ($line =~ m/master count: 0/) {\r
+            $info = $info."Lost a master: $line - ";\r
+         }\r
+        if ($line =~ m/controller count: 0/) {\r
+            $info = $info."Lost a controller: $line - ";\r
+         }\r
+         $status = 2;\r
+      } \r
+      #now check for drone ratio\r
+      if ($line =~ m/SERVICE/) {\r
+         my ($count) = $line =~ /drone count: (\d+\/\d+)/i;\r
+        my $ratio = eval($count);\r
+        my $pct = ceil($ratio * 100);\r
+         if ($ratio >= 0.75) {\r
+            $info = $info."Drone count is $pct % - $line - ";\r
+            $status = 1;\r
+         }\r
+         if ($ratio >= 0.9) {\r
+            $info = $info."Drone count is $pct % - $line - "; \r
+            $status = 2;\r
+         }    \r
+      }\r
+      \r
+   }\r
+   $pos = tell DATA;\r
+   close DATA;\r
+} else {\r
+   $pos = 0;\r
+}\r
+\r
+#update position info\r
+open(DATA, ">$posF");\r
+print DATA "$statsF\n$pos\n";\r
+close DATA;\r
+\r
+if ($info eq "") {\r
+   $info = "EG-STATS-COLLECTOR STATUS: OK!";\r
+}\r
+\r
+# NEW: make state "WARN, logfile does not exist"\r
+unless (-e $statsF) {\r
+   $status = 1;\r
+   $info = "EG-STATS-COLLECTOR STATUS: WARN, current logfile not found.";\r
+   #$info = "EG-STATS-COLLECTOR STATUS: WARN; '$statsF' not found.";\r
+}\r
+\r
+\r
+print $info;\r
+print "";\r
+exit $status;\r
+\r