Hardware Monitoring

NetXMS can monitor hardware health including temperatures, fan speeds, voltages, and power supply status through various protocols and interfaces.

Overview

Hardware monitoring data sources in NetXMS:

  • SNMP — most network equipment and servers expose hardware sensors via SNMP

  • Agent subagents — platform-specific hardware access

  • Device drivers — vendor-specific hardware monitoring

SNMP-Based Hardware Monitoring

Many devices expose hardware health information through SNMP MIBs:

Entity MIB (ENTITY-MIB)

The Entity MIB provides physical entity information (chassis, modules, ports):

OID Description

entPhysicalDescr

Physical entity description

entPhysicalClass

Entity class (chassis, module, port, sensor, etc.)

entPhysicalName

Entity name

Entity Sensor MIB (ENTITY-SENSOR-MIB)

Provides sensor readings for temperature, voltage, current, and power:

OID Description

entPhySensorType

Sensor type (temperature, voltage, current, power, etc.)

entPhySensorValue

Current sensor reading

entPhySensorOperStatus

Operational status (ok, unavailable, nonoperational)

Vendor-Specific MIBs

Many vendors provide additional hardware monitoring MIBs:

  • Cisco — CISCO-ENVMON-MIB for environment monitoring

  • HP/HPE — CPQHLTH-MIB for ProLiant health

  • Dell — DELL-RAC-MIB for iDRAC monitoring

  • APC — PowerNet-MIB for UPS and PDU monitoring

See MIB Management for loading vendor MIBs.

Agent-Based Hardware Monitoring

lm-sensors Subagent (Linux)

The lmsensors.nsm subagent reads hardware sensors via the lm_sensors library (libsensors).

SubAgent = lmsensors.nsm

[LMSENSORS]
UseFahrenheit = no
ConfigFile = /etc/custom-sensors.conf

Parameters in the [LMSENSORS] section:

Parameter Default Description

UseFahrenheit

no

Convert temperature readings to Fahrenheit

ConfigFile

(empty)

Path to custom sensors.conf file. If not set, libsensors uses its own default configuration.

The subagent exposes a single metric that can read any sensor value:

LMSensors.Value(chip,label)

The chip and label arguments correspond to the output of the sensors command. Examples:

LMSensors.Value(coretemp-isa-0001,Core 1)
LMSensors.Value(w83627dhg-isa-0290,AVCC)
LMSensors.Value(nct6776-isa-0290,fan1)

Supported sensor types: temperature, voltage, fan speed, power, energy, current, CPU VID.

The lm_sensors package must be installed and configured on the monitored system. Run sensors-detect first to identify available sensors.

DS18x20 Temperature Sensor Subagent (Linux)

The ds18x20.nsm subagent reads Dallas/Maxim DS18x20 1-Wire temperature sensors via the Linux kernel 1-Wire driver (/sys/bus/w1/devices/).

SubAgent = ds18x20.nsm

[DS18X20]
Sensor = outdoor:28-0000045ab123
Sensor = indoor:28-0000045cd456

The Sensor parameter maps an alias to a 1-Wire device ID. Can be repeated.

Parameter Description

Sensor.Temperature(alias)

Temperature in Celsius from the named sensor

Sensor.Temperature(deviceId)

Temperature using raw 1-Wire device ID (e.g. 28-0000045ab123)

List Description

DS18X20.SensorNames

Names of all configured (aliased) sensors

Raspberry Pi Subagent

The rpi.nsm subagent provides GPIO access and DHT22 sensor readings on Raspberry Pi systems.

SubAgent = rpi.nsm

[RPI]
InputPins = 17,27
OutputPins = 22,23
Parameter Default Description

InputPins

Comma-separated GPIO pin numbers to configure as INPUT

OutputPins

Comma-separated GPIO pin numbers to configure as OUTPUT

DisableDHT22

no

Disable DHT22 sensor data collection

Metrics:

Parameter Description

GPIO.PinState(pin)

State of GPIO pin: 1 (HIGH) or 0 (LOW)

Sensors.Humidity

