smartctl_exporter/metrics.go
Zoltan Langi 965204547a I've added support for NVMe drives and also created a docker file so a container can be built.
I've added the following metrics for the NVMe drives:
smart_status, critical_warning, available_spare, media_errors
2019-12-19 11:17:35 +01:00

213 lines
3.8 KiB
Go

package main
import (
"github.com/prometheus/client_golang/prometheus"
)
var (
metricSmartctlVersion = prometheus.NewDesc(
"smartctl_version",
"smartctl version",
[]string{
"json_format_version",
"smartctl_version",
"svn_revision",
"build_info",
},
nil,
)
metricDeviceModel = prometheus.NewDesc(
"smartctl_device",
"Device info",
[]string{
"device",
"interface",
"protocol",
"model_family",
"model_name",
"serial_number",
"ata_additional_product_id",
"firmware_version",
"ata_version",
"sata_version",
},
nil,
)
metricDeviceCapacityBlocks = prometheus.NewDesc(
"smartctl_device_capacity_blocks",
"Device capacity in blocks",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
},
nil,
)
metricDeviceCapacityBytes = prometheus.NewDesc(
"smartctl_device_capacity_bytes",
"Device capacity in bytes",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
},
nil,
)
metricDeviceBlockSize = prometheus.NewDesc(
"smartctl_device_block_size",
"Device block size",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
"blocks_type",
},
nil,
)
metricDeviceInterfaceSpeed = prometheus.NewDesc(
"smartctl_device_interface_speed",
"Device interface speed, bits per second",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
"speed_type",
},
nil,
)
metricDeviceAttribute = prometheus.NewDesc(
"smartctl_device_attribute",
"Device attributes",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
"attribute_name",
"attribute_flags_short",
"attribute_flags_long",
"attribute_value_type",
"attribute_id",
},
nil,
)
metricDevicePowerOnSeconds = prometheus.NewDesc(
"smartctl_device_power_on_seconds",
"Device power on seconds",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
},
nil,
)
metricDeviceRotationRate = prometheus.NewDesc(
"smartctl_device_rotation_rate",
"Device rotation rate",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
},
nil,
)
metricDeviceTemperature = prometheus.NewDesc(
"smartctl_device_temperature",
"Device temperature celsius",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
"temperature_type",
},
nil,
)
metricDevicePowerCycleCount = prometheus.NewDesc(
"smartctl_device_power_cycle_count",
"Device power cycle count",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
},
nil,
)
metricDeviceExitStatus = prometheus.NewDesc(
"smartctl_device_smartctl_exit_status",
"Exit status of smartctl on device",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
},
nil,
)
metricDeviceStatistics = prometheus.NewDesc(
"smartctl_device_statistics",
"Device statistics",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
"statistic_table",
"statistic_name",
"statistic_flags_short",
"statistic_flags_long",
},
nil,
)
metricCriticalWarning = prometheus.NewDesc(
"critical_warning",
"Critical warning counter",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
},
nil,
)
metricAvailableSpare = prometheus.NewDesc(
"available_spare",
"Available spare",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
},
nil,
)
metricMediaErrors = prometheus.NewDesc(
"media_errors",
"Media errors counter",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
},
nil,
)
metricSmartStatus = prometheus.NewDesc(
"smart_status",
"Smart status",
[]string{
"device",
"model_family",
"model_name",
"serial_number",
},
nil,
)
)