4 controlli IPMI

Panoramica

In Zabbix è possibile monitorare lo stato di salute e la disponibilità dei dispositivi Intelligent Platform Management Interface (IPMI). Per eseguire i controlli IPMI, lo Zabbix server deve essere inizialmente configurato con il supporto IPMI.

IPMI è un'interfaccia standardizzata per la gestione remota "lights-out" o "out-of-band" dei sistemi informatici. Consente di monitorare direttamente lo stato dell'hardware dalle cosiddette schede di gestione "out-of-band", indipendentemente dal sistema operativo o dal fatto che la macchina sia accesa oppure no.

Il monitoraggio IPMI di Zabbix funziona solo per i dispositivi che supportano IPMI (HP iLO, DELL DRAC, IBM RSA, Sun SSP, ecc.).

Un processo manager IPMI pianifica i controlli IPMI eseguiti dagli IPMI poller. Un host viene sempre interrogato da un solo IPMI poller alla volta, riducendo il numero di connessioni aperte ai controller BMC. Pertanto, è possibile aumentare in sicurezza il numero di IPMI poller senza preoccuparsi di sovraccaricare i controller BMC. Il processo manager IPMI viene avviato automaticamente quando viene avviato almeno un IPMI poller.

Vedere anche i problemi noti relativi ai controlli IPMI.

Configurazione

Configurazione del host

Un host deve essere configurato per elaborare i controlli IPMI. Deve essere aggiunta un'interfaccia IPMI, con i rispettivi indirizzo IP e numeri di porta, e devono essere definiti i parametri di autenticazione IPMI.

Per maggiori dettagli, vedere la configurazione dei host.

Configurazione del server

Per impostazione predefinita, il server Zabbix non è configurato per avviare alcun poller IPMI, pertanto gli item IPMI aggiunti non funzioneranno. Per modificare questa impostazione, aprire il file di configurazione del server Zabbix (zabbix_server.conf) come root e cercare la seguente riga:

# StartIPMIPollers=0

Rimuovere il commento e impostare il numero di poller, ad esempio, a 3, in modo che risulti:

StartIPMIPollers=3

Salvare il file e riavviare successivamente zabbix_server.

Configurazione dell'item

Quando si configura un item a livello di host:

  • Selezionare 'IPMI agent' come Tipo
  • Inserire una chiave dell'item univoca all'interno dell'host (ad esempio, ipmi.fan.rpm)
  • Per Interfaccia host selezionare l'interfaccia IPMI pertinente (IP e porta). Si noti che sull'host deve esistere un'interfaccia IPMI.
  • Specificare il sensore IPMI (ad esempio 'FAN MOD 1A RPM' su Dell Poweredge) da cui recuperare la metrica. Per impostazione predefinita, deve essere specificato l'ID del sensore. È anche possibile usare dei prefissi prima del valore:
    • id: - per specificare l'ID del sensore;
    • name: - per specificare il nome completo del sensore. Questo può essere utile nelle situazioni in cui i sensori possono essere distinti solo specificando il nome completo.
  • Selezionare il rispettivo tipo di informazione ('Numerico (float)' in questo caso; per i sensori discreti - 'Numerico (unsigned)'), le unità (molto probabilmente 'rpm') e qualsiasi altro attributo dell'item richiesto
Controlli supportati

L'agent IPMI supporta l'item integrato ipmi.get, che restituisce informazioni relative ai sensori IPMI e può essere utilizzato per la discovery dei sensori IPMI.
Valore restituito: oggetto JSON

Timeout e terminazione della sessione

I timeout dei messaggi IPMI e il numero di tentativi sono definiti nella libreria OpenIPMI. A causa dell'attuale progettazione di OpenIPMI, non è possibile rendere questi valori configurabili in Zabbix, né a livello di interfaccia né di item.

Il timeout di inattività della sessione IPMI per LAN è di 60 +/-3 secondi. Attualmente non è possibile implementare l'invio periodico del comando Activate Session con OpenIPMI. Se non ci sono controlli degli item IPMI da Zabbix verso uno specifico BMC per un tempo superiore al timeout di sessione configurato nel BMC, allora il successivo controllo IPMI dopo la scadenza del timeout andrà in timeout a causa dei timeout dei singoli messaggi, dei tentativi o di un errore di ricezione. Successivamente verrà aperta una nuova sessione e verrà avviata una nuova scansione completa del BMC. Potrebbe essere aperta una nuova porta UDP per gestire la nuova sessione. L'inattività è definita dall'assenza sia di richieste in uscita sia di risposte in ingresso. Se si desidera evitare nuove scansioni non necessarie del BMC, si consiglia di impostare l'intervallo di polling degli item IPMI al di sotto del timeout di inattività della sessione IPMI configurato nel BMC.

Note sui sensori discreti IPMI

Per trovare i sensori su un host, avviare Zabbix server con DebugLevel=4 abilitato. Attendere alcuni minuti e cercare i record di individuazione dei sensori nel file di log di Zabbix server:

