giovedì, maggio 23, 2013

Nagios check vmware esx - CentOS 6

- post<li> - Permalink

Monitorare molti aspetti di VMWare Esxi con Nagios può essere molto semplice se si riescono a mettere in fila alcuni problemi creati da guide che già a distanza di un anno possono essere datate e quindi non più valide.

Mi segno qui i passi anche per mia futura memoria:
  1. Installazione Perl-SDK di VMware 5.1
  2. Installazione / configurazione Op5 check_esx (check_vmware_api) plugin for Nagios
  3. Configurazione Nagios

Ambiente:


Procedura:

  1. CentOS, Nagios e PNP4Nagios li considero già installati e funzionanti

  2. Scaricare, una volta autenticati,  e installare Perl-SDK di VMware 5.1

    •  installare un po' di pre-requisiti con il comando:
      yum -y install openssl-devel perl-Archive-Zip perl-Class-MethodMaker uuid-perl perl-SOAP-Lite perl-XML-SAX perl-XML-NamespaceSupport perl-XML-LibXML perl-MIME-Lite perl-MIME-Types perl-MailTools perl-TimeDate uuid libuuid perl-Data-Dump perl-UUID
    • estrarre il file VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64.tar.gz ed lanciare l'installazione
      tar zxvf VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64.tar.gz
      cd vmware-vsphere-cli-distrib
      ./vmware-install.pl
    •  Qui sorgono due problemi che si risolvono così
      • L'installazione del perl-SDK di VMware si blocca perche chiede l'httpproxy e l'ftpproxy anche se non sono necessari. Modificare il file vmware-install.pl in questo modo
        my $httpproxy =1;
        my $ftpproxy =1;
      • Non riesce a installare il componente perl UUID. Io la soluzione l'ho trovata qui:
        yum install libuuid-devel
        perl -MCPAN -e'install UUID'
    • Ora i problemi dovrebbero essere risolti e quindi si può rilanciare il comando:
      ./vmware-install.pl
  3. Installare perl-Nagios-Plugin con il comando

    yum install perl-Nagios-Plugin
  4. Scaricare il plugin di Op5 check_vmware_api.pl:

    cd /usr/local/nagios/libexec/
    wget "http://git.op5.org/git/?p=nagios/op5plugins.git;a=blob_plain;f=check_vmware_api.pl" -O check_vmware_api.pl
    chmod +x check_vmware_api.pl
    chown nagios.nagios check_vmware_api.pl
  5. Configurare un Utente dentro a ESXi con permessi in sola lettura:

    • "Tramite vSphere Client –> Local Users & Groups, creare un utente che sarà utilizzato dal plugin per monitorare il sistema. Prestare attenzione al formato della password che richiede certi criteri di password complexity." Una buona password potrebbe essere quella suggerita da Come scegliere una password 2 ovvero due parole divise da un numero e almeno una maiuscola tipo passione4Patata
    • "In vSphere Client –> Permissions, assegnare il ruolo di Read-only all’utente appena creato e cliccare su OK."









  6. Ora possiamo testare il funzionamento del plugin con i comandi:

    /usr/local/nagios/libexec/check_vmware_api.pl -H IpEsxiHost -u UtenteCreato -p PasswordScelta -l runtime
    CHECK_VMWARE_API.PL OK - 13/13 VMs up, overall status=green, connection state=connected, maintenance=no, All 194 health checks are Green, 2 config issue(s) | vmcount=13units;; health_issues=0;; config_issues=2;;

    oppure
    /usr/local/nagios/libexec/check_vmware_api.pl --H IpEsxiHost -u UtenteCreato -p PasswordScelta -l cpu -s usage -w 80 -c 90
    CHECK_VMWARE_API.PL OK - cpu usage=9.12 % | cpu_usage=9.12%;80;90
  7. E' giunta l'ora di configurare Nagios!

    •  Dentro al file /usr/local/nagios/etc/resource.cfg andiamo ad aggiungere
      ##Usati dal plugin check_vmware_api.pl 20130521 - http://www.feub.net/2010/12/monitoring-vmware-esxi-and-vsphere-with-nagios/
      $USER11$=UtenteCreato
      $USER12$=PasswordScelta
    • Al file /usr/local/nagios/etc/objects/commands.cfg andiamo aggiungere questi template
      #21/05/2013 - DG
      # check vmware esxi machine
      # check cpu
      define command{
              command_name check_esx_cpu
              command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $USER11$ -p $USER12$ -l cpu -s usage -w $ARG1$ -c $ARG2$
              }
      
      # check memory usage
      define command{
              command_name check_esx_mem
              command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $USER11$ -p $USER12$ -l mem -s usage -w $ARG1$ -c $ARG2$
              }
      
      # check memory usage
      define command{
              command_name check_esx_swap
              command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $USER11$ -p $USER12$ -l mem -s swap -w $ARG1$ -c $ARG2$
              }
      
      # check net usage
      define command{
              command_name check_esx_net
              command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $USER11$ -p $USER12$ -l net -s usage -w $ARG1$ -c $ARG2$
              }
      
      # check runtime status
      define command{
              command_name check_esx_runtime
              command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $USER11$ -p $USER12$ -l runtime -s status
              }
      
      # check runtime status
      define command{
              command_name check_esx_runtime_issues
              command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $USER11$ -p $USER12$ -l runtime -s issues
              }
      
      # check io read
      define command{
              command_name check_esx_ioread
              command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $USER11$ -p $USER12$ -l io -s read -w $ARG1$ -c $ARG2$
              }
      
      # check io write
      define command{
              command_name check_esx_iowrite
              command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $USER11$ -p $USER12$ -l io -s write -w $ARG1$ -c $ARG2$
              }
      
      # check vmfs
      define command{
              command_name check_esx_vmfs
              command_line $USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $USER11$ -p $USER12$ -l vmfs -s $ARG1$ -o used  -w $ARG2$ -c $ARG3$
              }
      
      
    • Prepariamo il file relativo al server VMWare Esxi da monitorare dentro alla cartella /usr/local/nagios/etc/servers/EsxiHostName.cfg
      ###############################################################################
      ###############################################################################
      #
      # HOST DEFINITION
      #
      ###############################################################################
      ###############################################################################
      
      define host{
              use             linux-server,host-pnp           ; Inherit default values from a template
              host_name       EsxiHostName                               ; The name we're giving to this host
              alias           EsxiHostNameAlias                ; A longer name associated with the host
              address         IpEsxiHost                ; IP address of the host
              hostgroups      VirtualServer           ; Host groups this host is associated with
              }
      ###############################################################################
      ###############################################################################
      #
      # SERVICE DEFINITIONS
      #
      ###############################################################################
      define service{
              use                             local-service,srv-pnp         ; Name of service template to use
              host_name                       EsxiHostName
              service_description             PING
              check_command                   check_ping!100.0,20%!500.0,60%
              }
      
      # VMWare
      # check cpu
      define service{
              use                             generic-service,srv-pnp
              host_name                       EsxiHostName
              service_description             ESXi CPU Load
              check_command                   check_esx_cpu!80!90
              }
      
      # check memory usage
      define service{
              use                             generic-service,srv-pnp
              host_name                       EsxiHostName
              service_description             ESXi Memory usage
              check_command                   check_esx_mem!80!90
              }
      
      # check net
      define service{
              use                             generic-service,srv-pnp
              host_name                       EsxiHostName
              service_description             ESXi Network usage
              check_command                   check_esx_net!102400!204800
              }
      
      # check runtime status
      define service{
              use                             generic-service,srv-pnp
              host_name                       EsxiHostName
              service_description             ESXi Runtime status
              check_command                   check_esx_runtime
              }
      
      # check runtime issues
      define service{
              use                             generic-service,srv-pnp
              host_name                       EsxiHostName
              service_description             ESXi Runtime issues
              check_command                   check_esx_runtime_issues
              }
      
      # check io read
      define service{
              use                             generic-service,srv-pnp
              host_name                       EsxiHostName
              service_description             ESXi IO read
              check_command                   check_esx_ioread!40!90
              }
      
      # check io write
      define service{
              use                             generic-service,srv-pnp
              host_name                       EsxiHostName
              service_description             ESXi IO write
              check_command                   check_esx_iowrite!40!90
              }
      # check vmfs
      define service{
              use                             generic-service,srv-pnp
              host_name                       EsxiHostName
              service_description             ESXi datastore1
              check_command                   check_esx_vmfs!datastore1!80%!90%
              }
      
    • Testiamo il tutto e rilanciamo Nagios:
      /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
      service nagios restart
  8. Se tutto è in ordine adesso dovremmo trovarci nel nostro pannello una situazione come questa
    Nagios check_esx

