diff --git a/.packaging/prometheus-junos-exporter.service b/.packaging/prometheus-junos-exporter.service index aa413e95..16c3c11a 100644 --- a/.packaging/prometheus-junos-exporter.service +++ b/.packaging/prometheus-junos-exporter.service @@ -1,5 +1,5 @@ [Unit] -Description=JunOS exporter for FreeRadius +Description=Prometheus exporter for JunOS Documentation=https://github.com/czerwonk/junos_exporter/ [Service] @@ -7,7 +7,7 @@ Restart=on-failure DynamicUser=yes User=prometheus EnvironmentFile=/etc/default/prometheus-junos-exporter -ExecStart=/usr/local/bin/junos_exporter $ARGS +ExecStart=/usr/bin/junos_exporter $ARGS [Install] -WantedBy=multi-user.target \ No newline at end of file +WantedBy=multi-user.target diff --git a/go.mod b/go.mod index 493734bc..75867daa 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.20.0 go.opentelemetry.io/otel/sdk v1.20.0 go.opentelemetry.io/otel/trace v1.20.0 - golang.org/x/crypto v0.17.0 + golang.org/x/crypto v0.21.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -21,7 +21,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.1 // indirect github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect go.opentelemetry.io/otel/metric v1.20.0 // indirect - golang.org/x/net v0.18.0 // indirect + golang.org/x/net v0.23.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 // indirect @@ -42,7 +42,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 go.opentelemetry.io/proto/otlp v1.0.0 // indirect - golang.org/x/sys v0.15.0 // indirect - google.golang.org/protobuf v1.31.0 // indirect + golang.org/x/sys v0.18.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 301cdc6c..e06b07e5 100644 --- a/go.sum +++ b/go.sum @@ -64,15 +64,15 @@ go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lI go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= -golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -86,8 +86,8 @@ google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/features/bgp/helper.go b/pkg/features/bgp/helper.go index 7bf120dc..711c73f3 100644 --- a/pkg/features/bgp/helper.go +++ b/pkg/features/bgp/helper.go @@ -45,5 +45,13 @@ func localASNForPeer(p peer) string { return strconv.FormatInt(p.OptionInformation.LocalAs, 10) } - return strconv.FormatInt(p.OptionInformation.LocalSystemAs, 10) + if p.OptionInformation.LocalSystemAs > 0 { + return strconv.FormatInt(p.OptionInformation.LocalSystemAs, 10) + } + + if p.LocalASN > 0 { + return strconv.FormatInt(p.LocalASN, 10) + } + + return "unknown" } diff --git a/pkg/features/bgp/rpc.go b/pkg/features/bgp/rpc.go index fa1bdb79..d15de435 100644 --- a/pkg/features/bgp/rpc.go +++ b/pkg/features/bgp/rpc.go @@ -12,6 +12,7 @@ type peer struct { CFGRTI string `xml:"peer-cfg-rti"` IP string `xml:"peer-address"` ASN string `xml:"peer-as"` + LocalASN int64 `xml:"local-as"` State string `xml:"peer-state"` Group string `xml:"peer-group"` GroupIndex int64 `xml:"peer-group-index"` diff --git a/pkg/features/interfaces/collector.go b/pkg/features/interfaces/collector.go index 6ea1178b..9424a2c0 100644 --- a/pkg/features/interfaces/collector.go +++ b/pkg/features/interfaces/collector.go @@ -286,8 +286,8 @@ func (c *interfaceCollector) collectForInterface(s *interfaceStats, device *conn } speed := "0" - if strings.Contains(s.Speed, "mbps") { - speed = strings.Replace(s.Speed, "mbps", "000000", 1) + if strings.Contains(strings.ToLower(s.Speed), "mbps") { + speed = strings.Replace(strings.ToLower(s.Speed), "mbps", "000000", 1) } if strings.Contains(s.Speed, "Gbps") { speed = strings.Replace(s.Speed, "Gbps", "000000000", 1) @@ -307,6 +307,9 @@ func (c *interfaceCollector) collectForInterface(s *interfaceStats, device *conn speed = strings.Replace(s.Speed, "Unlimited", "0", 1) } + // Trimming all white spaces in the entire string + speed = strings.ReplaceAll(speed, " ", "") + sp64, _ := strconv.ParseFloat(speed, 64) if s.BPDUError {