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 |
|---|---|
|
Physical entity description |
|
Entity class (chassis, module, port, sensor, etc.) |
|
Entity name |
Entity Sensor MIB (ENTITY-SENSOR-MIB)
Provides sensor readings for temperature, voltage, current, and power:
| OID | Description |
|---|---|
|
Sensor type (temperature, voltage, current, power, etc.) |
|
Current sensor reading |
|
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 |
|---|---|---|
|
|
Convert temperature readings to Fahrenheit |
|
(empty) |
Path to custom |
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 |
|---|---|
|
Temperature in Celsius from the named sensor |
|
Temperature using raw 1-Wire device ID (e.g. |
| List | Description |
|---|---|
|
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 |
|---|---|---|
|
Comma-separated GPIO pin numbers to configure as INPUT |
|
|
Comma-separated GPIO pin numbers to configure as OUTPUT |
|
|
|
Disable DHT22 sensor data collection |
Metrics:
| Parameter | Description |
|---|---|
|
State of GPIO pin: 1 (HIGH) or 0 (LOW) |
|
Relative humidity (%) from DHT22 sensor on GPIO pin 4 |
|
Temperature from DHT22 sensor on GPIO pin 4 |
|
Raspberry Pi CPU temperature (from thermal zone) |
Actions:
| Action | Description |
|---|---|
|
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)andPhysicalDisk.PowerCycles(device)— usage counters -
PhysicalDisk.Model(device)andPhysicalDisk.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 |
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 |
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 |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Battery index (0-based) |
Hardware.Battery.Chemistry(index)
Battery chemistry type.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Battery index (0-based) |
Hardware.Battery.Location(index)
Physical location.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Battery index (0-based) |
Hardware.Battery.ManufactureDate(index)
Production date.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Battery index (0-based) |
Hardware.Battery.Manufacturer(index)
Battery manufacturer.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Battery index (0-based) |
Hardware.Battery.Name(index)
Battery name identifier.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| 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 |
| 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 |
| 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 |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Memory device index (0-based) |
Hardware.MemoryDevice.Location(index)
Installation location.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Memory device index (0-based) |
Hardware.MemoryDevice.Manufacturer(index)
Memory manufacturer.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| 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 |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Memory device index (0-based) |
Hardware.MemoryDevice.PartNumber(index)
Part number.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Memory device index (0-based) |
Hardware.MemoryDevice.SerialNumber(index)
Serial number.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| 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 |
| 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 |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Processor index (0-based) |
Hardware.Processor.Family(index)
Processor family.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Processor index (0-based) |
Hardware.Processor.Manufacturer(index)
Processor vendor.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| 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 |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Processor index (0-based) |
Hardware.Processor.PartNumber(index)
Part number.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Processor index (0-based) |
Hardware.Processor.SerialNumber(index)
Serial number.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Processor index (0-based) |
Hardware.Processor.Socket(index)
Socket type.
Data Type |
String |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Processor index (0-based) |
Hardware.Processor.Threads(index)
Thread count.
Data Type |
Unsigned Integer |
Platforms |
Linux, Windows, FreeBSD, Solaris |
| 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 |
| 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 |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Storage device index (0-based) |
Hardware.StorageDevice.Manufacturer(index)
Manufacturer.
Data Type |
String |
Platforms |
Windows |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Storage device index (0-based) |
Hardware.StorageDevice.Product(index)
Product name.
Data Type |
String |
Platforms |
Windows |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Storage device index (0-based) |
Hardware.StorageDevice.Revision(index)
Firmware revision.
Data Type |
String |
Platforms |
Windows |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Storage device index (0-based) |
Hardware.StorageDevice.SerialNumber(index)
Serial number.
Data Type |
String |
Platforms |
Windows |
| Argument | Type | Description |
|---|---|---|
index |
Integer |
Storage device index (0-based) |
Hardware.StorageDevice.Size(index)
Size in bytes.
Data Type |
Unsigned Integer 64 |
Platforms |
Windows |
| 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.