Device metrics reference

The metric types devices report, with their units, kinds, and labels.

The dashboard shows device metrics by friendly name — “CPU utilization”, “Memory used”, “Mobile Network RSRP”. To query one from the API, write an alerting policy as JSON, or export to an external system, you need its metric type instead: the identifier the platform actually stores it under.

This page lists them.

Reading the table

Metric type is the identifier to use in queries and alerting conditions.

Kind describes how values relate over time, and determines which aggregations make sense:

KindMeaning
GAUGEA measurement at a point in time. Averages and maxima are meaningful.
CUMULATIVEA counter that only increases. Take a rate or a delta; the raw value is rarely what you want.

Value type is INT64, DOUBLE, or DISTRIBUTION. A distribution holds a bucketed spread of values, not a single number, so conditions on it must select a statistic instead of comparing directly.

Labels are the dimensions you can filter and group by, in addition to the resource labels every device metric carries.

All metrics on this page are reported against the monitored resource type devices.edgelq.com/device, whose device_id label identifies the device.

Connectivity and uptime

Metric typeDisplay nameKindValueUnitLabels
devices.edgelq.com/device/connectedDevice connectedGAUGEINT641—
devices.edgelq.com/device/uptimeUptimeGAUGEINT641—

connected is the metric behind connectivity alerting, and the one most fleets alert on first. See Alerting on device metrics.

CPU

Metric typeDisplay nameKindValueUnitLabels
devices.edgelq.com/device/cpu/utilizationpercentageCPU utilization in percentageGAUGEDOUBLE%cpu_number
devices.edgelq.com/device/cpu/load_1mLoad average 1mGAUGEDOUBLE——
devices.edgelq.com/device/cpu/utilizationCPU stats in percentage (deprecated)GAUGEDOUBLE%cpu_number, state

Because cpu_number is a label, per-core series are reported separately. Group across it for a whole-device figure, or a busy single core on an otherwise idle machine will read as low utilization.

Memory

Metric typeDisplay nameKindValueUnitLabels
devices.edgelq.com/device/memory/usedMemory used (total − available)GAUGEINT64By—
devices.edgelq.com/device/memory/utilizationMemory utilizationGAUGEDOUBLE%—
devices.edgelq.com/device/memory/statsMemory usage statistics, as free reports themGAUGEINT64Bystate
devices.edgelq.com/device/memory/totalMemory total (deprecated)GAUGEINT64By—

The state label on memory/stats takes the values buffered, cached, free, used, shared, and available — so this one metric gives the whole breakdown instead of needing several.

Disk

Metric typeDisplay nameKindValueUnitLabels
devices.edgelq.com/device/disk/usedDisk usage in bytesGAUGEINT64Bymount_point, partition_name
devices.edgelq.com/device/disk/utilizationDisk utilization in percentageGAUGEDOUBLE%mount_point, partition_name
devices.edgelq.com/device/disk/totalDisk total size in bytes (deprecated)GAUGEINT64Bymount_point, partition_name

Disk metrics are per mount point. On a device with separate system, data, and configuration areas that is what you want — but an alert must say which mount point it cares about, or a full data partition can hide behind an empty one.

Hardware sensors

Metric typeDisplay nameKindValueUnitLabels
devices.edgelq.com/device/hardware/temperatureHardware temperature (CPU, GPU, ACPI)GAUGEDOUBLEcelsiuschip, sensor_tag
devices.edgelq.com/device/hardware/fanspeedFan speed readingsGAUGEINT64rpmsensor_tag
devices.edgelq.com/device/hardware/voltageVoltage readingsGAUGEDOUBLEvoltchip, sensor_tag
devices.edgelq.com/device/hardware/powerPower usage readingsGAUGEDOUBLEwattchip, sensor_tag
devices.edgelq.com/device/sensorsOutput of lm-sensors (deprecated)GAUGEDOUBLEBychip, feature, key

Availability depends on the hardware: a device with no fan reports no fan speed. Which sensors exist is visible on the device’s detail page before you build an alert on one.

Alert on temperature for devices in uncontrolled environments — a cabinet in direct sun behaves differently in August.

Cellular signal

Metric typeDisplay nameKindValueUnitLabels
devices.edgelq.com/device/modem/rssiMobile Network RSSIGAUGEDISTRIBUTIONdBmaccess_technology, global_cell_id, physical_cell_id, tracking_area_code, arfcn
devices.edgelq.com/device/modem/rsrpMobile Network RSRPGAUGEDISTRIBUTIONdBmas above
devices.edgelq.com/device/modem/rsrqMobile Network RSRQGAUGEDISTRIBUTIONdBas above
devices.edgelq.com/device/modem/snrMobile Network SNRGAUGEDISTRIBUTIONdBas above
devices.edgelq.com/device/modem/rsrp-per-antennaRSRP per antennaGAUGEDISTRIBUTIONdBmaccess_technology, antenna_number
devices.edgelq.com/device/modem/rsrq-per-antennaRSRQ per antennaGAUGEDISTRIBUTIONdBaccess_technology, antenna_number

These are distributions, not single values, because signal strength varies continuously and a single sample is misleading. An alerting condition must pick a statistic from the distribution rather than compare the metric directly.

The cell identity labels make it possible to distinguish “this device has poor signal” from “every device on this cell has poor signal” — which are different problems with different fixes.

Health checks

Metric typeDisplay nameKindValueUnitLabels
devices.edgelq.com/device/healthcheck/statusResults of configured health checksGAUGEINT641healthcheck_name, status_summary
devices.edgelq.com/device/healthcheck/http/responsetimeHTTP response time for health checkGAUGEDOUBLEmshealthcheck_name
devices.edgelq.com/device/healthcheck/network/rttRound-trip time during health checkGAUGEDOUBLEmshealthcheck_name

These appear only for health checks you have configured, and the healthcheck_name label is the name you gave the check. Round-trip time is available for HTTP and ICMP checks.

Alerting on response time as well as status catches degradation before outright failure, which is usually the more useful signal.

Network interfaces

Metric typeDisplay nameKindValueUnitLabels
devices.edgelq.com/device/interface/bytes_receivedBytes receivedCUMULATIVEINT64Byinterface_name
devices.edgelq.com/device/interface/bytes_sentBytes sentCUMULATIVEINT64Byinterface_name
devices.edgelq.com/device/interface/packets_receivedPackets receivedCUMULATIVEINT64—interface_name
devices.edgelq.com/device/interface/packets_sentPackets sentCUMULATIVEINT64—interface_name
devices.edgelq.com/device/interface/drops_inIncoming packet errors or dropsCUMULATIVEINT64—interface_name
devices.edgelq.com/device/interface/drops_outOutgoing packet errors or dropsCUMULATIVEINT64—interface_name

All six are cumulative counters, so alert on a rate rather than a value. A threshold on the raw number would fire on every device eventually, purely through uptime.

Drops are the interesting ones on cellular and Wi-Fi links, where a rising drop rate often precedes a connectivity alert and gives you earlier warning.

Discovering metrics yourself

This list covers metrics devices report. Applications, and any service you enable, contribute their own. The authoritative list for your project is the metric descriptors it holds, which you can read directly:

cuttle monitoring list metric-descriptors --project $PROJECT -o json

Each descriptor carries the same information as the tables above, so this is also the way to check units and label keys for a metric not listed here.

Next steps