Add missing nvme attributes to smart plugin (#7575)
This commit is contained in:
parent
dd546797ed
commit
6c1d9f765a
|
|
@ -103,10 +103,48 @@ var (
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"Available Spare": {
|
"Available Spare": {
|
||||||
Name: "Available_Spare",
|
Name: "Available_Spare",
|
||||||
Parse: func(fields, deviceFields map[string]interface{}, str string) error {
|
Parse: parsePercentageInt,
|
||||||
return parseCommaSeparatedInt(fields, deviceFields, strings.TrimSuffix(str, "%"))
|
},
|
||||||
},
|
"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
|
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 {
|
func parseTemperature(fields, deviceFields map[string]interface{}, str string) error {
|
||||||
var temp int64
|
var temp int64
|
||||||
if _, err := fmt.Sscanf(str, "%d C", &temp); err != nil {
|
if _, err := fmt.Sscanf(str, "%d C", &temp); err != nil {
|
||||||
|
|
|
||||||
|
|
@ -611,6 +611,18 @@ func TestGatherNvme(t *testing.T) {
|
||||||
},
|
},
|
||||||
time.Now(),
|
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",
|
testutil.MustMetric("smart_attribute",
|
||||||
map[string]string{
|
map[string]string{
|
||||||
"device": ".",
|
"device": ".",
|
||||||
|
|
@ -636,6 +648,114 @@ func TestGatherNvme(t *testing.T) {
|
||||||
},
|
},
|
||||||
time.Now(),
|
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(),
|
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(),
|
||||||
|
|
@ -1089,7 +1209,7 @@ Power On Hours: 6,038
|
||||||
Unsafe Shutdowns: 355
|
Unsafe Shutdowns: 355
|
||||||
Media and Data Integrity Errors: 0
|
Media and Data Integrity Errors: 0
|
||||||
Error Information Log Entries: 119,699
|
Error Information Log Entries: 119,699
|
||||||
Warning Comp. Temperature Time: 0
|
Warning Comp. Temperature Time: 11
|
||||||
Critical Comp. Temperature Time: 0
|
Critical Comp. Temperature Time: 7
|
||||||
`
|
`
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue