Ok, devo ammettere che questa serie è stata molto divertente (anche per me comunque ~ I hanno avuto uno scoppio) - ma questa parte è forse di gran lunga la più divertente che ho avuto personalmente - in quanto significa che Ho avuto bisogno di sviluppare alcuni esempi di script PowerShell per il monitoraggio Exchange 2010 PowerShell utilizzando con Nagios!
Questo è uno dei doni reali per Nagios - come per sviluppare i vostri propri script di monitoraggio Powershell che restituiscono i valori per l'interfaccia di base Nagios significa che siete in sostanza utilizzando Nagios come un "wrapper" con il controllo che offre la flessibilità necessaria per monitorare praticamente ogni aspetto dei vostri sistemi di scambio.
Proprio come una veloce panoramica alla serie per quelli di voi che sono solo unisce a noi:
- Nella Parte 1
Ho spiegato come è possibile installare core Nagios 3.3.1 su un esistente server di Ubuntu 11,10 all'interno del proprio ambiente - Nella Parte 2
Ho spiegato come è possibile impostare il monitoraggio di base sul primo server Windows - che si avvale della NSClient + +, ho anche spiegato come si potrebbe impostare un servizio di base "check_nt" monitoraggio - Nella Parte 3
Ho spiegato come è possibile installare il demone NRPE sul vostro server Nagios - e quindi utilizzare la NSClient per eseguire uno script di base Powershell e segnalare l'uscita di nuovo nell'interfaccia Nagios
Powershell personalizzato per Exchange 2010 per l'utilizzo con Nagios
Ci sono un paio di cose fondamentali da ricordare quando si sviluppa script PowerShell personalizzati per l'utilizzo con Nagios:
- È necessario strutturare i vostri script in modo che sempre restituire un codice di uscita che è preceduto da una Write-Host che aggiunge una descrizione agli ultimi valori restituiti (ne parleremo più avanti)
- Se si utilizza un ambiente che ha un mix di DAG e server di base (DAG e non DAG) o per quella materia - i server che operano in più ruoli (MBX, CAS, HT) il codice degli script in modo che possano gestire l'assenza di qualsiasi specifica caratteristiche, per esempio, se si sviluppa uno script che è stato progettato per operare su server basati su DAG, è necessario codificare in logica in grado di gestire nulla caratteristiche DAG essere disponibili - come campione di vedere lo script "GetDagnfo.ps1", che è disponibile per il download qui sotto
Uscita codici PowerShell per Nagios
Come accennato in precedenza - è importante che ogni Powershell che la scrittura per l'utilizzo con rendimenti Nagios e codice di uscita.
Powershell ha la capacità di terminare l'esecuzione di un codice di uscita - questo è dimostrato qui - è possibile all'interno di script personalizzati restituisce alcun codice numerico decimale che si desidera utilizzando l'istruzione "exit".
Ma ciò detto, Nagios supporta quattro codici di exit status - che i vostri script devono essere conformi alle, questi sono i seguenti:

