2011-01-14 3 views
6

I (come la maggior parte degli amministratori di tecnologia immagino) hanno un bel po 'di informazioni sullo stato dei servizi di linea nella mia casella di posta. Tuttavia, quando una email di servizio fallisce, ovviamente non viene inviata alcuna email. Quindi voglio semplicemente un servizio che guardi nella mia casella di posta dicendo "Ehi questo servizio non ha inviato un rapporto email ieri - qualcosa di sbagliato!".Ricevi un avviso se non è arrivata un'e-mail di rapporto di pianificazione prevista

Questo dovrebbe essere risolto da qualche parte credo. Forse Gmail (o qualche altro provider di posta elettronica) ha un servizio di questo tipo, sarebbe fantastico.

risposta

3

Non sarebbe una soluzione migliore per avere una soluzione di monitoraggio centralizzata come Nagios che si configura in modo tale da inviare solo notifiche quando un servizio perde il suo battito cardiaco, raggiunge alte temperature, esaurisce il carburante? E poi via corso di una seconda soluzione di monitoraggio che controlla la soluzione di monitoraggio principale ....

http://www.nagios.org/documentation

io non sono a conoscenza di qualsiasi servizio che descrivi, ma una routine manuale potrebbe andare in questo modo:

Avere una struttura di cartelle/tag in questo modo:

Services\Hourly-[NumberOfServices] (or add a folder per service) 
Services\Daily-[NumberOfServicves] 
Services\Weekly-[NumberOfServicves] 
Services\Monthly-[NumberOfServicves] 

hanno regole di posta in arrivo per filtrare ogni notifica servizio specifico e spostarlo nella cartella giusta in base alla sua tempistica prevista.

Wakeup ogni ora e controllare se ci sono messaggi non letti nella cartella Hourly. Il numero di messaggi non letti deve essere uguale al numero di servizi menzionati nella cartella. Leggi/elaborali e assicurati che tutti li contrassegnino come letti. Qualsiasi servizio che non è stato inviato per e-mail viene facilmente individuato.

Sveglia alle 0:00 e controllare se nella cartella quotidiana sono presenti messaggi non letti. ecc. ecc.

Sveglia alle 0:00 e sabato e controllare se nella cartella Settimanale ci sono messaggi non letti. ecc .....

Sveglia alle 0:00 del primo del mese e controllare se nella cartella Settimanale ci sono messaggi non letti. ecc ecc ecc ...

Il mio consiglio sarebbe quello di ridurre il rumore generato dai servizi.

Se vi sentite ancora avete bisogno di un servizio che può fornire solo un'implementazione molto molto Basic .NET o meno sulla base del processo di cui sopra e funziona con gmail ... Questo è anche portatile per PowerShell ...

static void Main(string[] args) 
     { 
      var resolver = new XmlUrlResolver 
      { 
       Credentials = new NetworkCredential("yourgoolgeaccount", "yourpassword") 
      }; 

      var settings = new XmlReaderSettings(); 

      settings.XmlResolver = resolver; 

      var xr = XmlReader 
       .Create("https://mail.google.com/mail/feed/atom/[name of your filter]" 
       , settings); 

      var navigator = new XPathDocument(xr).CreateNavigator(); 

      var ns = new XmlNamespaceManager(new NameTable()); 
      ns.AddNamespace("fd", "http://purl.org/atom/ns#"); 

      var fullcountNode = navigator.SelectSingleNode(
       "/fd:feed/fd:fullcount" 
       , ns); 

      Console.WriteLine(fullcountNode.Value); 

      int fullcount = Int32.Parse(fullcountNode.Value); 
      int expectCount = 10; 

      if (expectCount > fullcount) 
      { 
       Console.WriteLine("*** NOT EVERY ONE REPORTED BACK"); 
      } 
} 
+0

Molto interessante, grazie. Anch'io ero nel lettore di atomi di Gmail. Proveremo. Nagios è sembrato un po 'complicato immergersi in (?) – joeriks

+0

@joeriks Beh, c'è sempre un compromesso tra le tue esigenze e uno strumento, ma ho avuto nagios attivo e funzionante su un debian vpc in 30 minuti e ho fatto spam a tutto il mio team all'interno l'ora ... – rene

2

Hai menzionato Gmail, quindi potresti essere interessato a googlecl, che ti offre i comandi da riga di comando per elementi come Google Calendar e Documenti. Purtroppo non supportano ancora Gmail, ma se la tua preferenza a lungo termine è quella di utilizzare un account Gmail come hub dei tuoi rapporti di stato, googlecl potrebbe essere la soluzione migliore.

