Add MegaCLI collector
This collector exports the following metrics: - raid_drive_temperature: drive temperature - raid_drive_count: drive error and event counters - raid_adapter_disk_presence: disk presence per adapter
This commit is contained in:
parent
eb17b5fc9d
commit
f47abc5d06
6 changed files with 770 additions and 2 deletions
54
collector/megacli_test.go
Normal file
54
collector/megacli_test.go
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
// +build megacli
|
||||
|
||||
package collector
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
const (
|
||||
testMegaCliAdapter = "fixtures/megacli_adapter.txt"
|
||||
testMegaCliDisks = "fixtures/megacli_disks.txt"
|
||||
|
||||
physicalDevicesExpected = "5"
|
||||
virtualDevicesDegraded = "0"
|
||||
)
|
||||
|
||||
func TestMegaCliAdapter(t *testing.T) {
|
||||
data, err := os.Open(testMegaCliAdapter)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
stats, err := parseMegaCliAdapter(data)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if stats["Device Present"]["Physical Devices"] != physicalDevicesExpected {
|
||||
t.Fatalf("Unexpected device count: %d != %d", stats["Device Present"]["Physical Devices"], physicalDevicesExpected)
|
||||
}
|
||||
|
||||
if stats["Device Present"]["Degraded"] != virtualDevicesDegraded {
|
||||
t.Fatal()
|
||||
}
|
||||
}
|
||||
|
||||
func TestMegaCliDisks(t *testing.T) {
|
||||
data, err := os.Open(testMegaCliDisks)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
stats, err := parseMegaCliDisks(data)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if stats[32][0]["Drive Temperature"] != "37C (98.60 F)" {
|
||||
t.Fatalf("Unexpected drive temperature: %s", stats[32][0]["Drive Temperature"])
|
||||
}
|
||||
|
||||
if stats[32][3]["Predictive Failure Count"] != "23" {
|
||||
t.Fatal()
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue