SOFTWARE DI MONITORAGGIO OPEN SOURCE Monitoring di sistemi e di applicazioni http://it.linkedin.com/in/robimassa blogs.sysadmin.it/robimassa http://it.linkedin.com/in/robimassa Zenoss Nato nel 2002 • Basato su Zope, Python, Net-SNMP, RRDtool, MySQL, Twisted • Versione Core gratuita basata su GPL v2 • RPM per Redhat o Centos • Appliance per VMWARE • ZenPacks plug-in sviluppati dalla community per monitoring di specifici workloads (device, software) • Versione commerciale Enterprise basata sulla Core (supporto + features+certificazione per monitoring SQL e Exchange) Zenoss: configurazione SNMP IMPOSTAZIONE SERVIZIO SNMP SU HOST WIN IMPOSTAZIONE FILE SNMPD.CONF SU HOST LINUX #################################################### Access Control #################################################### com2sec local localhost monitoring com2sec zenoss_host 10.10.1.71/32 monitoring com2sec robipc 10.10.1.70/32 monitoring group MyRWGroup any group MyROGroup any local mynetwork robipc view all included .1 80 view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc access MyROGroup "" any noauth 0 all none none #################################################### # System contact information #################################################### syslocation Sala Server syscontact [email protected] trapsink cnslsrv.scroce.loc servers Zenoss: raccolta dati Traffico di rete tramite SNMP n° sessioni RDP tramite WMI NAGIOS • Versione gratuita basata su GPL v2 • Plug-in sviluppati dalla community (shell scripts, C++, Perl, Ruby, Python, PHP, C#, etc..) per monitoring di specifici workloads (device, software) • Nagios Agents • NRPE (plug-in remoto) • NRDP (HTT/S, XML) • NSClient++ (client remoto su TCP 1248) • Versione commerciale Nagios XI™ con features ulteriori e maggiore automazione Nato nel 1996 Nagios: modalità di monitoraggio Esecuzione comando Agent less Ritorno dello stato Server Nagios Oggetto da monitorare check_command check_disk_smb!archivi!DOMINIO!USERNAME!PASSWORD!80!90 Esecuzione comando Ritorno dello stato Server Nagios NRPE TCP/5666 Agente remoto (NRPE) check_command check_nrpe!comando_eseguito_sul_server_remoto Oggetto da monitorare Nagios dichiarazione di un servizio define service { service_description use host_name is_volatile check_period max_check_attempts normal_check_interval retry_check_interval contact_groups notification_options notification_interval notification_period check_command } Comando lato server Nagios Controllo servizio ORACLE Cluster Takover generic-service cluster.dominio.locale 0 24x7 4 5 1 cluster_takeover w,u,c,r 960 24x7 check_nrpe!check_rhcluster_status Comando lato host monitorato con NRPE command[check_rhcluster_status]= /usr/lib64/nagios/plugins/check_rhcluster_status servizio_in_cluster nodo1 nodo2 Nagios implementazione di un plug-in #!/bin/bash # Plugin di controllo stato servizi in Cluster Robi Massa vrs. 1.0 2011 # ./controllo_servizi_cluster 1 2 3 # N.B. il comando viene eseguito con il demone NRPE che normalmente ha privilegi ridotti rispetto a root, in alcune versioni di RHCLUSTER il comando CLUSTAT # non funziona se non lanciato da root e' necessario quindi eseguire il comando chmod u+s /usr/sbin/clustat per consentire il funzionamento corretto PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^[^\\/]*$,,'` . $PROGPATH/utils.sh STATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 #Parametri NORMALE=condizione in cui il servizio gira sul nodo designato, SERVIZIO =nome servizio da controllare SERVIZIO=$1 NORMALE=$2 VARSERVICE=service: #usata per costruire la parte invariabile della stringa di confronto VARSTARTED=started #usata per costruire la parte invariabile della stringa di confronto #Estrazione output comando clustat relativo alla riga del servizio monitorato eliminando gli spazi (senza formattazione vi sono caratteri che falsano il confronto) RETVAL=$(/usr/sbin/clustat |grep -w $SERVIZIO | sed 's/ //g') # costruzione stringa confronto nel modo in cui dovrebbe essere presentata se il servizio fosse sul nodo corretto CONFRONTO=$VARSERVICE$SERVIZIO$NORMALE$VARSTARTED if [[ "$RETVAL" == "$CONFRONTO" ]] ; then echo "OK il servizio $SERVIZIO e' sul nodo $NORMALE" exit $STATE_OK elif [[ "$RETVAL" != "$CONFRONTO" ]] ; then echo "ATTENZIONE il servizio $SERVIZIO non e' sul nodo $NORMALE" exit $STATE_WARNING else echo "controllo dello stato del servizio $SERVIZIO impossibile verificare lo stato possibile BLOCCO" exit $STATE_CRITICAL fi Zenoss vs Nagios • Buona integrazione con WMI • Configurabile tramite interfaccia WEB • Nasce per raccogliere dati e presentarli graficamente • Molto flessibile • Configurazione poco amichevole (tramite file di testo)* • Nasce per eseguire il test delle stato di attività e visualizzarlo graficamente *Esistono progetti che prevedono utilità di configurazione grafiche del Nagios p.es NagiosQL DEMO Grazie. QUESTIONS & ANSWERS