User Tools

Site Tools


doc:appunti:linux:sa:cacti

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:cacti [2018/11/16 17:23] – [Percentuale CPU e multi-core] niccolodoc:appunti:linux:sa:cacti [2021/02/26 12:44] (current) – [Grafici dello spazio disco occupato] niccolo
Line 152: Line 152:
   - Si potrebbe definire un **Data Input Method**, cioè uno script che riceve come parametro (**Input Field**) il nome della partizione da monitorare e restituisce il valore. Lo script potrebbe utilizzare SNMP o altri metodi a piacimento.   - Si potrebbe definire un **Data Input Method**, cioè uno script che riceve come parametro (**Input Field**) il nome della partizione da monitorare e restituisce il valore. Lo script potrebbe utilizzare SNMP o altri metodi a piacimento.
  
-La **soluzione migliore** prevista da Cacti è tuttavia diversa, consente di scegliere la partizione da un elenco e sa automaticamente quele Data Template e Graph Template utilizzare. Il tutto si realizza tramite una **Data Query**. Una Data Query è uno di script oppure una interrogazione SNMP che restituisce un elenco di chiavi univoche e le associa ai rispettivi OID automaticamente.+La **soluzione migliore** prevista da Cacti è tuttavia diversa, consente di scegliere la partizione da un elenco e automaticamente viene determinato quele Data Template e Graph Template utilizzare. Il tutto si realizza tramite una **Data Query**. Una Data Query è uno di script oppure una interrogazione SNMP che restituisce un elenco di chiavi univoche e le associa ai rispettivi OID automaticamente.
  
 Ad esempio la Data Query **SNMP - Get Mounted Partitions** esegue uno script che determina tutte le partizioni montate su un server SNMP. Internamente utilizza qualcosa di simile a snmpwalk: Ad esempio la Data Query **SNMP - Get Mounted Partitions** esegue uno script che determina tutte le partizioni montate su un server SNMP. Internamente utilizza qualcosa di simile a snmpwalk:
Line 169: Line 169:
 **NOTA 2:** Nel caso in cui si vuole monitorare lo stesso host Linux su cui gira Cacti, la Data Query **Unix - Get Mounted Partitions** probabilmente è **più adatta** perché riporta solo le partizioni fisiche montate, con il punto di montaggio e il nome del device. Ovviamente **non funziona in remoto** via SNMP. **NOTA 2:** Nel caso in cui si vuole monitorare lo stesso host Linux su cui gira Cacti, la Data Query **Unix - Get Mounted Partitions** probabilmente è **più adatta** perché riporta solo le partizioni fisiche montate, con il punto di montaggio e il nome del device. Ovviamente **non funziona in remoto** via SNMP.
  
 +===== "Get Mounted Partitions" vs "Get Monitored Partitions" =====
 +
 +Cacti fornisce due diverse Data Query per monitorare lo spazio occupato sul disco:
 +
 +  * **SNMP - Get Mounted Partitions**
 +  * **Net-SNMP - Get Monitored Partitions**
 +
 +Le due query si basano su altrettanti script che vanno a interrogare OID diversi:
 +
 +^ Script Cacti                                   ^ MIB OID (numeric)        ^ Radice MIB (textual)           |
 +| cacti/resource/snmp_queries/host_disk.xml      | .1.3.6.1.2.1.25.2.3.1.1  | HOST-RESOURCES-MIB::hrStorage  |
 +| cacti/resource/snmp_queries/net-snmp_disk.xml  | .1.3.6.1.4.1.2021.9.1.1  | UCD-SNMP-MIB::dskTable         |
 +
 +Risulta che la prima forma sia supportata sia su Debian 10 che CentOS 7, mentre la seconda forma non lo è su CentOS. In Cacti, aprendo la schermata del **Device Management**, è possibile verificare nella sezione **Associated Data Queries** quali delle due query sono state attivate per l'host ed eventualmente se hanno dato esito negativo (viene indicato **%%[0 Items, 0 Rows]%%** come risultato della query).
 ===== Cache di valori errati ===== ===== Cache di valori errati =====
  
