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.
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 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 ...
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)