The native SNMP service in Windows can provide basic metrics like CPU, memory and disk etc, but it doesn’t have “extend” feature in net-snmp, which allows you run a script for application monitoring. Net-snmp can’t be used as replacement for Windows SNMP service because some SNMP extension agent relies on it and known issue like HOST-RESOURCES MIB doesn’t work in net-snmp.
The good news is that you can have net-snmp co-exist with Windows SNMP, you can have nice features like extend ability, in the mean time, pass the other functions to native Windows SNMP service.
As of Net-SNMP 5.4, the Net-SNMP agent is able to load the Windows SNMP service extension DLLs by using the Net-SNMP winExtDLL extension. The extension requires the net-snmp binary to be native (32bit net-snmp extension won’t work in 64bit Windows).
Net-snmp 64bit binary is hard to find, it seems only net-snmp-5.5.0-2 has 64bit binary pre-compiled, you might need to compile yourself for other versions.
Install net-snmp
Run the net-snmp binary installer select “with Windows Extenstion” instead of standard agent, unselect “net-snmp trap service” and “Perl SNMP modules”, the default path is c:\usr
Configure net-snmp
Register net-snmp as Windows service
Edit c:\usr\registeragent.bat to disable modules conflicting to Windows by adding parameter.
“-I-udp,udpTable,tcp,tcpTable,icmp,ip,interfaces,snmp_mib”
(Note: if system_mib is also disabled, SNMPv2-MIB::sysuptime won’t report correct time)
Run c:\usr\registeragent.bat
Edit C:\usr\etc\snmp\snmpd.conf
rocommunity public 192.168.1.10 #Test extend feature to execute a script, the script path must use Unix style ‘/’ extend userscript c:/temp/test1.bat
Start Windows service “net-snmp agent”(Native SNMP service must be stopped)
Test
#Test standard SNMP metrics, the HOST-RESOURCES-MIB is provided by native SNMP service, not net-snmp [root@zabbix]#/usr/bin/snmpwalk -v 2c -c public 192.168.1.20 HOST-RESOURCES-MIB::hrSystemUptime HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (640892116) 74 days, 4:15:21.16 #The extend feature is provided by net-snmp, Execute the script by snmpwalk [root@zabbix]#/usr/bin/snmpwalk -v 2c -Ov -c public 192.168.1.20 'NET-SNMP-EXTEND-MIB::nsExtendOutLine."userscript"' STRING: web-time=80 STRING: web-status=[ok]
Troubleshooting
C:\usr\log\snmpd.log
Check which Windows
modules loaded, start snmpd in command line with debugging “WinExtDLL”
Snmpd.exe -I-udp,udpTable,tcp,tcpTable,icmp,ip,interfaces,snmp_mib -DwinExtDLL