Changeset 191 for Evidence


Ignore:
Timestamp:
03/29/10 10:43:21 (14 years ago)
Author:
ogrimm
Message:
Implemented automatic email alarm if server down
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Evidence/Alarm.cc

    r181 r191  
    3838        char *AlarmSummary;
    3939        int MasterAlarm;
    40         int *State;   
     40        int *State;
     41        bool *Warned;   
    4142    char **Server;
    4243    unsigned int NumServers;
     
    7374  StatusService = new DimStampedInfo* [NumServers];
    7475  State = new int [NumServers];
    75  
     76  Warned = new bool [NumServers];
     77
    7678  for (int i=0; i<NumServers; i++) {
    7779    char *Buffer = new char [strlen(Server[i])+10];
     
    158160        if (strcmp(ServerName, Alarm.Server[i]) == 0) Exists = true;
    159161      }
    160       if (!Exists) Alarm.State[i] = 4;
     162
     163      if (Exists) {
     164                Alarm.Warned[i] = false;
     165                continue;
     166          }
     167
     168          Alarm.State[i] = 4;
     169
     170          // If server unavailable, send alarm message once
     171          if (Alarm.Warned[i] == false) {
     172                Alarm.Warned[i] = true;
     173                char *Message;
     174                time_t Time = time(NULL);
     175                if (asprintf(&Message, "echo \"Server unavailable at %s\"|mail -s \"Evidence Alarm for '%s'\" %s", ctime(&Time), Alarm.Server[i], Alarm.GetConfig("email","")) != -1) {
     176                  system(Message);
     177                  free(Message);
     178                }
     179          }
    161180    }
    162181   
Note: See TracChangeset for help on using the changeset viewer.