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
doc:appunti:linux:sa:snmp [2011/02/26 14:16] – [Esempi configurazione] niccolodoc:appunti:linux:sa:snmp [2020/04/01 11:40] (current) – [SNMP con systemd su Debian 9 e seguenti] 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.1298726183.txt.gz · Last modified: 2011/02/26 14:16 by niccolo