$ grep 'Added sensor' zabbix_server.log
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:7 id:'CATERR' reading_type:0x3 ('discrete_state') type:0x7 ('processor') full_name:'(r0.32.3.0).CATERR'
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'CPU Therm Trip' reading_type:0x3 ('discrete_state') type:0x1 ('temperature') full_name:'(7.1).CPU Therm Trip'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'System Event Log' reading_type:0x6f ('sensor specific') type:0x10 ('event_logging_disabled') full_name:'(7.1).System Event Log'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'PhysicalSecurity' reading_type:0x6f ('sensor specific') type:0x5 ('physical_security') full_name:'(23.1).PhysicalSecurity'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'IPMI Watchdog' reading_type:0x6f ('sensor specific') type:0x23 ('watchdog_2') full_name:'(7.7).IPMI Watchdog'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'Power Unit Stat' reading_type:0x6f ('sensor specific') type:0x9 ('power_unit') full_name:'(21.1).Power Unit Stat'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Ctrl %' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.1).P1 Therm Ctrl %'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.2).P1 Therm Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 2' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 2'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 3' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 3'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'P1 Mem Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).P1 Mem Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'Front Panel Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Front Panel Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'Baseboard Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Baseboard Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +5.0V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +5.0V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +3.3V STBY' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V STBY'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +3.3V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.5V P1 DDR3' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.5V P1 DDR3'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.1V P1 Vccp' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.1V P1 Vccp'
8358:20130318:111122.174 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +1.05V PCH' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.05V PCH'

Per decodificare i tipi e gli stati dei sensori IPMI, è disponibile una copia delle specifiche IPMI 2.0 (si noti che non sono previsti ulteriori aggiornamenti delle specifiche IPMI).

Il primo parametro da cui iniziare è "reading_type". Utilizzare "Table 42-1, Event/Reading Type Code Ranges" delle specifiche per decodificare il codice "reading_type". La maggior parte dei sensori nel nostro esempio ha "reading_type:0x1", che significa sensore "threshold". "Table 42-3, Sensor Type Codes" mostra che "type:0x1" significa sensore di temperatura, "type:0x2" - sensore di tensione, "type:0x4" - ventola, ecc. I sensori threshold a volte sono chiamati sensori "analogici" perché misurano parametri continui come temperatura, tensione, giri al minuto.

Un altro esempio: un sensore con "reading_type:0x3". "Table 42-1, Event/Reading Type Code Ranges" indica che i codici del tipo di lettura da 02h a 0Ch significano sensore "Generic Discrete". I sensori discreti hanno fino a 15 possibili stati (in altre parole, fino a 15 bit significativi). Per esempio, per il sensore 'CATERR' con "type:0x7", la "Table 42-3, Sensor Type Codes" mostra che questo tipo significa "Processor" e il significato dei singoli bit è: 00h (il bit meno significativo) - IERR, 01h - Thermal Trip, ecc.

Nel nostro esempio ci sono alcuni sensori con "reading_type:0x6f". Per questi sensori, la "Table 42-1, Event/Reading Type Code Ranges" consiglia di utilizzare "Table 42-3, Sensor Type Codes" per decodificare il significato dei bit. Per esempio, il sensore 'Power Unit Stat' ha tipo "type:0x9", che significa "Power Unit". L'offset 00h significa "PowerOff/Power Down". In altre parole, se il bit meno significativo è 1, allora il server è spento. Per testare questo bit, è possibile utilizzare la funzione bitand con la maschera '1'. L'espressione del trigger potrebbe essere

bitand(last(/www.example.com/Power Unit Stat,#1),1)=1

per avvisare dello spegnimento di un server.

Note sui nomi dei sensori discreti in OpenIPMI-2.0.16, 2.0.17, 2.0.18 e 2.0.19

I nomi dei sensori discreti in OpenIPMI-2.0.16, 2.0.17 e 2.0.18 spesso hanno uno "0" aggiuntivo (o un'altra cifra o lettera) aggiunto alla fine. Ad esempio, mentre ipmitool e OpenIPMI-2.0.19 visualizzano i nomi dei sensori come "PhysicalSecurity" o "CATERR", in OpenIPMI-2.0.16, 2.0.17 e 2.0.18 i nomi sono rispettivamente "PhysicalSecurity0" o "CATERR0".

Quando si configura un item IPMI con Zabbix server che utilizza OpenIPMI-2.0.16, 2.0.17 e 2.0.18, usare questi nomi che terminano con "0" nel campo IPMI sensor degli item agent IPMI. Quando il proprio Zabbix server viene aggiornato a una nuova distribuzione Linux, che utilizza OpenIPMI-2.0.19 (o successiva), gli item con questi sensori discreti IPMI diventeranno "NOT SUPPORTED". È necessario modificare i loro nomi IPMI sensor (rimuovendo lo '0' finale) e attendere un po' di tempo prima che tornino di nuovo "Enabled".

Note sulla disponibilità simultanea di sensori di soglia e discreti

Alcuni agent IPMI forniscono sia un sensore di soglia sia un sensore discreto con lo stesso nome. La preferenza viene sempre data al sensore di soglia.

Note sulla terminazione della connessione

Se i controlli IPMI non vengono eseguiti (per qualsiasi motivo: tutti gli item IPMI del host disabilitati/non supportati, host disabilitato/eliminato, host in manutenzione, ecc.), la connessione IPMI verrà terminata dal server o dal proxy Zabbix entro 3 o 4 ore, a seconda del momento in cui il server/proxy Zabbix è stato avviato.