Relative humidity (%) from DHT22 sensor on GPIO pin 4

Sensors.Temperature

Temperature from DHT22 sensor on GPIO pin 4

System.CPU.Temperature

Raspberry Pi CPU temperature (from thermal zone)

Actions:

Action Description

GPIO.SetPinState

Set GPIO pin state. Arguments: pin number, state (1=HIGH, 0=LOW)

The DHT22 sensor is hardwired to GPIO pin 4 and polled every 1.5 seconds.

Windows Hardware (WMI)

On Windows, hardware information is available through the WMI subagent. See OS monitoring for WMI details including:

  • ACPI thermal zone temperatures

  • Hardware network adapter details

  • Security product detection (antivirus, firewall, antispyware)

  • Generic WMI queries for any hardware class

RAID and Storage Health

RAID Controller Monitoring

Monitor RAID array health through vendor-specific tools and external metrics:

ExternalMetric = RAID.Status:/opt/MegaRAID/storcli64 /c0/v0 show | grep State | awk '{print $3}'
ExternalMetric = RAID.DiskErrors:/opt/MegaRAID/storcli64 /c0/e252/s0 show | grep 'Media Error' | awk '{print $4}'

Disk SMART Monitoring

The agent provides native SMART monitoring through the PhysicalDisk.* metrics — no external tools are required. Commonly used metrics include:

  • PhysicalDisk.SmartStatus(device) — overall SMART health status

  • PhysicalDisk.Temperature(device) — disk temperature

  • PhysicalDisk.SmartAttr(device, attribute) — value of a specific SMART attribute

  • PhysicalDisk.PowerOnTime(device) and PhysicalDisk.PowerCycles(device) — usage counters

  • PhysicalDisk.Model(device) and PhysicalDisk.SerialNumber(device) — device identification

Use the PhysicalDisk.Devices list or table to enumerate available disks. See Physical Disk Metrics for the full metric reference.

If you need smartctl-specific attributes not covered by the native metrics, define an ExternalMetric as a fallback:

ExternalMetric = Disk.ReallocatedSectors(*):smartctl -A /dev/$1 | grep Reallocated_Sector | awk '{print $10}'

For each ExternalMetric definition the agent automatically provides a companion <name>.ExitCode metric (e.g. RAID.Status.ExitCode) returning the exit code of the command, which can be monitored to detect tool failures.

Power Supply Monitoring

For server power supply redundancy monitoring:

  • SNMP tables on server management controllers report PSU status (present, failed, redundancy lost)

  • UPS monitoring for external power protection (see UPS Monitoring)

Hardware Information Metrics

The NetXMS agent provides hardware inventory metrics via SMBIOS/DMI data on Linux, Windows, FreeBSD, and Solaris systems (a subset is available on AIX). These metrics are available as DCIs for hardware asset tracking and inventory.

Hardware parameters are sourced from SMBIOS/DMI data, available on Linux, Windows, FreeBSD, and Solaris (a subset on AIX). On Solaris, the full SMBIOS metric set is available on x86 only; SPARC systems expose only Hardware.System.Manufacturer and Hardware.System.Product. Use the corresponding Hardware.* list or table to enumerate available devices.

System Information

Hardware.System.MachineId

Unique machine identifier.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris, AIX

Hardware.System.Manufacturer

System manufacturer.

Data Type

String

Platforms

Linux, Windows, macOS, FreeBSD, Solaris, AIX

Hardware.System.Product

Product model.

Data Type

String

Platforms

Linux, Windows, macOS, FreeBSD, Solaris, AIX

Hardware.System.ProductCode

Product code.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Hardware.System.SerialNumber

System serial number. Provided by the agent core on all platforms.

Data Type

String

Platforms

All

Hardware.System.Version

System version.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Hardware.WakeUpEvent

Last system wake event.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Baseboard

Hardware.Baseboard.Manufacturer

Baseboard manufacturer.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Hardware.Baseboard.Product

Baseboard product identifier.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Hardware.Baseboard.SerialNumber

