For a ‘lifer’ Unix engineer like me, trying to diagnose subtle problems on a Windows box can be very frustrating. You know the data is in there somewhere, but getting it out can be very tricky. Recently I’ve had a problem with a 2008R2 server and I needed to know the error statistics on each of its many NICs. Most of them are made by Intel, which made things a bit easier, and had the side-effect of revealing data for a couple of Broadcom NICs too.

Prerequisites

For this delicious recipe you will need

  • a Windows 2008R2 server (doubtless other versions of Windows will work too, but the instructions might be different)
  • one or more Intel NICs
  • proper Intel drivers, either from your vendor or from Intel itself
  • a machine you use to make SNMP queries (e.g. a Nagios box)

Installing and configuring the SNMP service

SNMP feature installation using Server Manager

First, you’ll need to install and configure the SNMP service on your 2008R2 machine, if you haven’t already done so. This can be done from Server Manager: click on Features in the left-hand pane, then Add Features in the right-hand pane. Expand SNMP Services and tick SNMP Service. You don’t need SNMP WMI Provider to make this work. Then just click Next and Install, and the feature will be installed.

SNMP service configuration

You’ll then need to configure the service. Note that I had to close and restart Server Manager to get the dialog box to display all the necessary tabs, so it’s probably worth doing that now. When you’ve got it back up, expand Configuration and click on Services, find SNMP Service in the list, right-click on it and choose Properties. The tabs you’ll need to configure is Security (you can also configure the SNMP contact and location fields under Agent if you want to). Un-tick Send authentication trap (unless of course you want this and are configuring traps), then enter the community name and agent IP address(es) that you plan to use. I’ve used the community name ‘public’ here, which is not necessarily wise!

On your management station, you should now be able to do something like

snmpwalk -v 1 -c public yourwindowsbox

and get some results. If you get nothing then you need to fix it before going any further. Check the Windows firewall logs and configuration, and any intervening network filters, to see what’s going wrong.

Installing the Intel SNMP agent

Warning: this involves running the Intel driver installation program. While it shouldn’t install drivers if you don’t tell it to, it’s probably worth doing this under conditions where it doesn’t matter if all your NICs go down!

Getting the driver you need may be easier said than done. If I do the sensible thing (look at Device Manager to find that my card is an ‘Intel(R) Gigabit VT Quad Port Server Adapter’, then find the thing on Intel’s website), I only find drivers for Linux and FreeBSD. You might do better with your card, but I eventually found what I needed on Dell’s support site, so it might be worth going to your vendor if you don’t get any joy from Intel.

Intel driver installation options


Different vendors package drivers in different ways, but eventually you should end up with a choice of features to install. Drivers should already be selected; if it isn’t, you should of course install them (which will almost certainly cause connections to drop). The only other thing you need is the SNMP agent, although I do recommend ‘PROSet for Windows Device Manager’ which will add some device-specific tabs with extra configuration options and help. You may or may not want the other stuff. If no new drivers are required, the installer will only take a few seconds to do its thing.

Configuring the management station

Now that you’ve configured your Windows box, you should be able to retrieve all the Intel-specific information. However, to make any sense of it you’ll need to install the MIBs on your management station. They should be supplied with the driver: you want a file called INTELLAN.mib (my installer dropped it in C:\Intel\W2k3_8_64\SNMP). Exactly what you do with this file depends on the client software you’re using on your management station. Debian/Ubuntu boxes want the file to be in /usr/share/snmp/mibs and to end in .txt instead of .mib. Once installed, you can

snmpwalk -v 1 -c public -m ALL yourwindowsbox enterprises

and see all the Intel loveliness.

The results

My server returns this list of NIC descriptions:

INTEL-LAN-ADAPTERS-MIB::adapterDriverInfo.7 = STRING: Broadcom L2 NDIS client driver
INTEL-LAN-ADAPTERS-MIB::adapterDriverInfo.10 = STRING: Broadcom L2 NDIS client driver
INTEL-LAN-ADAPTERS-MIB::adapterDriverInfo.13 = STRING: Intel(R) Gigabit VT Quad Port Server Adapter
INTEL-LAN-ADAPTERS-MIB::adapterDriverInfo.15 = STRING: Intel(R) Gigabit VT Quad Port Server Adapter
INTEL-LAN-ADAPTERS-MIB::adapterDriverInfo.16 = STRING: Intel(R) Gigabit VT Quad Port Server Adapter
INTEL-LAN-ADAPTERS-MIB::adapterDriverInfo.17 = STRING: Intel(R) Gigabit VT Quad Port Server Adapter

As you can see, there are two Broadcom and four Intel devices. Some metrics are only returned for the Intels, but quite a few are returned for both which is a bit of a bonus. For example, the error rates I wanted are there

INTEL-LAN-ADAPTERS-MIB::adapterRxErrors.7 = Counter32: 0
INTEL-LAN-ADAPTERS-MIB::adapterRxErrors.10 = Counter32: 0
INTEL-LAN-ADAPTERS-MIB::adapterRxErrors.13 = Counter32: 0
INTEL-LAN-ADAPTERS-MIB::adapterRxErrors.15 = Counter32: 0
INTEL-LAN-ADAPTERS-MIB::adapterRxErrors.16 = Counter32: 0
INTEL-LAN-ADAPTERS-MIB::adapterRxErrors.17 = Counter32: 0

In my case, there weren’t any errors detected by the drivers, so back to square one for me. I hope, however, that this has been more helpful to you.