Skip to content

Commit

Permalink
feat(exporter): works on 202211 SONiC
Browse files Browse the repository at this point in the history
  • Loading branch information
bluecmd committed Apr 22, 2023
1 parent 1607f10 commit 06d8c53
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 12 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ require (
github.com/prometheus/client_golang v1.15.0
github.com/prometheus/node_exporter v1.5.1-0.20230407113533-b87c6a8826d4
github.com/sirupsen/logrus v1.9.0
gopkg.in/alecthomas/kingpin.v2 v2.2.6
github.com/alecthomas/kingpin/v2 v2.3.2
)

require (
Expand Down
6 changes: 5 additions & 1 deletion manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,11 @@
},
"container": {
"privileged": false,
"volumes": [],
"volumes": [
"/run/systemd:/run/systemd:rw",
"/run/udev/data:/run/udev/data:ro",
"/sys:/sys:ro"
],
"tmpfs": []
},
"cli": {
Expand Down
24 changes: 15 additions & 9 deletions node_collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ import (
"fmt"
"sync"

promflag "github.com/alecthomas/kingpin/v2"
promlog "github.com/go-kit/log"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/node_exporter/collector"
"github.com/sirupsen/logrus"
promflag "gopkg.in/alecthomas/kingpin.v2"
)

type PromLogAdapter struct {
Expand Down Expand Up @@ -75,8 +75,10 @@ type CollectorFactory func(logger promlog.Logger) (collector.Collector, error)

func NewNodeCollector(log *logrus.Logger) (*NodeCollector, error) {
promlogger := &PromLogAdapter{log}
nc := &NodeCollector{}
nc.Collectors = map[string]Collector{}
nc := &NodeCollector{
Collectors: map[string]Collector{},
log: log,
}

for _, c := range []struct {
cf CollectorFactory
Expand All @@ -90,14 +92,15 @@ func NewNodeCollector(log *logrus.Logger) (*NodeCollector, error) {
{collector.NewHwMonCollector, "hwmon"},
{collector.NewLoadavgCollector, "loadavg"},
{collector.NewMeminfoCollector, "meminfo"},
{collector.NewNetClassCollector, "netclass"},
// TODO: netclass seems to fail:
// level=error msg="netclass failed: could not get net class info: failed to read file \"/sys/class/net/Ethernet0/carrier\": invalid argument"
//{collector.NewNetClassCollector, "netclass"},
{collector.NewNetDevCollector, "netdev"},
{collector.NewNetStatCollector, "netstat"},
{collector.NewStatCollector, "stat"},
{collector.NewTimeCollector, "time"},
{collector.NewvmStatCollector, "vmstat"},
{collector.NewSystemdCollector, "systemd"},
{collector.NewNtpCollector, "ntp"},
} {
cc, err := c.cf(promlogger)
if err != nil {
Expand All @@ -108,9 +111,12 @@ func NewNodeCollector(log *logrus.Logger) (*NodeCollector, error) {
return nc, nil
}

func InitNodeFlags() {
// Again, since node_exporter is not a library as such this is a pretty ugly
func InitNodeFlags() error {
// Since node_exporter is not a library as such this is a pretty ugly
// way to set it up as a library. I expect this to break from time to time
// when the node library is upgrade.
promflag.CommandLine.Parse([]string{})
// when the node library is upgraded.
_, err := promflag.CommandLine.Parse([]string{
"--path.procfs", "/proc",
})
return err
}
4 changes: 3 additions & 1 deletion sonic_exporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,9 @@ func main() {
}
defer ln.Close()

InitNodeFlags()
if err := InitNodeFlags(); err != nil {
log.Fatalf("Failed to initialize node collector flags: %v", err)
}

registry := prometheus.NewRegistry()
registry.MustRegister(promcollectors.NewProcessCollector(promcollectors.ProcessCollectorOpts{}))
Expand Down

0 comments on commit 06d8c53

Please sign in to comment.