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 [2016/11/08 12:02] – [Problema con nsExtendOutput1Line] 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 238: Line 252:
  
 <code sql> <code sql>
-SELECT local_data_id, arg1 FROM poller_item WHERE arg1 LIKE '%nsExtendOutput1Line%'; 
 SELECT * FROM data_input_data WHERE value LIKE '%nsExtendOutput1Line%'; SELECT * FROM data_input_data WHERE value LIKE '%nsExtendOutput1Line%';
 +SELECT local_data_id, arg1 FROM poller_item WHERE arg1 LIKE '%nsExtendOutput1Line%';
 </code> </code>
  
Line 245: Line 259:
  
 <code sql> <code sql>
-UPDATE poller_item SET arg1 = 'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."pm2.5"' 
-    WHERE local_data_id = 103; 
 UPDATE data_input_data SET value = 'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."pm2.5"' UPDATE data_input_data SET value = 'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."pm2.5"'
     WHERE data_input_field_id = 6 AND data_template_data_id = 178;     WHERE data_input_field_id = 6 AND data_template_data_id = 178;
 +UPDATE poller_item SET arg1 = 'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."pm2.5"'
 +    WHERE local_data_id = 103;
 </code> </code>
  
 +====== Problema con UTF-8 ======
 +
 +Alcuni caratteri speciali (ad esmempio il simbolo di grado Celsius) non vengono mostrati nei grafici RRD. Secondo questo [[http://bugs.cacti.net/view.php?id=2533|bug report]] si tratta della funzione ''escapeshellarg()'' di PHP invocata senza aver prima invocato un opportuno ''setlocale()''. Come workaround si consiglia di aggiungere tale chiamata di funzione nel file ''/usr/share/cacti/site/lib/auth.php'', ma per una installazione Debian ha più senso aggiungerlo nel file **''/etc/cacti/debian.php''**.
 +
 +====== Percentuale CPU e multi-core ======
 +
 +L'installazione predefinita di Cacti mette a disposizione il template di grafico **ucd/net - CPU Usage**, che si basa sui seguenti OIDs:
 +
 +  * 1.3.6.1.4.1.2021.11.50.0 => **ssCpuRawUser**
 +  * 1.3.6.1.4.1.2021.11.51.0 => **ssCpuRawNice**
 +  * 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**. 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 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.51.0 => **ssCpuRawNice**
 +  * 1.3.6.1.4.1.2021.11.52.0 => **ssCpuRawSystem**
 +  * 1.3.6.1.4.1.2021.11.53.0 => **ssCpuRawIdle**
 +  * 1.3.6.1.4.1.2021.11.54.0 => **ssCpuRawWait**
 +  * 1.3.6.1.4.1.2021.11.55.0 => **ssCpuRawKernel**
 +  * 1.3.6.1.4.1.2021.11.56.0 => **ssCpuRawInterrupt**
 +  * 1.3.6.1.4.1.2021.11.61.0 => **ssCpuRawSoftIRQ**
 +
 +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 - 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.1478602960.txt.gz · Last modified: 2016/11/08 12:02 by niccolo