A breve termine, puoi provare googlecl adesso utilizzando i comandi per Calendar, Blogger o Documenti, che sono già supportati. Ad esempio, questi comandi aggiungono eventi a Google Calendar:

google calendar add --cal server1 "I'm still alive at 13:45 today" 
google calendar add "Server 1 is still alive at 2011-02-08 19:43" 

...e questi comandi interrogare il calendario:

google calendar list --fields title,when,where --cal "commitments" 
google calendar list -q party --cal ".*" 

Vieni a pensarci bene, si può anche scoprire che Calendar, Blogger o Docs sono un luogo più appropriato di Gmail per il monitoraggio aggiornamenti di stato. Ad esempio, un foglio di calcolo o un formato di calendario dovrebbe facilitare la generazione di una rappresentazione grafica di quando un determinato servizio era attivo o inattivo.

È ancora necessario scrivere un piccolo programma che utilizza googlecl per interrogare il calendario (o blog, o documenti, o qualsiasi altra cosa), ma una volta che avete a disposizione semplici righe di comando, il resto dovrebbe essere piuttosto semplice. Ecco un link per ulteriori informazioni su GoogleCL:

http://code.google.com/p/googlecl/

Se davvero si vuole utilizzare Gmail, e usarlo in questo momento, offrono un'interfaccia IMAP. Utilizzando IMAP, è possibile eseguire numerose semplici operazioni, ad esempio determinare se esiste un messaggio che contiene una riga dell'oggetto specificata. Ecco un buon posto per conoscere i dettagli:

http://mail.google.com/support/bin/answer.py?hl=en&answer=75725

Ecco un rapido esempio che utilizza IMAP e Python per elencare i dieci messaggi di posta elettronica più-recenti che hanno un determinato "Etichetta" Gmail:



import getpass, imaplib 
# These gmail_* utilties are from https://github.com/drewbuschhorn/gmail_imap                         
import gmail_mailboxes, gmail_messages, gmail_message 

# Update these next lines manually, or turn them into parms or somesuch.                           
gmail_account_name = "[email protected]" # Your full gmail address.                          
mailbox_name = "StatusReports" # Use Gmail "labels" to tag the relevant msgs.                         

class gmail_imap: 
    def __init__ (self, username, password): 
     self.imap_server = imaplib.IMAP4_SSL("imap.gmail.com",993) 
     self.username = username 
     self.password = password 
     self.loggedIn = False 
     self.mailboxes = gmail_mailboxes.gmail_mailboxes(self) 
     self.messages = gmail_messages.gmail_messages(self) 
    def login (self): 
     self.imap_server.login(self.username,self.password) 
     self.loggedIn = True 
    def logout (self): 
     self.imap_server.close() 
     self.imap_server.logout() 
     self.loggedIn = False 

# Right now this prints a summary of the most-recent ten (or so) messages                          
# which have been labelled in Gmail with the string found in mailbox_name.                          
# It won't work unless you've used Gmail settings to allow IMAP access.                           
if __name__ == '__main__': 
    gmail = gmail_imap(gmail_account_name,getpass.getpass()) 
    gmail.messages.process(mailbox_name) 
    for next in gmail.messages: 
     message = gmail.messages.getMessage(next.uid) 
     # This is a good point in the code to insert some kind of search                           
     # of gmail.messages. Instead of unconditionally printing every                           
     # entry (which is what the code below does), issue some sort of                           
     # warning if the expected email (message.From and message.Subject)                           
     # did not arrive within the expected time frame (message.date).                           
     print message.date, message.From, message.Subject 
    gmail.logout() 

Come indicato nei commenti del codice, è possibile adattarlo per emettere una sorta di avviso se i messaggi più recenti in quella cassetta postale non contengono un messaggio previsto. Quindi esegui il programma Python una volta al giorno (o qualsiasi altro periodo di tempo richiesto) per vedere se il messaggio email previsto non è mai stato ricevuto.

+0

Ok. Mi piace l'idea di utilizzare un foglio di calcolo per una bella rappresentazione visiva: l'API di Google Spreadsheets è piacevole. Potrei forse impostare le regole nella prima colonna del foglio e avere un servizio che esegue in qualche modo gli stati di compilazione in una colonna per ogni giorno. E un altro servizio che segnala se la somma degli stati non è come previsto. Ma - speravo davvero in una soluzione pronta. – joeriks