Add missing nvme attributes to smart plugin (#7575)
This commit is contained in:
parent
dd546797ed
commit
6c1d9f765a
|
|
@ -103,10 +103,48 @@ var (
|
|||
},
|
||||
},
|
||||
"Available Spare": {
|
||||
Name: "Available_Spare",
|
||||
Parse: func(fields, deviceFields map[string]interface{}, str string) error {
|
||||
return parseCommaSeparatedInt(fields, deviceFields, strings.TrimSuffix(str, "%"))
|
||||
},
|
||||
Name: "Available_Spare",
|
||||
Parse: parsePercentageInt,
|
||||
},
|
||||
"Available Spare Threshold": {
|
||||
Name: "Available_Spare_Threshold",
|
||||
Parse: parsePercentageInt,
|
||||
},
|
||||
"Percentage Used": {
|
||||
Name: "Percentage_Used",
|
||||
Parse: parsePercentageInt,
|
||||
},
|
||||
"Data Units Read": {
|
||||
Name: "Data_Units_Read",
|
||||
Parse: parseDataUnits,
|
||||
},
|
||||
"Data Units Written": {
|
||||
Name: "Data_Units_Written",
|
||||
Parse: parseDataUnits,
|
||||
},
|
||||
"Host Read Commands": {
|
||||
Name: "Host_Read_Commands",
|
||||
Parse: parseCommaSeparatedInt,
|
||||
},
|
||||
"Host Write Commands": {
|
||||
Name: "Host_Write_Commands",
|
||||
Parse: parseCommaSeparatedInt,
|
||||
},
|
||||
"Controller Busy Time": {
|
||||
Name: "Controller_Busy_Time",
|
||||
Parse: parseCommaSeparatedInt,
|
||||
},
|
||||
"Unsafe Shutdowns": {
|
||||
Name: "Unsafe_Shutdowns",
|
||||
Parse: parseCommaSeparatedInt,
|
||||
},
|
||||
"Warning Comp. Temperature Time": {
|
||||
Name: "Warning_Temperature_Time",
|
||||
Parse: parseCommaSeparatedInt,
|
||||
},
|
||||
"Critical Comp. Temperature Time": {
|
||||
Name: "Critical_Temperature_Time",
|
||||
Parse: parseCommaSeparatedInt,
|
||||
},
|
||||
}
|
||||
)
|
||||
|
|
@ -432,6 +470,15 @@ func parseCommaSeparatedInt(fields, _ map[string]interface{}, str string) error
|
|||
return nil
|
||||
}
|
||||
|
||||
func parsePercentageInt(fields, deviceFields map[string]interface{}, str string) error {
|
||||
return parseCommaSeparatedInt(fields, deviceFields, strings.TrimSuffix(str, "%"))
|
||||
}
|
||||
|
||||
func parseDataUnits(fields, deviceFields map[string]interface{}, str string) error {
|
||||
units := strings.Fields(str)[0]
|
||||
return parseCommaSeparatedInt(fields, deviceFields, units)
|
||||
}
|
||||
|
||||
func parseTemperature(fields, deviceFields map[string]interface{}, str string) error {
|
||||
var temp int64
|
||||
if _, err := fmt.Sscanf(str, "%d C", &temp); err != nil {
|
||||
|
|
|
|||
|
|
@ -611,6 +611,18 @@ func TestGatherNvme(t *testing.T) {
|
|||
},
|
||||
time.Now(),
|
||||
),
|
||||
testutil.MustMetric("smart_attribute",
|
||||
map[string]string{
|
||||
"device": ".",
|
||||
"name": "Available_Spare_Threshold",
|
||||
"serial_no": "D704940282?",
|
||||
"model": "TS128GMTE850",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"raw_value": 10,
|
||||
},
|
||||
time.Now(),
|
||||
),
|
||||
testutil.MustMetric("smart_attribute",
|
||||
map[string]string{
|
||||
"device": ".",
|
||||
|
|
@ -636,6 +648,114 @@ func TestGatherNvme(t *testing.T) {
|
|||
},
|
||||
time.Now(),
|
||||
),
|
||||
testutil.MustMetric("smart_attribute",
|
||||
map[string]string{
|
||||
"device": ".",
|
||||
"name": "Percentage_Used",
|
||||
"serial_no": "D704940282?",
|
||||
"model": "TS128GMTE850",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"raw_value": int64(16),
|
||||
},
|
||||
time.Now(),
|
||||
),
|
||||
testutil.MustMetric("smart_attribute",
|
||||
map[string]string{
|
||||
"device": ".",
|
||||
"name": "Data_Units_Read",
|
||||
"serial_no": "D704940282?",
|
||||
"model": "TS128GMTE850",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"raw_value": int64(11836935),
|
||||
},
|
||||
time.Now(),
|
||||
),
|
||||
testutil.MustMetric("smart_attribute",
|
||||
map[string]string{
|
||||
"device": ".",
|
||||
"name": "Data_Units_Written",
|
||||
"serial_no": "D704940282?",
|
||||
"model": "TS128GMTE850",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"raw_value": int64(62288091),
|
||||
},
|
||||
time.Now(),
|
||||
),
|
||||
testutil.MustMetric("smart_attribute",
|
||||
map[string]string{
|
||||
"device": ".",
|
||||
"name": "Host_Read_Commands",
|
||||
"serial_no": "D704940282?",
|
||||
"model": "TS128GMTE850",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"raw_value": int64(135924188),
|
||||
},
|
||||
time.Now(),
|
||||
),
|
||||
testutil.MustMetric("smart_attribute",
|
||||
map[string]string{
|
||||
"device": ".",
|
||||
"name": "Host_Write_Commands",
|
||||
"serial_no": "D704940282?",
|
||||
"model": "TS128GMTE850",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"raw_value": int64(7715573429),
|
||||
},
|
||||
time.Now(),
|
||||
),
|
||||
testutil.MustMetric("smart_attribute",
|
||||
map[string]string{
|
||||
"device": ".",
|
||||
"name": "Controller_Busy_Time",
|
||||
"serial_no": "D704940282?",
|
||||
"model": "TS128GMTE850",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"raw_value": int64(4042),
|
||||
},
|
||||
time.Now(),
|
||||
),
|
||||
testutil.MustMetric("smart_attribute",
|
||||
map[string]string{
|
||||
"device": ".",
|
||||
"name": "Unsafe_Shutdowns",
|
||||
"serial_no": "D704940282?",
|
||||
"model": "TS128GMTE850",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"raw_value": int64(355),
|
||||
},
|
||||
time.Now(),
|
||||
),
|
||||
testutil.MustMetric("smart_attribute",
|
||||
map[string]string{
|
||||
"device": ".",
|
||||
"name": "Warning_Temperature_Time",
|
||||
"serial_no": "D704940282?",
|
||||
"model": "TS128GMTE850",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"raw_value": int64(11),
|
||||
},
|
||||
time.Now(),
|
||||
),
|
||||
testutil.MustMetric("smart_attribute",
|
||||
map[string]string{
|
||||
"device": ".",
|
||||
"name": "Critical_Temperature_Time",
|
||||
"serial_no": "D704940282?",
|
||||
"model": "TS128GMTE850",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"raw_value": int64(7),
|
||||
},
|
||||
time.Now(),
|
||||
),
|
||||
}
|
||||
|
||||
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(),
|
||||
|
|
@ -1089,7 +1209,7 @@ Power On Hours: 6,038
|
|||
Unsafe Shutdowns: 355
|
||||
Media and Data Integrity Errors: 0
|
||||
Error Information Log Entries: 119,699
|
||||
Warning Comp. Temperature Time: 0
|
||||
Critical Comp. Temperature Time: 0
|
||||
Warning Comp. Temperature Time: 11
|
||||
Critical Comp. Temperature Time: 7
|
||||
`
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in New Issue