Net-SNMP and lm-sensors on Ubuntu 10.04
Contents
Notes
This is a Wiki tutorial for using Net-SNMP and lm-sensors on Ubuntu 10.04.1 LTS.
Source Download
You can download the latest sources of Net-SNMP from here:
Net-SNMP Download Page
You can download the latest sources of lm-sensors from here:
lm-sensors Download Page
Configure lm-sensors
Ubuntu 10.04.1 includes lm-sensors 3.1.2 pre-installed. To verify your version of lm-sensors, run:
> sensors -v sensors version 3.1.2 with libsensors version 3.1.2
Lm-sensors needs to be configured using sensors-detect before it can be used. Sensors-detect is an interactive script for detecting hardware sensor chips. Run the following command, and then follow the on-screen instructions:
> sudo sensors-detect
Reboot your system, or use the following command to load the necessary kernel modules:
> sudo /etc/init.d/module-init-tools start
To verify that lm-sensors is operating properly, use the sensors command. Example output is shown below.
> sensors coretemp-isa-0000 Adapter: ISA adapter Core 0: +36.0°C (high = +82.0°C, crit = +100.0°C) coretemp-isa-0001 Adapter: ISA adapter Core 3: +36.0°C (high = +82.0°C, crit = +100.0°C) coretemp-isa-0002 Adapter: ISA adapter Core 1: +36.0°C (high = +82.0°C, crit = +100.0°C) coretemp-isa-0003 Adapter: ISA adapter Core 2: +32.0°C (high = +82.0°C, crit = +100.0°C) it8718-isa-0290 Adapter: ISA adapter in0: +1.34 V (min = +0.00 V, max = +4.08 V) in1: +1.98 V (min = +0.00 V, max = +4.08 V) in2: +3.30 V (min = +0.00 V, max = +4.08 V) in3: +2.93 V (min = +0.00 V, max = +4.08 V) in4: +0.80 V (min = +0.00 V, max = +4.08 V) in5: +0.21 V (min = +0.14 V, max = +0.26 V) in6: +0.10 V (min = +0.00 V, max = +4.08 V) in7: +3.06 V (min = +0.00 V, max = +4.08 V) Vbat: +3.23 V fan1: 0 RPM (min = 0 RPM) fan2: 0 RPM (min = 0 RPM) fan3: 0 RPM (min = 0 RPM) fan4: 1834 RPM (min = 0 RPM) temp1: +37.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor temp2: +27.0°C (low = +127.0°C, high = +127.0°C) sensor = thermal diode temp3: -2.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor cpu0_vid: +1.219 V
Install and Configure Net-SNMP Packages
Ubuntu 10.04 does not have Net-SNMP pre-installed. To install basic Net-SNMP functionality, run the following:
> sudo apt-get install snmp > sudo apt-get install snmpd
Several other SNMP packages are available for Ubuntu. The Ubuntu Software Center (Applications > Ubuntu Software Center) is a good resource for determining which packages are currently installed (search for "snmp").
To test that the SNMP Daemon was successfully installed, run the following:
> snmpwalk -v 2c -c public localhost system
General system information should be printed to the terminal window. An example is shown below.
SNMPv2-MIB::sysDescr.0 = STRING: Linux ubuntu 2.6.32-29-generic-pae #58-Ubuntu SMP Fri Feb 11 19:15:25 UTC 2011 i686 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1218) 0:00:12.18 SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmpd.local.conf) SNMPv2-MIB::sysName.0 = STRING: ubuntu SNMPv2-MIB::sysLocation.0 = STRING: Unknown (configure /etc/snmp/snmpd.local.conf) SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup SNMPv2-MIB::sysORDescr.1 = STRING: The SNMP Management Architecture MIB. SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching. SNMPv2-MIB::sysORDescr.3 = STRING: The management information definitions for the SNMP User-based Security Model. SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP. SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.2 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.3 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.4 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.5 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.7 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.8 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.8 = No more variables left in this MIB View (It is past the end of the MIB tree)
The SNMP Daemon requires additional setup. The snmpconf command is an interactive script for configuring Net-SNMP functionality (it can be used to generate snmp.conf and snmpd.conf). Run the following:
> sudo snmpconf -i -g basic_setup
NOTE: If you are unfamiliar Net-SNMP, it might be easier to create a simple snmpd.conf file manually. Using a text editor, create a file named "snmpd.conf". Add the following text:
rocommunity public
Copy the new snmpd.conf file to the correct path (In Ubuntu, the default paths for Net-SNMP applications are slightly different):
> sudo mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.old > sudo cp /usr/share/snmp/snmpd.conf /etc/snmp/snmpd.conf
Restart the SNMP daemon:
>sudo /etc/init.d/snmpd restart * Restarting network management services:
Use snmpwalk to test the lm-sensors MIB. The OID for the lm-sensors MIB is 1.3.6.1.4.1.2021.13.16.
> snmpwalk -v 2c -c public localhost lmSensors
> snmpwalk -v 2c -c public localhost 1.3.6.1.4.1.2021.13.16
Example Output:
LM-SENSORS-MIB::lmMiscSensorsIndex.1 = INTEGER: 0 LM-SENSORS-MIB::lmMiscSensorsIndex.2 = INTEGER: 1 LM-SENSORS-MIB::lmMiscSensorsIndex.3 = INTEGER: 2 LM-SENSORS-MIB::lmMiscSensorsIndex.4 = INTEGER: 3 LM-SENSORS-MIB::lmMiscSensorsIndex.5 = INTEGER: 4 LM-SENSORS-MIB::lmMiscSensorsIndex.6 = INTEGER: 5 LM-SENSORS-MIB::lmMiscSensorsIndex.7 = INTEGER: 6 LM-SENSORS-MIB::lmMiscSensorsIndex.8 = INTEGER: 7 LM-SENSORS-MIB::lmMiscSensorsIndex.9 = INTEGER: 8 LM-SENSORS-MIB::lmMiscSensorsIndex.10 = INTEGER: 9 LM-SENSORS-MIB::lmMiscSensorsIndex.11 = INTEGER: 10 LM-SENSORS-MIB::lmMiscSensorsIndex.12 = INTEGER: 11 LM-SENSORS-MIB::lmMiscSensorsIndex.13 = INTEGER: 12 LM-SENSORS-MIB::lmMiscSensorsIndex.14 = INTEGER: 13 LM-SENSORS-MIB::lmMiscSensorsIndex.15 = INTEGER: 14 LM-SENSORS-MIB::lmMiscSensorsIndex.16 = INTEGER: 15 LM-SENSORS-MIB::lmMiscSensorsIndex.17 = INTEGER: 16 LM-SENSORS-MIB::lmMiscSensorsIndex.18 = INTEGER: 17 LM-SENSORS-MIB::lmMiscSensorsIndex.19 = INTEGER: 18 LM-SENSORS-MIB::lmMiscSensorsIndex.20 = INTEGER: 19 LM-SENSORS-MIB::lmMiscSensorsDevice.1 = STRING: Core 0 LM-SENSORS-MIB::lmMiscSensorsDevice.2 = STRING: Core 0 LM-SENSORS-MIB::lmMiscSensorsDevice.3 = STRING: Core 0 LM-SENSORS-MIB::lmMiscSensorsDevice.4 = STRING: Core 0 LM-SENSORS-MIB::lmMiscSensorsDevice.5 = STRING: Core 1 LM-SENSORS-MIB::lmMiscSensorsDevice.6 = STRING: Core 1 LM-SENSORS-MIB::lmMiscSensorsDevice.7 = STRING: Core 1 LM-SENSORS-MIB::lmMiscSensorsDevice.8 = STRING: Core 1 LM-SENSORS-MIB::lmMiscSensorsDevice.9 = STRING: Core 3 LM-SENSORS-MIB::lmMiscSensorsDevice.10 = STRING: Core 3 LM-SENSORS-MIB::lmMiscSensorsDevice.11 = STRING: Core 3 LM-SENSORS-MIB::lmMiscSensorsDevice.12 = STRING: Core 3 LM-SENSORS-MIB::lmMiscSensorsDevice.13 = STRING: Core 2 LM-SENSORS-MIB::lmMiscSensorsDevice.14 = STRING: Core 2 LM-SENSORS-MIB::lmMiscSensorsDevice.15 = STRING: Core 2 LM-SENSORS-MIB::lmMiscSensorsDevice.16 = STRING: Core 2 LM-SENSORS-MIB::lmMiscSensorsDevice.17 = STRING: in0 LM-SENSORS-MIB::lmMiscSensorsDevice.18 = STRING: in0 LM-SENSORS-MIB::lmMiscSensorsDevice.19 = STRING: in0 LM-SENSORS-MIB::lmMiscSensorsDevice.20 = STRING: in0 LM-SENSORS-MIB::lmMiscSensorsValue.1 = Gauge32: 37000 LM-SENSORS-MIB::lmMiscSensorsValue.2 = Gauge32: 82000 LM-SENSORS-MIB::lmMiscSensorsValue.3 = Gauge32: 100000 LM-SENSORS-MIB::lmMiscSensorsValue.4 = Gauge32: 0 LM-SENSORS-MIB::lmMiscSensorsValue.5 = Gauge32: 39000 LM-SENSORS-MIB::lmMiscSensorsValue.6 = Gauge32: 82000 LM-SENSORS-MIB::lmMiscSensorsValue.7 = Gauge32: 100000 LM-SENSORS-MIB::lmMiscSensorsValue.8 = Gauge32: 0 LM-SENSORS-MIB::lmMiscSensorsValue.9 = Gauge32: 36000 LM-SENSORS-MIB::lmMiscSensorsValue.10 = Gauge32: 82000 LM-SENSORS-MIB::lmMiscSensorsValue.11 = Gauge32: 100000 LM-SENSORS-MIB::lmMiscSensorsValue.12 = Gauge32: 0 LM-SENSORS-MIB::lmMiscSensorsValue.13 = Gauge32: 33000 LM-SENSORS-MIB::lmMiscSensorsValue.14 = Gauge32: 82000 LM-SENSORS-MIB::lmMiscSensorsValue.15 = Gauge32: 100000 LM-SENSORS-MIB::lmMiscSensorsValue.16 = Gauge32: 0 LM-SENSORS-MIB::lmMiscSensorsValue.17 = Gauge32: 1344 LM-SENSORS-MIB::lmMiscSensorsValue.18 = Gauge32: 0 LM-SENSORS-MIB::lmMiscSensorsValue.19 = Gauge32: 4080 LM-SENSORS-MIB::lmMiscSensorsValue.20 = Gauge32: 0
UPDATE: The Ubuntu 10.04 packages 'snmp' and 'snmpd' include Net-SNMP version 5.4.2.1. According to the lm-sensors installation page, Net-SNMP 5.5 or higher is required. All sensors appear within the "MiscSensors" category.
Install and Configure Net-SNMP Source
An excellent tutorial for installing Net-SNMP (from source) for Ubuntu is located here: Net-Snmp on Ubuntu
Specific details needed for lm-sensors are discussed below.
Download the latest Net-SNMP source package (v 5.6.1 was used for this tutorial), and unzip it.
Install the libperl-dev and libsensors4-dev packages for Ubuntu:
>sudo apt-get install libperl-dev >sudo apt-get install libsensors4-dev
Use the following commands to configure and install Net-SNMP:
>cd net-snmp-5.6.1/ >./configure --with-mib-modules="ucd-snmp/lmsensorsMib" --with-ldflags="-lsensors" >make >sudo make install
Results from configure (accepted all defaults):
--------------------------------------------------------- Net-SNMP configuration summary: --------------------------------------------------------- SNMP Versions Supported: 1 2c 3 Building for: linux Net-SNMP Version: 5.6.1 Network transport support: Callback Unix Alias TCP UDP IPv4Base SocketBase TCPBase UDPIPv4Base UDPBase SNMPv3 Security Modules: usm Agent MIB code: ucd-snmp/lmsensorsMib default_modules => hardware/sensors snmpv3mibs mibII ucd_snmp notification notification-log-mib target agent_mibs agentx disman/event disman/schedule utilities host MYSQL Trap Logging: unavailable Embedded Perl support: enabled SNMP Perl modules: building -- embeddable SNMP Python modules: disabled Crypto support from: internal Authentication support: MD5 SHA1 Encryption support: DES AES ---------------------------------------------------------
Results from make:
... make[2]: Leaving directory `/home/admin/net-snmp-5.6.1/perl/TrapReceiver' make[1]: Leaving directory `/home/admin/net-snmp-5.6.1/perl'
Results from make install:
... Installing /usr/local/man/man3/SNMP.3 Appending installation info to /usr/local/lib/perl/5.10.1/perllocal.pod make[1]: Leaving directory `/home/admin/net-snmp-5.6.1/perl'
The following Ubuntu packages need to be removed to avoid conflicts:
>sudo apt-get remove snmp >sudo apt-get remove snmpd >sudo apt-get remove libsnmp15 >sudo apt-get remove libsnmp-base
Configure the new SNMP daemon:
> sudo snmpconf -i -g basic_setup
Start the SNMP daemon:
> sudo snmpd -f -Le NET-SNMP version 5.6.1
In a new terminal window, run an snmpwalk on the lm-sensors MIB. Example output is provided:
>snmpwalk -v 2c -c public localhost lmSensors LM-SENSORS-MIB::lmTempSensorsIndex.1 = INTEGER: 1 LM-SENSORS-MIB::lmTempSensorsIndex.2 = INTEGER: 2 LM-SENSORS-MIB::lmTempSensorsIndex.3 = INTEGER: 3 LM-SENSORS-MIB::lmTempSensorsIndex.4 = INTEGER: 4 LM-SENSORS-MIB::lmTempSensorsIndex.18 = INTEGER: 18 LM-SENSORS-MIB::lmTempSensorsIndex.19 = INTEGER: 19 LM-SENSORS-MIB::lmTempSensorsIndex.20 = INTEGER: 20 LM-SENSORS-MIB::lmTempSensorsDevice.1 = STRING: Core 0 LM-SENSORS-MIB::lmTempSensorsDevice.2 = STRING: Core 1 LM-SENSORS-MIB::lmTempSensorsDevice.3 = STRING: Core 3 LM-SENSORS-MIB::lmTempSensorsDevice.4 = STRING: Core 2 LM-SENSORS-MIB::lmTempSensorsDevice.18 = STRING: temp1 LM-SENSORS-MIB::lmTempSensorsDevice.19 = STRING: temp2 LM-SENSORS-MIB::lmTempSensorsDevice.20 = STRING: temp3 LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 37000 LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 38000 LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 35000 LM-SENSORS-MIB::lmTempSensorsValue.4 = Gauge32: 32000 LM-SENSORS-MIB::lmTempSensorsValue.18 = Gauge32: 37000 LM-SENSORS-MIB::lmTempSensorsValue.19 = Gauge32: 26000 LM-SENSORS-MIB::lmTempSensorsValue.20 = Gauge32: 4294965296 LM-SENSORS-MIB::lmFanSensorsIndex.14 = INTEGER: 14 LM-SENSORS-MIB::lmFanSensorsIndex.15 = INTEGER: 15 LM-SENSORS-MIB::lmFanSensorsIndex.16 = INTEGER: 16 LM-SENSORS-MIB::lmFanSensorsIndex.17 = INTEGER: 17 LM-SENSORS-MIB::lmFanSensorsDevice.14 = STRING: fan1 LM-SENSORS-MIB::lmFanSensorsDevice.15 = STRING: fan2 LM-SENSORS-MIB::lmFanSensorsDevice.16 = STRING: fan3 LM-SENSORS-MIB::lmFanSensorsDevice.17 = STRING: fan4 LM-SENSORS-MIB::lmFanSensorsValue.14 = Gauge32: 0 LM-SENSORS-MIB::lmFanSensorsValue.15 = Gauge32: 0 LM-SENSORS-MIB::lmFanSensorsValue.16 = Gauge32: 0 LM-SENSORS-MIB::lmFanSensorsValue.17 = Gauge32: 1834 LM-SENSORS-MIB::lmVoltSensorsIndex.5 = INTEGER: 5 LM-SENSORS-MIB::lmVoltSensorsIndex.6 = INTEGER: 6 LM-SENSORS-MIB::lmVoltSensorsIndex.7 = INTEGER: 7 LM-SENSORS-MIB::lmVoltSensorsIndex.8 = INTEGER: 8 LM-SENSORS-MIB::lmVoltSensorsIndex.9 = INTEGER: 9 LM-SENSORS-MIB::lmVoltSensorsIndex.10 = INTEGER: 10 LM-SENSORS-MIB::lmVoltSensorsIndex.11 = INTEGER: 11 LM-SENSORS-MIB::lmVoltSensorsIndex.12 = INTEGER: 12 LM-SENSORS-MIB::lmVoltSensorsIndex.13 = INTEGER: 13 LM-SENSORS-MIB::lmVoltSensorsIndex.21 = INTEGER: 21 LM-SENSORS-MIB::lmVoltSensorsDevice.5 = STRING: in0 LM-SENSORS-MIB::lmVoltSensorsDevice.6 = STRING: in1 LM-SENSORS-MIB::lmVoltSensorsDevice.7 = STRING: in2 LM-SENSORS-MIB::lmVoltSensorsDevice.8 = STRING: in3 LM-SENSORS-MIB::lmVoltSensorsDevice.9 = STRING: in4 LM-SENSORS-MIB::lmVoltSensorsDevice.10 = STRING: in5 LM-SENSORS-MIB::lmVoltSensorsDevice.11 = STRING: in6 LM-SENSORS-MIB::lmVoltSensorsDevice.12 = STRING: in7 LM-SENSORS-MIB::lmVoltSensorsDevice.13 = STRING: Vbat LM-SENSORS-MIB::lmVoltSensorsDevice.21 = STRING: cpu0_vid LM-SENSORS-MIB::lmVoltSensorsValue.5 = Gauge32: 1327 LM-SENSORS-MIB::lmVoltSensorsValue.6 = Gauge32: 1983 LM-SENSORS-MIB::lmVoltSensorsValue.7 = Gauge32: 3296 LM-SENSORS-MIB::lmVoltSensorsValue.8 = Gauge32: 2911 LM-SENSORS-MIB::lmVoltSensorsValue.9 = Gauge32: 800 LM-SENSORS-MIB::lmVoltSensorsValue.10 = Gauge32: 208 LM-SENSORS-MIB::lmVoltSensorsValue.11 = Gauge32: 96 LM-SENSORS-MIB::lmVoltSensorsValue.12 = Gauge32: 3072 LM-SENSORS-MIB::lmVoltSensorsValue.13 = Gauge32: 3232 LM-SENSORS-MIB::lmVoltSensorsValue.21 = Gauge32: 1218
Additional SNMP Commands
Data within the lm-sensors MIB is presented in tables. The snmptable command can be used to show the data in a table format:
>snmptable -v 2c -c public localhost lmTempSensorsTable SNMP table: LM-SENSORS-MIB::lmTempSensorsTable lmTempSensorsIndex lmTempSensorsDevice lmTempSensorsValue 1 Core 0 37000 2 Core 1 36000 3 Core 3 36000 4 Core 2 37000 18 temp1 38000 19 temp2 27000 20 temp3 4294965296 >snmptable -v 2c -c public localhost lmFanSensorsTable SNMP table: LM-SENSORS-MIB::lmFanSensorsTable lmFanSensorsIndex lmFanSensorsDevice lmFanSensorsValue 14 fan1 0 15 fan2 0 16 fan3 0 17 fan4 1839 >snmptable -v 2c -c public localhost lmVoltSensorsTable SNMP table: LM-SENSORS-MIB::lmVoltSensorsTable lmVoltSensorsIndex lmVoltSensorsDevice lmVoltSensorsValue 5 in0 1343 6 in1 1983 7 in2 3296 8 in3 2927 9 in4 800 10 in5 208 11 in6 96 12 in7 3072 13 Vbat 3232 21 cpu0_vid 1218 >snmptable -v 2c -c public localhost lmMiscSensorsTable LM-SENSORS-MIB::lmMiscSensorsTable: No entries
The snmptranslate command can be used to draw the lm-sensors MIB tree structure:
>snmptranslate -Tp -IR lmSensors +--lmSensors(16) | +--lmSensorsMIB(1) | +--lmTempSensorsTable(2) | | | +--lmTempSensorsEntry(1) | | Index: lmTempSensorsIndex | | | +-- -R-- Integer32 lmTempSensorsIndex(1) | | Range: 0..65535 | +-- -R-- String lmTempSensorsDevice(2) | | Textual Convention: DisplayString | | Size: 0..255 | +-- -R-- Gauge lmTempSensorsValue(3) | +--lmFanSensorsTable(3) | | | +--lmFanSensorsEntry(1) | | Index: lmFanSensorsIndex | | | +-- -R-- Integer32 lmFanSensorsIndex(1) | | Range: 0..65535 | +-- -R-- String lmFanSensorsDevice(2) | | Textual Convention: DisplayString | | Size: 0..255 | +-- -R-- Gauge lmFanSensorsValue(3) | +--lmVoltSensorsTable(4) | | | +--lmVoltSensorsEntry(1) | | Index: lmVoltSensorsIndex | | | +-- -R-- Integer32 lmVoltSensorsIndex(1) | | Range: 0..65535 | +-- -R-- String lmVoltSensorsDevice(2) | | Textual Convention: DisplayString | | Size: 0..255 | +-- -R-- Gauge lmVoltSensorsValue(3) | +--lmMiscSensorsTable(5) | +--lmMiscSensorsEntry(1) | Index: lmMiscSensorsIndex | +-- -R-- Integer32 lmMiscSensorsIndex(1) | Range: 0..65535 +-- -R-- String lmMiscSensorsDevice(2) | Textual Convention: DisplayString | Size: 0..255 +-- -R-- Gauge lmMiscSensorsValue(3)