Baseboard serial number.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Hardware.Baseboard.Type

Baseboard type.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Hardware.Baseboard.Version

Baseboard version.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Battery

All battery metrics take a 0-based battery index as argument.

Hardware.Battery.Capacity(index)

Battery capacity rating (mWh).

Data Type

Unsigned Integer

Platforms

Linux, Windows, FreeBSD, Solaris

Table 1. Arguments
Argument Type Description

index

Integer

Battery index (0-based)

Hardware.Battery.Chemistry(index)

Battery chemistry type.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 2. Arguments
Argument Type Description

index

Integer

Battery index (0-based)

Hardware.Battery.Location(index)

Physical location.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 3. Arguments
Argument Type Description

index

Integer

Battery index (0-based)

Hardware.Battery.ManufactureDate(index)

Production date.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 4. Arguments
Argument Type Description

index

Integer

Battery index (0-based)

Hardware.Battery.Manufacturer(index)

Battery manufacturer.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 5. Arguments
Argument Type Description

index

Integer

Battery index (0-based)

Hardware.Battery.Name(index)

Battery name identifier.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 6. Arguments
Argument Type Description

index

Integer

Battery index (0-based)

Hardware.Battery.SerialNumber(index)

Serial number.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 7. Arguments
Argument Type Description

index

Integer

Battery index (0-based)

Hardware.Battery.Voltage(index)

Voltage rating (mV).

Data Type

Unsigned Integer

Platforms

Linux, Windows, FreeBSD, Solaris

Table 8. Arguments
Argument Type Description

index

Integer

Battery index (0-based)

Memory Device

All memory device metrics take a 0-based device index as argument.

Hardware.MemoryDevice.Bank(index)

Memory bank location.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 9. Arguments
Argument Type Description

index

Integer

Memory device index (0-based)

Hardware.MemoryDevice.ConfiguredSpeed(index)

Configured speed (MHz).

Data Type

Unsigned Integer

Platforms

Linux, Windows, FreeBSD, Solaris

Table 10. Arguments
Argument Type Description

index

Integer

Memory device index (0-based)

Hardware.MemoryDevice.FormFactor(index)

Physical form factor.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 11. Arguments
Argument Type Description

index

Integer

Memory device index (0-based)

Hardware.MemoryDevice.Location(index)

Installation location.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 12. Arguments
Argument Type Description

index

Integer

Memory device index (0-based)

Hardware.MemoryDevice.Manufacturer(index)

Memory manufacturer.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 13. Arguments
Argument Type Description

index

Integer

Memory device index (0-based)

Hardware.MemoryDevice.MaxSpeed(index)

Maximum supported speed (MHz).

Data Type

Unsigned Integer (String on Solaris)

Platforms

Linux, Windows, FreeBSD, Solaris

Table 14. Arguments
Argument Type Description

index

Integer

Memory device index (0-based)

Hardware.MemoryDevice.PartNumber(index)

Part number.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 15. Arguments
Argument Type Description

index

Integer

Memory device index (0-based)

Hardware.MemoryDevice.SerialNumber(index)

Serial number.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 16. Arguments
Argument Type Description

index

Integer

Memory device index (0-based)

Hardware.MemoryDevice.Size(index)

Memory capacity.

Data Type

Unsigned Integer 64 (Windows), String (Linux, FreeBSD, Solaris)

Platforms

Linux, Windows, FreeBSD, Solaris

Table 17. Arguments
Argument Type Description

index

Integer

Memory device index (0-based)

Hardware.MemoryDevice.Type(index)

Memory type (e.g., DDR4, DDR5).

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 18. Arguments
Argument Type Description

index

Integer

Memory device index (0-based)

Processor

All processor metrics take a 0-based processor index as argument.

Hardware.Processor.Cores(index)

Physical core count.

Data Type

Unsigned Integer

Platforms

Linux, Windows, FreeBSD, Solaris

Table 19. Arguments
Argument Type Description

index

Integer

Processor index (0-based)

Hardware.Processor.CurrentSpeed(index)

Operating frequency (MHz).