Codici di uscita 0 e 2 si riflettono all'interno dell'interfaccia principale Nagios in questo modo:
Codice di uscita 0: ![]()
Codice di uscita 2: ![]()
Ok, qual è lo script Powershell dietro il monitoraggio di backup?
Lo stesso script è piuttosto semplice, e controlla attualmente solo per il valore lastFullBackup sui database sono residenti sul server di Exchange monitorato.
All'interno dello script c'è una variabile denominata $ soglia che riflette il numero di giorni che possono decadere senza un backup completo prima che lo script restituirà un errore all'interfaccia Nagios.
$localServerName = Get-WmiObject -Class Win32_ComputerSystem | Select Name $ThreshHold = 2 $Results = Get-MailboxDatabase -Server $localServerName .Name -Status | Select Identity,Server,LastFullBackup | where { $_ .Server -eq $localServerName .Name} foreach ( $itm in $Results ){ if ( $itm -eq $null ){ $Output = "OK: No Databases are active on this host" $NagiosResult = 0 } else { if ( $itm .LastFullBackup -eq $null ){ $lastBackupSeed = 9999 } else { $lastBackupSeed = New-TimeSpan $( $itm .LastFullBackup) $( Get-Date ) } if ( $lastBackupSeed .days -gt $ThreshHold -or $lastBackupSeed -eq 9999){ $Res = "CRITICAL: Database Backup out of Schedule: " + $itm .Identity $Output += $Res + " " $statFlag = 1 } else { $Output += "OK: Database: " + $itm .identity + " has a recent backup" + " " } } } Write-Host $Output if ( $statFlag -eq 1){ exit 2 } else { exit 0 } Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 $ LocalServerName = Get-WmiObject-Class Win32_ComputerSystem | Nome Select $ soglia = 2 $ results = Get-MailboxDatabase-Server $ LocalServerName Nome-Status |. Identity Select, Server, LastFullBackup | dove {$ _ Server-eq $ LocalServerName Name..} foreach ($ itm in $ risultati) {if ($ itm-eq $ null) {$ output = "OK: Nessun database sono attivi su questo host" $ NagiosResult = 0 } else {if ($ itm. LastFullBackup-eq $ null) {$ lastBackupSeed = 9999} else {$ lastBackupSeed = New-TimeSpan $ ($ itm. LastFullBackup) $ (Get-Date)} if ($ lastBackupSeed. giorno-gt $ $ o-soglia lastBackupSeed-eq 9999) {$ res = "CRITICAL: Backup Database di Schedule:". + $ itm Identity $ output = $ + Res + "" $ statFlag = 1} else {$ output + = " OK: Database: ". + $ itm identità +" dispone di un backup recente "+" "}}} Write-Host $ output if ($ statFlag-eq 1) {exit 2} else {exit 0}
Impostazione script up
Come specificato nella parte 3 - ci sono 5 passi che è necessario seguire per ottenere i vostri script di monitoraggio di Exchange segnalazione nell'interfaccia Nagios - questi sono i seguenti:
- In Exchange Server in cui è stato installato il NSClient + +, Copia (o salvare) gli script nella NSClient cartella "Scripts" (questo dovrebbe essere in "C: \ Program Files \ NSClient + + \ Scripts").
- Eseguire la seguente all'interno del file NSC.ini (questo dovrebbe essere situato in "C: \ Program Files \ NSClient + + \")
Per questo esempio useremo lo script "Exchange2010BackupMonitoring.ps1".
All'interno del NSC.ini trovare la sezione intitolata [gestori nrpe], quindi aggiungere il seguente comando:
check_exBackup = cmd / c echo scripts \ Exchange2010BackupMonitoring.ps1; exit ($ lastexitcode) | powershell.exe-command - Salvare il file e quindi riavviare il servizio "NSClient + +" di servizio all'interno di Windows Services Manager
- Dal server Nagios utilizzando Filezilla - scaricare una copia della commands.cfg (che si trova in / usr / local / nagios / etc / oggetti)
Aprire entro Notepad + + e aggiungere nella definizione seguente comando
definire il comando { command_name check_exbackup command_line USER1 $ $ / check_nrpe-H HOSTADDRESS $ $-t 120-c check_exBackup }
Salvare il file e poi caricarlo di nuovo al vostro server Nagios.
- Dal server Nagios utilizzando Filezilla - scaricare una copia della windows.cfg (che si trova in / usr / local / nagios / etc / oggetti)
Aprire entro Notepad + + e aggiungere nella definizione del servizio seguente per il vostro Host Exchange:
define service { utilizzare generic-service host_name pro-Ex2010-01.prepad.local service_description DB Exchange Host check_command check_exdb }
- Accesso al server Nagios utilizzando PuTTY e da riga di comando digitare il seguente comando:
sudo / etc / init.d / nagios restart Esempi di monitoraggio script Downloads
Qui di seguito ho fornito 5 script di PowerShell di esempio che il vostro sono liberi di usare / modificare a vostro piacimento. Questi dovrebbero essere scaricato Exchange Server nelle NSCilent + + Scripts directory "C: \ Programmi \ NSClient + + \ Scripts"
Prima di usarli, è necessario assicurarsi di aver creato il servizio in questione e le definizioni dei comandi (vedi sopra).
[ Exchange2010BackupMonitoring.ps1 - 1.3 KB ]
[ Exchange2010ContentIndexMonitor.ps1 - 1 KB ]
[ GetDAGnfo.ps1 - 1 KB ]
[ GetDAGReplicationStatus.ps1 - 1 KB ]
[ GetExchangeLocalDBs.ps1 - 1 KB ]
Esempio di output all'interno di Nagios
Il seguente è un esempio di output dagli script di monitoraggio di cui sopra all'interno del mio ambiente, naturalmente, la situazione ideale è avere tutti i vostri stati di segnalazione "OK"
come potete vedere ho un problema con i backup!

In parte 5
In parte 5 sarò copre i seguenti:
- Raggruppamento server e servizi in categorie
- Risoluzione dei problemi
- Esempi di servizio di cambio Files
- Segnalazione



























comments… read them below or add one } {3 commenti ... leggere sotto di loro o aggiungere uno }
Ciao Andy, grazie per questi impressionante di how-to. Sono stati loro a fare così e funzionano perfettamente. Ho solo una domanda e spero di non sto facendo di trasmettere. Vuoi fare un how-to per mostrare grafici, forse come MRTG?
Cordiali Saluti
Brad
Hiya Brad. Sono contento che ti piace la serie. Sì, io intendo fare una parte il monitoraggio esteso - probabilmente in parte 6. Devo parte da 5 a fare dopo più un bonus spin-off due parter.
Cin cin
Hey Andy!
Grazie mille per tutto il vostro lavoro in questo. Stavo cercando di configurare Nagios su Ubuntu 11.10 e trovato il vostro blog, ed è stato molto utile. Sto utilizzando Nagios per monitorare il nostro ambiente Exchange troppo, così i tuoi messaggi sono stati sorprendenti.
Io ho una domanda, come io sono nuova di scripting e non può capire. Del database di Exchange script di Repl ritorna più s "OK" per gli stessi server, e vedo nella tua schermata fa lo stesso nel proprio ambiente. Perché è così?
Grazie ancora per tutto il vostro duro lavoro! Ho seguito passo dopo passo lungo, e sei stato un grande aiuto.