doc:appunti:linux:sa:cacti
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| doc:appunti:linux:sa:cacti [2016/11/08 11:58] – [Migrazione di Cacti su altro host] niccolo | doc:appunti:linux:sa:cacti [2025/03/05 18:13] (current) – [Funzioni CDEFs] 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 |
| 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" | ||
| + | |||
| + | 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) | ||
| + | | cacti/ | ||
| + | | cacti/ | ||
| + | |||
| + | 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**, | ||
| ===== Cache di valori errati ===== | ===== Cache di valori errati ===== | ||
| Line 238: | Line 252: | ||
| <code sql> | <code sql> | ||
| - | SELECT local_data_id, | ||
| SELECT * FROM data_input_data WHERE value LIKE ' | SELECT * FROM data_input_data WHERE value LIKE ' | ||
| + | SELECT local_data_id, | ||
| </ | </ | ||
| Line 245: | Line 259: | ||
| <code sql> | <code sql> | ||
| + | UPDATE data_input_data SET value = ' | ||
| + | WHERE data_input_field_id = 6 AND data_template_data_id = 178; | ||
| UPDATE poller_item SET arg1 = ' | UPDATE poller_item SET arg1 = ' | ||
| WHERE local_data_id = 103; | WHERE local_data_id = 103; | ||
| - | UPDATE data_input_data SET value = 'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."pm2.5"' | + | </ |
| - | WHERE data_input_field_id | + | |
| + | ====== Problema con UTF-8 ====== | ||
| + | |||
| + | Alcuni caratteri speciali (ad esmempio il simbolo di grado Celsius) non vengono mostrati nei grafici RRD. Secondo questo [[http:// | ||
| + | |||
| + | ====== Percentuale CPU e multi-core ====== | ||
| + | |||
| + | L' | ||
| + | |||
| + | * 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, | ||
| + | |||
| + | Una soluzione è quella proposta dall' | ||
| + | |||
| + | * 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:// | ||
| + | |||
| + | Il template include le seguenti **due funzioni CDEF**: | ||
| + | |||
| + | < | ||
| + | Full ucd/net CPU Usage - Get percentage | ||
| + | cdef=CURRENT_DATA_SOURCE, | ||
| + | |||
| + | Full ucd/net CPU Usage - Total CPU Usage | ||
| + | cdef=ALL_DATA_SOURCES_NODUPS, | ||
| + | </ | ||
| + | |||
| + | 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' | ||
| + | |||
| + | ====== Funzioni CDEFs ====== | ||
| + | |||
| + | È possibile modificare le funzioni CDEFs da //Console// => //Presets// => //CDEFs//. Nella schermata è possibile vedere quanti template e quanti grafici usano ciascuna funzione, ma non è possibile sapere quali. | ||
| + | |||
| + | Con una interrogazione SQL è possibile scoprirlo: dalla schermata delle CDEFs si visualizza il link associato al nome di ciascuna funzione, che è qualcosa del tipo **%%https:// | ||
| + | |||
| + | <code sql> | ||
| + | SELECT DISTINCTROW cdef_id, local_graph_id, | ||
| + | FROM graph_templates_item | ||
| + | WHERE cdef_id=18; | ||
| + | </ | ||
| + | |||
| + | Il risultato indica gli ID dei grafici e dei template che usano tale funzione: | ||
| + | |||
| + | < | ||
| + | +---------+----------------+-------------------+ | ||
| + | | cdef_id | local_graph_id | graph_template_id | | ||
| + | +---------+----------------+-------------------+ | ||
| + | | 18 | 0 | 35 | | ||
| + | | 18 | 60 | 35 | | ||
| + | +---------+----------------+-------------------+ | ||
| </ | </ | ||
doc/appunti/linux/sa/cacti.1478602681.txt.gz · Last modified: by niccolo
