SNMP stands for Simple Network Management Protocol and consists of three key components: managed devices, agents, and network-management systems (NMSs). A managed device is a node that has an SNMP agent and resides on a managed network. These devices can be routers and access server, switches and bridges, hubs, computer hosts, or printers. An agent is a software module residing within a device. This agent translates information into a compatible format with SNMP. An NMS runs monitoring applications. They provide the bulk of processing and memory resources required for network management.
SNMP MIBs, OIDs Overview
MIB stands for Management Information Base and is a collection of information organized hierarchically. These are accessed using a protocol such as SNMP. There are two types of MIBs: scalar and tabular. Scalar objects define a single object instance whereas tabular objects define multiple related object instances grouped in MIB tables.
MIB files for specific devices or systems can be downloaded from here
OIDs or Object Identifiers uniquely identify manged objects in a MIB hierarchy. This can be depicted as a tree, the levels of which are assigned by different organizations. Top level MIB object IDs (OIDs) belong to different standard organizations. Vendors define private branches including managed objects for their own products.
Here is a sample structure of an OID
Iso (1).org(3).dod(6).internet(1).private(4).transition(868).products(2).chassis(4).card(1).slotCps(2)
.cpsSlotSummary(1).cpsModuleTable(1).cpsModuleEntry(1).cpsModuleModel(3).3562.3
Most of the people may be looking for OID’s for Linux OID’s for CPU,Memory and Disk Statistics for this first you need to install SNMP server and clients. If you want to install SNMP server and client installation in linux check here
CPU Statistics
Load
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3
CPU
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0
Memory Statistics
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
Disk Statistics
The snmpd.conf needs to be edited. Add the following (assuming a machine with a single ‘/’ partition):
disk / 100000 (or)
includeAllDisks 10% for all partitions and disks
The OIDs are as follows
Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1
System Uptime: .1.3.6.1.2.1.1.3.0
Examples
These Commands you need to run on the SNMP server
Get available disk space for / on the target host
#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.9.1.7.1
this will return available disk space for the first entry in the ‘disk’ section of snmpd.conf; replace 1 with n for the nth entry
Get the 1-minute system load on the target host
#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.1
Get the 5-minute system load on the target host
#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.2
Get the 15-minute system load on the target host
#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.3
Get amount of available swap space on the target host
#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.4.4.0
hey thank you very much for the OID. In fact, I served much
Sayonara
There is an error on description for OID .1.3.6.1.4.1.2021.4.6.0
It is not “Total RAM used” as stated here, but instead, is the available real memory.
You are right, Eduardo.
The Mem info coming from OIDs 1.3.6.1.4.1.2021.4.4.0 and 1.3.6.1.4.1.2021.4.6.0 is the just the free Swap memory and the free RAM memory in the machine. So, you can get the used Swap memory and the RAM used memory doing the difference between the Total Swap memory and the free Swap memory for the used Swap memory, and the difference between the Total RAM memory and the free RAM memory for the used RAM memory.
The OID 1.3.6.1.4.1.2021.4.11.0 is for the Total free memory in the machine (free Swap memory + free RAM memory).
Regards.
Great article and a nice summary.
Hye does anyone know the OID for getting the remote timestamp from the machine that you are querying? if so It would be much appreciated.
Cheers
John
Looks like the following OID returns current date/time
.1.3.6.1.4.1.2021.100.4.0+
sample:
# date;snmpwalk -Cc -On -v2c -c public localhost .1.3.6.1.4.1.2021.100.4.0
Thu May 21 14:21:47 CDT 2009
.1.3.6.1.4.1.2021.100.4.0 = STRING: Thu May 21 14:21:47 2009
snmptranslate .1.3.6.1.4.1.2021.100.4.0
UCD-SNMP-MIB::versionCDate.0
Nice article, thanks. But that error in Total RAM used: .1.3.6.1.4.1.2021.4.6.0 screwed me up. Can you fix that in your article?
Also, something that may be helpful: According to (http://mail.nl.linux.org/linux-mm/2003-03/msg00077.html) if we did this we could get a reasonable reading of our memory:
(Used – buffers – cached) / Total * 100 = % memory used
So you could get the following (expressed as Perl code):
my $memRealTotalOID = '.1.3.6.1.4.1.2021.4.5.0';
my $memRealAvailOID = '.1.3.6.1.4.1.2021.4.6.0';
my $memRealBuffersOID = '.1.3.6.1.4.1.2021.4.14.0';
my $memRealCachedOID = '.1.3.6.1.4.1.2021.4.15.0';
# Memory Calculations
my $memRealUsed = $memRealTotal - $memRealAvail;
Then you can alert on % RAM used:
my $realPercent = (($memRealUsed - $memRealBuffers - $memRealCached )/ $memRealTotal) * 100;
Hope this helps.
Very good article!
But I have a question about monitoring multicore CPUs.
Is it possible to get load of each core via SNMP ?
If so – wchich OID do I have to watch?
Regards
hi,
unable to get the disk details.Please let me know how get the details like totaldisk,useddisk and availdisk
Thanks in advance
Thank you. It helped a lot to get my redhat system managed.
Please correct the memory mistake (interchanged text of one OID)
@Srinu
For disk info,
On ubuntu:
sudo snmpwalk -c public -v 2c ‘ip address’ .1.3.6.1.4.1.2021.9.1
or
sudo snmpwalk -0 n -c public -v 2c ‘ip address’ .1.3.6.1.4.1.2021.9.1
That output will show you all you need to know and the relationships with your storage devices.
As root user on linux/unix, just remove the sudo from above.
Good Luck!
Careful, “.1.3.6.1.2.1.1.3.0” is not server uptime, it is the uptime of the SNMPd instance…
The right OID for system (e.g. since last boot) uptime is “.1.3.6.1.2.1.25.1.1.0”.
Cheers,
Marc.
I am trying to monitor debian machine in amazon cloud and the oids which you define here doesnt work for them. everytime i use them i get following error
snmpget -v 1 -c public targetip .1.3.6.1.4.1.2021.10.1.3.2
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: UCD-SNMP-MIB::laLoad.2
Could you give me some suggestion how to fix this.
Thanks
there was something wrong with my /etc/snmp/snmpd.conf file. i copy the original snmpd.conf and only change the following section and it started working fine. However the oids which you mentioned still did not work for me. so i saw in my snmpd.conf and there were oids mentioned for load avg cpu usage, i used those and everything was good.
# sec.name source community
#com2sec paranoid default public
com2sec local localhost public
com2sec localnet “requesting servers ip address” public
#com2sec readwrite default private
####
# Second, map the security names into group names:
# sec.model sec.name
group MyROSystem v1 local
group MyROSystem v2c local
group MyROSystem usm local
group MyROGroup v1 localnet
group MyROGroup v2c localnet
group MyROGroup usm localnet
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local
I cannot get to the /snmp.html page… how can I get to that content. I need help in configuring cpu utilization alerts in snmpd.conf…
Hi,
I am unable to get Percentage of Disk Space by using the above SNMP Oid , Please help me out
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
Thanks,
Subbu
I am looking for the OID for Processor Queue Length
Thanks
How about monitoring S.M.A.R.T. values on the hard drives? Or at least, the general health status?
Hye does anyone know the OID for getting the remote timestamp from the machine that you are querying? if so It would be much appreciated.
thank you veeeeeeeeeery muuuuuuch 🙂
it’s very helpful
Hi, thank you!
OID for real system uptime is .1.3.6.1.2.1.25.1.1.0
.1.3.6.1.2.1.1.3.0 shows how long SNMP process has been running.
$ snmpwalk -v 2c -c public srv .1.3.6.1.2.1.25.1.1.0
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (646569178) 74 days, 20:01:31.78
$ snmpwalk -v 2c -c public srv .1.3.6.1.2.1.1.3.0
iso.3.6.1.2.1.1.3.0 = Timeticks: (25678087) 2 days, 23:19:40.87
Can you please add serial number, operation system and Model number OIDS….Thanks
Can you please add serial number , operating system and model number OIDS…Thanks
actuall total RAM used and total RAM free are swapped.. interchange it bro..
Is it possible to get from SNMP information about interfave status? There is an OID for this: 1.3.6.1.6.3.1.1.5.3?
Is it required to configure OS or snmpd ?
Greg