Line 263: Line 277:
   * 1.3.6.1.4.1.2021.11.52.0 => **ssCpuRawSystem**   * 1.3.6.1.4.1.2021.11.52.0 => **ssCpuRawSystem**
  
-Il risultato è abbastanza approssimativo, anzitutto perché mancano alcune metriche (ad esempio **ssCpuRawKernel**, **ssCpuRawInterrupt**, ecc.), ma soprattutto **non tiene conto dei sitemi multiprocessore** o dei processori multicore. In effetti il valore complessivo ottenuto andrebbe diviso per il numero totale di CPU del sistema, altrimenti si ottiene un **valore sovrastimato del carico percentuale**.+Il risultato è abbastanza approssimativo, anzitutto perché mancano alcune metriche (ad esempio **ssCpuRawKernel**, **ssCpuRawInterrupt**, ecc.), ma soprattutto **non tiene conto dei sitemi multiprocessore** o dei processori multicore. In effetti il valore complessivo ottenuto andrebbe diviso per il numero totale di CPU del sistema, altrimenti si ottiene un **valore sovrastimato del carico percentuale**. Vedere in proposito il post **[[https://serverfault.com/questions/441897/how-to-calculate-cpu-based-on-raw-cpu-ticks-in-snmp|How to calculate CPU % based on raw CPU ticks in SNMP]]**.
  
-Una soluzione è quella proposta nel **[[https://forums.cacti.net/viewtopic.php?p=190739|forum]]**, si basa sui seguenti OIDs:+Una soluzione è quella proposta dall'utente **Instigater** nel **[[https://forums.cacti.net/viewtopic.php?p=190739|forum di Cacti]]**, si basa sui seguenti OIDs:
  
   * 1.3.6.1.4.1.2021.11.50.0 => **ssCpuRawUser**   * 1.3.6.1.4.1.2021.11.50.0 => **ssCpuRawUser**
Line 276: Line 290:
   * 1.3.6.1.4.1.2021.11.61.0 => **ssCpuRawSoftIRQ**   * 1.3.6.1.4.1.2021.11.61.0 => **ssCpuRawSoftIRQ**
  
-inoltre sono definite due funzioni CDEF che si occupano di normalizzare rispetto al numero di CPU:+inoltre sono definite due funzioni CDEFs che si occupano di normalizzare il valore rispetto al numero di CPU:
  
   * **Full ucd/net CPU Usage - Get percentage**   * **Full ucd/net CPU Usage - Get percentage**
   * **Full ucd/net CPU Usage - Total CPU Usage**   * **Full ucd/net CPU Usage - Total CPU Usage**
  
 +Il file con il template [[https://forums.cacti.net/download/file.php?id=20704|cacti_graph_template_ucdnet_-_full_cpu_usage.zip]] ha però **un bug**, l'**Item #12** usa la funzione CDEF sbagliata: //Total CPU Usage// invece di //Get percentage//.
 +
 +Il template include le seguenti **due funzioni CDEF**:
 +
 +<file>
 +Full ucd/net CPU Usage - Get percentage
 +cdef=CURRENT_DATA_SOURCE,ALL_DATA_SOURCES_NODUPS,/,100,*
 +
 +Full ucd/net CPU Usage - Total CPU Usage
 +cdef=ALL_DATA_SOURCES_NODUPS,h,-,ALL_DATA_SOURCES_NODUPS,/,100,*
 +</file>
 +
 +La prima calcola la **percentuale di ciascuna grandezza** rispetto alla somma di tutte le altre (somma che include anche //Idle//, quindi ottiene effettivamente una percentuale). La seconda funzione esegue la somma di tutte le grandezze, quindi sottrae l'ottava (contrassegnata dalla lettera **h**, si tratta del tempo //Idle//) e calcola la percentuale rispetto alla somma di tutte. Questo produce la **percentuale totale** dell'uso della CPU. Tutti i calcoli producono una **percentuale corretta rispetto al numero di CPU**.
doc/appunti/linux/sa/cacti.1542385429.txt.gz · Last modified: 2018/11/16 17:23 by niccolo