Complimenti se siete riusciti ad arrivare fino a leggere queste righe, ma spero che questi riferimenti possano rappresentare la partenza per qualcun altro quando dovrà scrivere un articolo più aggiornato ;D

Riferimenti:

  1. La partenza di tutto è stato questo post di Paolo che ringrazio anche per le immagini relative alla creazione dell'utente in Esxi - Monitorare server ESX(i) con Nagios tramite plugin check_esx su CentOS. L'unica cosa da fare attenzione è che fa riferimento ancora al vecchio nome del plugin e non sono aggiornati i riferimenti per il download.
  2. Il link corretto e ufficiale da cui scaricare il plugin di Op5 lo trovate a questo indirizzo http://exchange.nagios.org/directory/Plugins/Operating-Systems/*-Virtual-Environments/VMWare/check_vmware_api/details
  3. Gli scheletri dei file di configurazione di Nagios sono tratti da Monitoring VMware ESXi and vSphere with Nagios riveduti e corretti by me
  4. Il dettaglio di tutto quello che si può monitorare con il plugin check_vmware_esxi.pl lo trovare nel sito di Op5 http://www.op5.com/how-to/monitoring-vmware-esx-3-x-esxi-vsphere-4-and-vcenter-server/ .
  5. Tutte, ma proprio tutte le opzioni le trovate con il comando
    /usr/local/nagios/libexec/check_vmware_api.pl --help
Byez

Ron. Drakken ha un chip per il controllo della mente?
Kim: Ancora un altro piano per la conquista del mondo.
Ron: Oppure vorrà obbligare la gente ad ascoltare le storie sulla sua infanzia contorta.

Nessun commento:

Articoli correlati divisi per etichetta



Widget by Hoctro