Gestire le notifiche dei server HP tramite Powershell

HP ha nel corso degli anni sviluppato una serie di software per consentire la diagnostica e la verifica dello stato di salute dell’hardware dei propri server. In particolare per quanto riguarda la serie Proliant momento esistono i seguenti tool:

  • HP System Management Homepage (SMH) ovvero una console web che si installa direttamente sul sistema da monitorare che permette di avere una panoramica sullo stato dell’hardware.
  • HP Insight Management WBEM Providers che consente di ottenere informazioni dall’hardware e renderle disponibili alla SMH, di registrare avvisi di notifica nell’event viewer in caso di problemi. I WBEM providers sono basati sullo standard Distributed Management Task Force’s (DMTF) Web-based Enterprise Management rappresentano sono un’alternativa più semplice all’approccio basato su Simple Network Management Protocol (SNMP) disponibile tramite gli HP Insight Management Agents.
  • HP Smart Storage Administrator una console web per la gestione e la configurazione dello storage e l’HP ProLiant Smart Array SAS/SATA Event Notification Service ovvero un servizio che registra nell’Event Viewer gli eventi relativi allo storage controller.
  • Hp insight diagnostics online edition una console web che permette di eseguire test diagnostici che si integra con SMH.
  • Per l’installazione e l’aggiornamento dei sistemi, dei driver e dei tool sono disponibili HP Intelligent Provisioning (IP), HP Service Pack for ProLiant e HP Smart Update Manager (HP SUM)

SMH consente di supervisionare lo stato del sistema in maniera completa, ma non consente di gestire l’invio di notifiche ad esempio tramite mail nel caso si verifichino problemi hardware.

image

Per gestire notifiche di alert è necessario utilizzare HP Systems Insight Manager (SIM), una console web tramite cui gestire Inventory, Reporting, Heath e update di Firmware e Software dei server dell’infrastruttura.

Per la problematica relativa al mancato riconoscimento del certificato digitale utilizzato da SMH e SIM in IE si veda HP Systems Insight Manager (HP SIM) and System Management Homepage (SMH) – Microsoft Internet Explorer Does Not Link Website Certificate to all IP or DNS Names Associated with the Certificate.

Vi sono però piccole realtà o scenari in cui SIM diventa una soluzione non così pratica perché basterebbe una semplice notifica mail degli eventi di warning e di errore registrati dai WBEM providers o dall’HP ProLiant Smart Array SAS/SATA Event Notification Service.

In questi scenari può tornare utile l’utilizzo di PowerShell per eseguire una query sugli eventi registrati da agent o tool HP e inviarli poi tramite mail. Per un elenco degli eventi registrati si veda ad esempio HP Insight Management WBEM Providers 9.3 for Microsoft Windows Eventlog.

Di seguito riporto uno script personalizzabile che esegue la ricerca degli eventi di errore e di warning contenti la parola HP nel campo Source registrati negli ultimi 60 minuti e li invia per mail:

HPEventNotifier.ps1

# *** Impostazioni ***
$LastMinutes = 60
$Source = “*HP*”
$SmtpServer = “NameOrIPServerSMTP
$MailFrom = “MailFromAddress
$MailTo = “MailToAddress
# ********************

# *** Ricerca eventi Error e Warning ***
$Events = Get-EventLog -LogName System -EntryType Error, Warning -Source $Source -After (Get-Date).AddMinutes(-1*$LastMinutes) -ErrorAction SilentlyContinue
$EventsCount = 0
If($Events -ne $null) {$EventsCount = ($Events | Measure).Count}

# *** Invio mail per ogni evento trovato ***
If($EventsCount -gt 0)
{
  ForEach ($event In $Events)
  {
   # *** Impostazione Subject Mail ***
   $MailSubject = $env:COMPUTERNAME
   $MailSubject = $MailSubject + ” – ” + $event.EntryType
   $MailSubject = $MailSubject + ” ” + $event.Index
   $MailSubject = $MailSubject + ” ” + $event.Source

   # *** Impostazione Body Mail ***
   $MailBody = “Time: ” + $event.TimeGenerated + “`n`n”
   $MailBody = $MailBody + “Message:`n”
   $MailBody = $MailBody + $event.Message

   # *** Invio Mail ***
   Send-MailMessage -To $MailTo -Subject $MailSubject -From $MailFrom -Body $MailBody -SmtpServer $SmtpServer
  }
}

Per automatizzare la scansione degli eventi e l’invio sarà sufficiente schedulare l’esecuzione di un file cmd che esegue lo script:

HPEventNotifier.cmd

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Scripts\HPEventNotifier\HPEventNotifier.ps1

Ovviamente occorrerà schedulare l’esecuzione ripetitiva del file cmd con un intervallo inferiore a 60 minuti, ad esempio 55 minuti, per evitare il rischio di perdere qualche evento accettando l’eventualità di poter ricevere una doppia notifica di qualche evento data l’importanza di ricevere tempestivamente gli alert di problemi correlati all’hardware.

HP ha inoltre reso disponibile una serie di 112 cmdlets tramite l’HP Scripting Tools for Windows PowerShell che permetteno di interfacciarsi con sistema di gestione HP Integrated Lights-Out (iLO).