Skip to content

Commit

Permalink
Merge pull request #89 from sseiler-cboe/main
Browse files Browse the repository at this point in the history
  • Loading branch information
galexrt committed Dec 7, 2023
2 parents add8bef + 64c3c27 commit 32e717f
Show file tree
Hide file tree
Showing 20 changed files with 60 additions and 29 deletions.
22 changes: 19 additions & 3 deletions cmd/dellhw_exporter/dellhw_exporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ type CmdLineOpts struct {
metricsAddr string
metricsPath string
enabledCollectors string
monitoredNics string
omReportExecutable string
cmdTimeout int64

Expand Down Expand Up @@ -166,7 +167,15 @@ func (p *program) Start(s service.Service) error {

collector.SetOMReport(omreport.New(omrOpts))

collectors, err := loadCollectors(opts.enabledCollectors)
monitoredNics := []string{}
if len(opts.monitoredNics) > 0 {
for _, nic := range strings.Split(opts.monitoredNics, ",") {
monitoredNics = append(monitoredNics, nic)
log.Infof("Adding %s to list of monitored nics", nic)
}
}

collectors, err := loadCollectors(opts.enabledCollectors, monitoredNics)
if err != nil {
log.Fatalf("Couldn't load collectors: %s", err)
}
Expand Down Expand Up @@ -205,6 +214,7 @@ func init() {

flags.BoolVar(&opts.showCollectors, "collectors-print", false, "If true, print available collectors and exit.")
flags.StringVar(&opts.enabledCollectors, "collectors-enabled", defaultCollectors, "Comma separated list of active collectors")
flags.StringVar(&opts.monitoredNics, "monitored-nics", "", "Comma separated list of nics to monitor (default is to monitor all)")
flags.StringVar(&opts.omReportExecutable, "collectors-omreport", getDefaultOmReportPath(), "Path to the omreport executable (based on the OS (linux or windows) default paths are used if unset)")
flags.Int64Var(&opts.cmdTimeout, "collectors-cmd-timeout", 15, "Command execution timeout for omreport")

Expand Down Expand Up @@ -347,14 +357,20 @@ func execute(name string, c collector.Collector, ch chan<- prometheus.Metric) {
ch <- prometheus.MustNewConstMetric(scrapeSuccessDesc, prometheus.GaugeValue, success, name)
}

func loadCollectors(list string) (map[string]collector.Collector, error) {
func loadCollectors(list string, nicList []string) (map[string]collector.Collector, error) {
collectors := map[string]collector.Collector{}
var c collector.Collector
var err error
for _, name := range strings.Split(list, ",") {
fn, ok := collector.Factories[name]
if !ok {
return nil, fmt.Errorf("collector '%s' not available", name)
}
c, err := fn()
if name == "nics" {
c, err = fn(nicList...)
} else {
c, err = fn()
}
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion collector/chassis.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewChassisCollector returns a new chassisCollector
func NewChassisCollector() (Collector, error) {
func NewChassisCollector(args ...string) (Collector, error) {
return &chassisCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/chassis_batteries.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewChassisBatteriesCollector returns a new chassisBatteriesCollector
func NewChassisBatteriesCollector() (Collector, error) {
func NewChassisBatteriesCollector(args ...string) (Collector, error) {
return &chassisBatteriesCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const Namespace = "dell_hw"
var or *omreport.OMReport

// Factories contains the list of all available collectors.
var Factories = make(map[string]func() (Collector, error))
var Factories = make(map[string]func(...string) (Collector, error))

// Collector is the interface a collector has to implement.
type Collector interface {
Expand Down
2 changes: 1 addition & 1 deletion collector/fans.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewFansCollector returns a new fansCollector
func NewFansCollector() (Collector, error) {
func NewFansCollector(args ...string) (Collector, error) {
return &fansCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/firmwares.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewFirmwaresCollector returns a new firmwaresCollector
func NewFirmwaresCollector() (Collector, error) {
func NewFirmwaresCollector(args ...string) (Collector, error) {
return &firmwaresCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/memory.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewMemoryCollector returns a new memoryCollector
func NewMemoryCollector() (Collector, error) {
func NewMemoryCollector(args ...string) (Collector, error) {
return &memoryCollector{}, nil
}

Expand Down
7 changes: 4 additions & 3 deletions collector/nics.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,21 @@ import (

type nicsCollector struct {
current *prometheus.Desc
nicList []string
}

func init() {
Factories["nics"] = NewNicsCollector
}

// NewNicsCollector returns a new nicsCollector
func NewNicsCollector() (Collector, error) {
return &nicsCollector{}, nil
func NewNicsCollector(nics ...string) (Collector, error) {
return &nicsCollector{nicList: nics}, nil
}

// Update Prometheus metrics
func (c *nicsCollector) Update(ch chan<- prometheus.Metric) error {
nics, err := or.Nics()
nics, err := or.Nics(c.nicList...)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion collector/processors.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewProcessorsCollector returns a new processorsCollector
func NewProcessorsCollector() (Collector, error) {
func NewProcessorsCollector(args ...string) (Collector, error) {
return &processorsCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/ps.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewPsCollector returns new psCollector
func NewPsCollector() (Collector, error) {
func NewPsCollector(args ...string) (Collector, error) {
return &psCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/ps_amps_sysboard_pwr.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewPsAmpsSysboardPwrCollector returns a new psAmpsSysboardPwrCollector
func NewPsAmpsSysboardPwrCollector() (Collector, error) {
func NewPsAmpsSysboardPwrCollector(args ...string) (Collector, error) {
return &psAmpsSysboardPwrCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/storage_battery.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewStorageBatteryCollector returns a new storageBatteryCollector
func NewStorageBatteryCollector() (Collector, error) {
func NewStorageBatteryCollector(args ...string) (Collector, error) {
return &storageBatteryCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/storage_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewStorageControllerCollector returns a new storageControllerCollector
func NewStorageControllerCollector() (Collector, error) {
func NewStorageControllerCollector(args ...string) (Collector, error) {
return &storageControllerCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/storage_enclosure.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewStorageEnclosureCollector returns a new storageEnclosureCollector
func NewStorageEnclosureCollector() (Collector, error) {
func NewStorageEnclosureCollector(args ...string) (Collector, error) {
return &storageEnclosureCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/storage_pdisk.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewStoragePdiskCollector returns a new storagePdiskCollector
func NewStoragePdiskCollector() (Collector, error) {
func NewStoragePdiskCollector(args ...string) (Collector, error) {
return &storagePdiskCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/storage_vdisk.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewStorageVdiskCollector returns a new storageVdiskCollector
func NewStorageVdiskCollector() (Collector, error) {
func NewStorageVdiskCollector(args ...string) (Collector, error) {
return &storageVdiskCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/system.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewSystemCollector returns a new systemCollector
func NewSystemCollector() (Collector, error) {
func NewSystemCollector(args ...string) (Collector, error) {
return &systemCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/temps.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewTempsCollector returns a new tempsCollector
func NewTempsCollector() (Collector, error) {
func NewTempsCollector(args ...string) (Collector, error) {
return &tempsCollector{}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion collector/volts.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func init() {
}

// NewVoltsCollector returns a new voltsCollector
func NewVoltsCollector() (Collector, error) {
func NewVoltsCollector(args ...string) (Collector, error) {
return &voltsCollector{}, nil
}

Expand Down
26 changes: 20 additions & 6 deletions pkg/omreport/omreport.go
Original file line number Diff line number Diff line change
Expand Up @@ -431,8 +431,19 @@ func (or *OMReport) Ps() ([]Value, error) {
}

// Nics returns the connection status of the NICs
func (or *OMReport) Nics() ([]Value, error) {
func (or *OMReport) Nics(nicList ...string) ([]Value, error) {
values := []Value{}
monitorAllNics := false
monitoredNics := make(map[string]bool)

if len(nicList) == 0 {
monitorAllNics = true
}

for _, nic := range nicList {
monitoredNics[nic] = true
}

err := or.readReport(func(fields []string) {
if len(fields) < 5 || fields[0] == indexField {
return
Expand All @@ -445,11 +456,14 @@ func (or *OMReport) Nics() ([]Value, error) {
} else {
ret = "1"
}
values = append(values, Value{
Name: "nic_status",
Value: ret,
Labels: ts,
})
dev := ts["device"]
if monitorAllNics || monitoredNics[dev] {
values = append(values, Value{
Name: "nic_status",
Value: ret,
Labels: ts,
})
}
}, or.getOMReportExecutable(), "chassis", "nics")
return values, err
}
Expand Down

0 comments on commit 32e717f

Please sign in to comment.