User Tools

Site Tools


doc:appunti:linux:sa:snmp

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
Last revisionBoth sides next revision
doc:appunti:linux:sa:snmp [2011/02/26 14:16] – [Esempi configurazione] niccolodoc:appunti:linux:sa:snmp [2020/03/16 18:49] – [SNMP con systemd su Debian 9] niccolo
Line 21: Line 21:
 .1.3.6.1.2.1.31.1.1.1.1.2 .1.3.6.1.2.1.31.1.1.1.1.2
  
-# snmptranslate .1.3.6.1.2.1.31.1.1.1.1.2+# snmptranslate -m ALL .1.3.6.1.2.1.31.1.1.1.1.2
 IF-MIB::ifName.2 IF-MIB::ifName.2
  
Line 82: Line 82:
 La versione più recente del pacchetto Debian binda il demone solo sull'indirizzo 127.0.0.1, per mettersi in ascolto su tutti gli indirizzi IP bisogna togliere tale indirizzo dalla variabile ''**SNMPDOPTS**'' dal file ''**/etc/default/snmpd**''. La versione più recente del pacchetto Debian binda il demone solo sull'indirizzo 127.0.0.1, per mettersi in ascolto su tutti gli indirizzi IP bisogna togliere tale indirizzo dalla variabile ''**SNMPDOPTS**'' dal file ''**/etc/default/snmpd**''.
  
 +==== Controllo del log ====
  
 +L'installazione predefinita di Debian Wheezy genera una riga di log per ogni interrogazione SNMP, se pare eccessiva basta modificare il livello di log agendo sulla variabile ''**SNMPDOPTS**'' del file ''**/etc/default/snmpd**'':
 +
 +<file>
 +SNMPDOPTS='-LS0-5d ...
 +</file>
 +
 +In questo caso **S0-5** significa loggare su syslog da ''LOG_EMERG'' to ''LOG_NOTICE'', **d** indica la facility ''LOG_DAEMON''. Vedere ''snmpcmd(1)''.
 ===== Aggiunta di sensori SNMP ===== ===== Aggiunta di sensori SNMP =====
  
Line 88: Line 96:
 persi (netmonitor), ecc. Poi si aggiungono in ''**/etc/snmp/snmpd.conf**'' delle righe del tipo: persi (netmonitor), ecc. Poi si aggiungono in ''**/etc/snmp/snmpd.conf**'' delle righe del tipo:
  
-<code>+<file>
 exec sensors1 /usr/local/sbin/snmpd-helper fan exec sensors1 /usr/local/sbin/snmpd-helper fan
 exec sensors2 /usr/local/sbin/snmpd-helper cpu exec sensors2 /usr/local/sbin/snmpd-helper cpu
-</code>+</file>
  
 A questo punto il sensore è leggibile con: A questo punto il sensore è leggibile con:
Line 101: Line 109:
 Come si vede il valore è disponibile sotto un MIB differente, la radice in questo caso è .1.3.6.1.4.1.2021.8.1. (UCD-SNMP-MIB::). Come si vede il valore è disponibile sotto un MIB differente, la radice in questo caso è .1.3.6.1.4.1.2021.8.1. (UCD-SNMP-MIB::).
  
 +Con la nuova sintassi di **''snmpd.conf''** (introdotta con la versione 5.2.x e quindi da preferire ad esempio con ''snmpd'' 5.4.3) la direttiva **''exec''** viene deprecata, al suo posto si usa **''extend''**:
 +
 +<file>
 +extend sensors_cpu_fan  /usr/local/sbin/snmpd-helper fan
 +extend sensors_sys_fan  /usr/local/sbin/snmpd-helper fan2
 +</file>
 +
 +in questo caso l'OID da leggere è:
 +
 +<code>
 +snmpwalk -v1 -c public 127.0.0.1 'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."sensors_cpu_fan"'
 +</code>
 +
 +Il vantaggio è che l'OID viene indirizzato non con l'indice numerico (che dipende dall'ordine in cui è definito nel file di configurazione), ma da una etichetta.
 +
 +Notare l'uso degli apici nel comando da shell, in quanto le **doppie virgolette** fanno parte a tutti gli effetti del nome dell'OID.
 ===== Esempi configurazione ===== ===== Esempi configurazione =====
  
Line 127: Line 151:
 <file> <file>
 ### CPU Load ### CPU Load
-Target[cpu1]: ssCpuRawUser.0&ssCpuRawUser.0:public@localhost +Target[cpu1]: ssCpuRawUser.0&ssCpuRawUser.0:public@localhost 
     + ssCpuRawSystem.0&ssCpuRawSystem.0:public@localhost     + ssCpuRawSystem.0&ssCpuRawSystem.0:public@localhost
-    + ssCpuRawNice.0&ssCpuRawNice.0:public@localhost+    + ssCpuRawNice.0&ssCpuRawNice.0:public@localhost ) / 2
 Title[cpu1]: CPU LOAD Title[cpu1]: CPU LOAD
 PageTop[cpu1]: <H1>Active CPU Load %</H1> PageTop[cpu1]: <H1>Active CPU Load %</H1>
 +Colours[cpu1]: ORANGE#ff5c00,BLACK#000000,DARK GREEN#006600,VIOLET#ff00ff
 MaxBytes[cpu1]: 100 MaxBytes[cpu1]: 100
 Unscaled[cpu1]: dwmy Unscaled[cpu1]: dwmy
Line 142: Line 167:
 LegendI[cpu1]: Load:&nbsp; LegendI[cpu1]: Load:&nbsp;
 LegendO[cpu1]: LegendO[cpu1]:
-Options[cpu1]: noo,growright,nopercent,noinfo,unknaszero+#Options[cpu1]: noo,growright,nopercent,noinfo,unknaszero 
 +Options[cpu1]: growright,nopercent,noinfo,unknaszero
 </file> </file>
 +
 +**NOTA**: Il carico della CPU deve essere diviso per il **numero di core** presenti (vedere con ''cat /proc/cpuinfo'', 2 nell'esempio sopra). Il contatore SNMP infatti fornisce il numero di ticks di CPU spesi nell'eseguire i processi, ci sono 100 ticks per CPU al secondo.
  
 <file> <file>
Line 171: Line 199:
 PageTop[free]:     <H1>Free memory</H1> PageTop[free]:     <H1>Free memory</H1>
 Options[free]:     gauge,growright,nopercent,noinfo,unknaszero Options[free]:     gauge,growright,nopercent,noinfo,unknaszero
-Colours[free]:     ORANGE#ff7d55,GREEN#0c820c,DARK GREEN#006600,VIOLET#ff00ff+Colours[free]:     LIGHT GREEN#73d290,GREEN#0c680c,DARK GREEN#006600,VIOLET#ff00ff
 MaxBytes1[free]:   1000000 MaxBytes1[free]:   1000000
 MaxBytes2[free]:   2000000 MaxBytes2[free]:   2000000
Line 267: Line 295:
 </file> </file>
  
-===== MIBs e Debian Squeeze =====+Temperature graph using **lmsensors**. Verify that the version of Net-SNMP on the target system was compiled with the lmSensors extension by running **''snmpd -Dmib_init''** and looking through the output for the ''lmSensors'' string. Then you need to discover the MIB of your sensor: 
 + 
 +<code> 
 +snmpwalk -v2c -c public localhost 1.3.6.1.4.1.2021.13.16 
 +</code> 
 + 
 +In my case the temperature is multiplied by 1000: 
 + 
 +<file> 
 +### Sensor temp1 
 +Target[temp1]:      iso.3.6.1.4.1.2021.13.16.2.1.3.1&iso.3.6.1.4.1.2021.13.16.2.1.3.1:public@localhost 
 +Factor[temp1]:      0.001 
 +YTicsFactor[temp1]: 0.001 
 +Title[temp1]:       Temperature temp1 
 +PageTop[temp1]:     <H1>Temperature temp1</H1> 
 +Options[temp1]:     noo,gauge,growright,nopercent,noinfo,unknaszero,withzeroes 
 +Colours[temp1]:     RED#d60000,BLUE#1000ff,DARK GREEN#006600,VIOLET#ff00ff 
 +MaxBytes[temp1]:    150000 
 +Unscaled[temp1]:    dwmy 
 +YLegend[temp1]:     Temp C° 
 +ShortLegend[temp1]: C&deg; 
 +Legend1[temp1]:     Temperature in C&deg; 
 +Legend2[temp1]: 
 +LegendI[temp1]:     Temp C&deg;&nbsp; 
 +LegendO[temp1]: 
 +</file> 
 + 
 +It seems that MRTG does not support UTF-8 (even version 2.17.4), so the configuration file should be encoded in ISO_8859-1. Special characters used in HTML output should be encoded properly. 
 + 
 +See this article: [[http://www.eric-a-hall.com/software/cacti-netsnmp-lmsensors/|lmSensors/Net-SNMP Sensor Readings ]]. 
 + 
 +===== MIBs e Debian (Squeeze e successive) ===== 
 + 
 +Vedere il [[https://wiki.debian.org/SNMP|wiki Debian]].
  
 Tradizionalmente i file contenenti i MIBs di [[http://www.ietf.org/|IETF]] e di [[http://www.iana.org/|IANA]] venivano distribuiti con il pacchetto **''libsnmp-base''**, per problemi di licenza questo non è più possibile (dalla versione net-snmp 5.4.2.1~dfsg-1). Tradizionalmente i file contenenti i MIBs di [[http://www.ietf.org/|IETF]] e di [[http://www.iana.org/|IANA]] venivano distribuiti con il pacchetto **''libsnmp-base''**, per problemi di licenza questo non è più possibile (dalla versione net-snmp 5.4.2.1~dfsg-1).
Line 281: Line 342:
 </file> </file>
  
-Stessa cosa bisogna farla per il demone snmpd, commentando una riga in **''/etc/default/snmpd''**:+Stessa cosa bisogna farla per il demone snmpd, aggiungendo una riga in **''/etc/default/snmpd''**:
  
 <file> <file>
-# Don't load any MIBs by default. +export MIBS=UCD-SNMP-MIB
-# You might comment this lines once you have the MIBs downloaded. +
-#export MIBS=+
 </file> </file>
  
Line 332: Line 391:
 NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."mail_incoming" = STRING: 14 NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."mail_incoming" = STRING: 14
 </code> </code>
 +
 +===== SNMP su ipv6 =====
 +
 +Con Debian Wheezy sono necessarie alcune accortezze perché SNMP risponda anche su IPV6, in particolare **''/etc/snmp/snmpd.conf''**:
 +
 +<file>
 +agentAddress  udp::161
 +agentaddress  udp6:161
 +
 +rocommunity  public default
 +rocommunity6 public default
 +</file>
 +
 +===== SNMP con systemd su Debian 9 e seguenti =====
 +
 +**Debian 9 Stretch** utilizza il sistema di init **systemd** invece del vecchio //sysvinit//. Le personalizzazioni all'avvio non si fanno più in ''/etc/default/snmpd''.
 +
 +La risoluzione degli OIDs nella loro descrizione testuale richiede sempre l'installazione del pacchetto non-free **snmp-mibs-downloader**. Invece di impostare la variabile d'ambient **MIBS** si deve modificare il file **/etc/snmp/snmp.conf**, commentando (disattivando) la riga:
 +
 +<file>
 +#mibs :
 +</file>
 +
 +Eventuali personalizzazioni dei parametri di snmpd non si fanno più con la variabile d'ambiente **SNMPDOPTS**, bisogna piuttosto creare il file **/etc/systemd/system/snmpd.service**, prendendo come esempio quello predefinito ''/lib/systemd/system/snmpd.service''. Il file personalizzato prevale su quello di sistema (basta eseguire **systemctl daemon-reload**). Pare che non sia necessario aggiornare i link simbolici, ad esempio quello contenuto in ''/etc/systemd/system/multi-user.target.wants/''.
 +
 +Ecco ad esempio come modificare la riga **ExecStart** per diminuire il logging e sopprimere tutte le righe **Connection from UDP** che riempiono il syslog (nota: si modifica **%%-Lsd%%** in **%%-LSwd%%**):
 +
 +<file>
 +ExecStart=/usr/sbin/snmpd -LSwd -Lf /dev/null -u Debian-snmp -g Debian-snmp
 +    -I -smux,mteTrigger,mteTriggerConf -f -p /run/snmpd.pid
 +</file>
 +
 +In alternativa a **sostituire completamente il file unit** (cioè il file /etc/systemd/system/snmpd.service) è possibile creare un file **override** con solo le modifiche necessarie. Il file override deve stare nella directory **/etc/systemd/system/snmpd.service.d/** e può chiamarsi **local.conf** (è possibile averne più di uno). Fare attenzione al parametro **ExecStart** che deve essere svuotato prima di essere definito nuovamente:
 +
 +<file>
 +[Service]
 +Environment="MIBS="
 +ExecStart=
 +ExecStart=/usr/sbin/snmpd -LSwd -Lf /dev/null -u Debian-snmp -g Debian-snmp
 +    -I -smux,mteTrigger,mteTriggerConf -f -p run/snmpd.pid
 +</file>
 +
doc/appunti/linux/sa/snmp.txt · Last modified: 2020/04/01 11:40 by niccolo