Skip to content

Commit

Permalink
Merge branch 'main' into superq/0.23.0-rc.0
Browse files Browse the repository at this point in the history
  • Loading branch information
SuperQ authored Jul 6, 2023
2 parents 1ff92dd + 81a8aa6 commit 33f98e5
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 21 deletions.
10 changes: 6 additions & 4 deletions .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
---
# This action is synced from https://github.com/prometheus/prometheus
name: golangci-lint
on:
push:
Expand All @@ -18,13 +20,13 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v3
- name: install Go
uses: actions/setup-go@v2
uses: actions/setup-go@v3
with:
go-version: 1.18.x
go-version: 1.20.x
- name: Install snmp_exporter/generator dependencies
run: sudo apt-get update && sudo apt-get -y install libsnmp-dev
if: github.repository == 'prometheus/snmp_exporter'
- name: Lint
uses: golangci/golangci-lint-action@v3.2.0
uses: golangci/golangci-lint-action@v3.4.0
with:
version: v1.45.2
version: v1.53.3
6 changes: 6 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,9 @@ linters-settings:
- (net/http.ResponseWriter).Write
# Never check for logger errors.
- (github.com/go-kit/log.Logger).Log
revive:
rules:
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-parameter
- name: unused-parameter
severity: warning
disabled: true
3 changes: 1 addition & 2 deletions .yamllint
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,4 @@ rules:
config/testdata/section_key_dup.bad.yml
line-length: disable
truthy:
ignore: |
.github/workflows/*.yml
check-keys: false
28 changes: 23 additions & 5 deletions collector/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -566,10 +566,7 @@ func pduToSamples(indexOids []int, pdu *gosnmp.SnmpPDU, metric *config.Metric, o

if typeMapping, ok := combinedTypeMapping[metricType]; ok {
// Lookup associated sub type in previous object.
oids := strings.Split(metric.Oid, ".")
i, _ := strconv.Atoi(oids[len(oids)-1])
oids[len(oids)-1] = strconv.Itoa(i - 1)
prevOid := fmt.Sprintf("%s.%s", strings.Join(oids, "."), listToOid(indexOids))
prevOid := fmt.Sprintf("%s.%s", getPrevOid(metric.Oid), listToOid(indexOids))
if prevPdu, ok := oidToPdu[prevOid]; ok {
val := int(getPduValue(&prevPdu))
if t, ok := typeMapping[val]; ok {
Expand Down Expand Up @@ -872,6 +869,13 @@ func indexOidsAsString(indexOids []int, typ string, fixedSize int, implied bool,
}
}

func getPrevOid(oid string) string {
oids := strings.Split(oid, ".")
i, _ := strconv.Atoi(oids[len(oids)-1])
oids[len(oids)-1] = strconv.Itoa(i - 1)
return strings.Join(oids, ".")
}

func indexesToLabels(indexOids []int, metric *config.Metric, oidToPdu map[string]gosnmp.SnmpPDU, metrics internalMetrics) map[string]string {
labels := map[string]string{}
labelOids := map[string][]int{}
Expand All @@ -898,7 +902,21 @@ func indexesToLabels(indexOids []int, metric *config.Metric, oidToPdu map[string
oid = fmt.Sprintf("%s.%s", oid, listToOid(labelOids[label]))
}
if pdu, ok := oidToPdu[oid]; ok {
labels[lookup.Labelname] = pduValueAsString(&pdu, lookup.Type, metrics)
t := lookup.Type
if typeMapping, ok := combinedTypeMapping[lookup.Type]; ok {
// Lookup associated sub type in previous object.
prevOid := getPrevOid(lookup.Oid)
for _, label := range lookup.Labels {
prevOid = fmt.Sprintf("%s.%s", prevOid, listToOid(labelOids[label]))
}
if prevPdu, ok := oidToPdu[prevOid]; ok {
val := int(getPduValue(&prevPdu))
if ty, ok := typeMapping[val]; ok {
t = ty
}
}
}
labels[lookup.Labelname] = pduValueAsString(&pdu, t, metrics)
labelOids[lookup.Labelname] = []int{int(gosnmp.ToBigInt(pdu.Value).Int64())}
} else {
labels[lookup.Labelname] = ""
Expand Down
22 changes: 20 additions & 2 deletions collector/collector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -531,9 +531,8 @@ func TestPduToSample(t *testing.T) {
if c.shouldErr {
errHappened = true
continue
} else {
t.Fatalf("Error writing metric: %v", err)
}
t.Fatalf("Error writing metric: %v", err)
}
got := strings.ReplaceAll(m.Desc().String()+" "+metric.String(), " ", " ")
if _, ok := expected[got]; !ok {
Expand Down Expand Up @@ -1006,6 +1005,25 @@ func TestIndexesToLabels(t *testing.T) {
},
result: map[string]string{"a": "1", "chainable_id": "42", "targetlabel": "targetvalue"},
},
{
oid: []int{1, 8, 1},
metric: config.Metric{
Indexes: []*config.Index{
{Labelname: "lldpRemTimeMark", Type: "gauge"},
{Labelname: "lldpRemLocalPortNum", Type: "gauge"},
{Labelname: "lldpRemIndex", Type: "gauge"},
},
Lookups: []*config.Lookup{
{Labels: []string{"lldpRemLocalPortNum"}, Labelname: "lldpLocPortId", Oid: "1.1.3", Type: "LldpPortId"},
},
},
oidToPdu: map[string]gosnmp.SnmpPDU{
"1.1.9.1.8.1": gosnmp.SnmpPDU{Value: "hostname"},
"1.1.2.8": gosnmp.SnmpPDU{Value: 3},
"1.1.3.8": gosnmp.SnmpPDU{Value: []byte{4, 5, 6, 7, 8, 9}},
},
result: map[string]string{"lldpRemTimeMark": "1", "lldpRemLocalPortNum": "8", "lldpRemIndex": "1", "lldpLocPortId": "04:05:06:07:08:09"},
},
}
for _, c := range cases {
got := indexesToLabels(c.oid, &c.metric, c.oidToPdu, internalMetrics{})
Expand Down
10 changes: 2 additions & 8 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,7 @@ type Module struct {
func (c *Module) UnmarshalYAML(unmarshal func(interface{}) error) error {
*c = DefaultModule
type plain Module
if err := unmarshal((*plain)(c)); err != nil {
return err
}
return nil
return unmarshal((*plain)(c))
}

// ConfigureSNMP sets the various version and auth settings.
Expand Down Expand Up @@ -286,10 +283,7 @@ type RegexpExtract struct {
func (c *RegexpExtract) UnmarshalYAML(unmarshal func(interface{}) error) error {
*c = DefaultRegexpExtract
type plain RegexpExtract
if err := unmarshal((*plain)(c)); err != nil {
return err
}
return nil
return unmarshal((*plain)(c))
}

// Regexp encapsulates a regexp.Regexp and makes it YAML marshalable.
Expand Down

0 comments on commit 33f98e5

Please sign in to comment.