Data Type

Unsigned Integer

Platforms

Linux, Windows, FreeBSD, Solaris

Table 20. Arguments
Argument Type Description

index

Integer

Processor index (0-based)

Hardware.Processor.Family(index)

Processor family.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 21. Arguments
Argument Type Description

index

Integer

Processor index (0-based)

Hardware.Processor.Manufacturer(index)

Processor vendor.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 22. Arguments
Argument Type Description

index

Integer

Processor index (0-based)

Hardware.Processor.MaxSpeed(index)

Maximum frequency (MHz).

Data Type

Unsigned Integer

Platforms

Linux, Windows, FreeBSD, Solaris

Table 23. Arguments
Argument Type Description

index

Integer

Processor index (0-based)

Hardware.Processor.PartNumber(index)

Part number.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 24. Arguments
Argument Type Description

index

Integer

Processor index (0-based)

Hardware.Processor.SerialNumber(index)

Serial number.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 25. Arguments
Argument Type Description

index

Integer

Processor index (0-based)

Hardware.Processor.Socket(index)

Socket type.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 26. Arguments
Argument Type Description

index

Integer

Processor index (0-based)

Hardware.Processor.Threads(index)

Thread count.

Data Type

Unsigned Integer

Platforms

Linux, Windows, FreeBSD, Solaris

Table 27. Arguments
Argument Type Description

index

Integer

Processor index (0-based)

Hardware.Processor.Type(index)

Processor type.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 28. Arguments
Argument Type Description

index

Integer

Processor index (0-based)

Hardware.Processor.Version(index)

Version information.

Data Type

String

Platforms

Linux, Windows, FreeBSD, Solaris

Table 29. Arguments
Argument Type Description

index

Integer

Processor index (0-based)

Storage Device

All storage device metrics take a 0-based device index as argument.

Hardware.StorageDevice.BusType(index)

Bus type identifier.

Data Type

String

Platforms

Windows

Table 30. Arguments
Argument Type Description

index

Integer

Storage device index (0-based)

Hardware.StorageDevice.IsRemovable(index)

Removable device flag (1=yes, 0=no).

Data Type

Integer

Platforms

Windows

Table 31. Arguments
Argument Type Description

index

Integer

Storage device index (0-based)

Hardware.StorageDevice.Manufacturer(index)

Manufacturer.

Data Type

String

Platforms

Windows

Table 32. Arguments
Argument Type Description

index

Integer

Storage device index (0-based)

Hardware.StorageDevice.Product(index)

Product name.

Data Type

String

Platforms

Windows

Table 33. Arguments
Argument Type Description

index

Integer

Storage device index (0-based)

Hardware.StorageDevice.Revision(index)

Firmware revision.

Data Type

String

Platforms

Windows

Table 34. Arguments
Argument Type Description

index

Integer

Storage device index (0-based)

Hardware.StorageDevice.SerialNumber(index)

Serial number.

Data Type

String

Platforms

Windows

Table 35. Arguments
Argument Type Description

index

Integer

Storage device index (0-based)

Hardware.StorageDevice.Size(index)

Size in bytes.

Data Type

Unsigned Integer 64

Platforms

Windows

Table 36. Arguments
Argument Type Description

index

Integer

Storage device index (0-based)

Hardware.StorageDevice.Type(index)

Device type.

Data Type

Integer

Platforms

Windows

Table 37. Arguments
Argument Type Description

index

Integer

Storage device index (0-based)

Hardware.StorageDevice.TypeDescription(index)

Device type description.

Data Type

String

Platforms

Windows

Table 38. Arguments
Argument Type Description

index

Integer

Storage device index (0-based)

Thresholds for Hardware Metrics

Recommended threshold examples:

Metric Warning Critical

CPU temperature

>75°C

>85°C

Ambient temperature

>30°C

>40°C

Fan speed

<2000 RPM

<1000 RPM

Voltage (deviation)

>5% from nominal

>10% from nominal

Adjust thresholds based on hardware specifications and environmental conditions.

See Thresholds for configuration details.