improve(go.d/snmp profiles): simplify _generic-if.yaml and add interface type tags (#20505)
Ilya Mashchenko committed
Jun 17, 2025 at 17:13 UTC
bc26fbd042eb37a1a8a739b8abf3c4155c5b12ec
4 files changed
+364
-47
src/go/plugin/go.d/collector/snmp/ddsnmp/ddprofiledefinition/metrics.go
+2
-1
@@ -114,7 +114,8 @@ type MetricTagConfig struct {
114
115
IndexTransform []MetricIndexTransform `yaml:"index_transform,omitempty" json:"index_transform,omitempty"`
116
117
- Mapping ListMap[string] `yaml:"mapping,omitempty" json:"mapping,omitempty"`
117
+ MappingRef string `yaml:"mapping_ref,omitempty" json:"mapping_ref,omitempty"`
118
+ Mapping ListMap[string] `yaml:"mapping,omitempty" json:"mapping,omitempty"`
119
120
// Regex
121
// Match/Tags are not exposed as json (UI) since ExtractValue can be used instead
src/go/plugin/go.d/collector/snmp/ddsnmp/profile.go
+26
@@ -64,6 +64,8 @@ func FindProfiles(sysObjId string) []*Profile {
64
}
65
}
66
67
+ enrichProfiles(profiles)
68
+
69
return profiles
70
}
71
@@ -257,3 +259,27 @@ func getProfilesDir() string {
259
}
260
return filepath.Join(executable.Directory, "../../../config/go.d/snmp.profiles/default")
261
}
262
+
263
+func enrichProfiles(profiles []*Profile) {
264
+ for _, prof := range profiles {
265
+ if prof.Definition == nil {
266
+ continue
267
+ }
268
+
269
+ for i := range prof.Definition.Metrics {
270
+ metric := &prof.Definition.Metrics[i]
271
+
272
+ for j := range metric.MetricTags {
273
+ tagCfg := &metric.MetricTags[j]
274
+
275
+ if tagCfg.Mapping != nil {
276
+ continue
277
+ }
278
+
279
+ if tagCfg.MappingRef == "ifType" {
280
+ tagCfg.Mapping = sharedMappings.ifType
281
+ }
282
+ }
283
+ }
284
+ }
285
+}
src/go/plugin/go.d/collector/snmp/ddsnmp/shared.go
new
+309
@@ -0,0 +1,309 @@
1
+// SPDX-License-Identifier: GPL-3.0-or-later
2
+
3
+package ddsnmp
4
+
5
+var sharedMappings = struct {
6
+ ifType map[string]string
7
+}{
8
+ ifType: map[string]string{
9
+ "1": "other",
10
+ "2": "regular1822",
11
+ "3": "hdh1822",
12
+ "4": "ddnX25",
13
+ "5": "rfc877x25",
14
+ "6": "ethernetCsmacd",
15
+ "7": "iso88023Csmacd",
16
+ "8": "iso88024TokenBus",
17
+ "9": "iso88025TokenRing",
18
+ "10": "iso88026Man",
19
+ "11": "starLan",
20
+ "12": "proteon10Mbit",
21
+ "13": "proteon80Mbit",
22
+ "14": "hyperchannel",
23
+ "15": "fddi",
24
+ "16": "lapb",
25
+ "17": "sdlc",
26
+ "18": "ds1",
27
+ "19": "e1",
28
+ "20": "basicISDN",
29
+ "21": "primaryISDN",
30
+ "22": "propPointToPointSerial",
31
+ "23": "ppp",
32
+ "24": "softwareLoopback",
33
+ "25": "eon",
34
+ "26": "ethernet3Mbit",
35
+ "27": "nsip",
36
+ "28": "slip",
37
+ "29": "ultra",
38
+ "30": "ds3",
39
+ "31": "sip",
40
+ "32": "frameRelay",
41
+ "33": "rs232",
42
+ "34": "para",
43
+ "35": "arcnet",
44
+ "36": "arcnetPlus",
45
+ "37": "atm",
46
+ "38": "miox25",
47
+ "39": "sonet",
48
+ "40": "x25ple",
49
+ "41": "iso88022llc",
50
+ "42": "localTalk",
51
+ "43": "smdsDxi",
52
+ "44": "frameRelayService",
53
+ "45": "v35",
54
+ "46": "hssi",
55
+ "47": "hippi",
56
+ "48": "modem",
57
+ "49": "aal5",
58
+ "50": "sonetPath",
59
+ "51": "sonetVT",
60
+ "52": "smdsIcip",
61
+ "53": "propVirtual",
62
+ "54": "propMultiplexor",
63
+ "55": "ieee80212",
64
+ "56": "fibreChannel",
65
+ "57": "hippiInterface",
66
+ "58": "frameRelayInterconnect",
67
+ "59": "aflane8023",
68
+ "60": "aflane8025",
69
+ "61": "cctEmul",
70
+ "62": "fastEther",
71
+ "63": "isdn",
72
+ "64": "v11",
73
+ "65": "v36",
74
+ "66": "g703at64k",
75
+ "67": "g703at2mb",
76
+ "68": "qllc",
77
+ "69": "fastEtherFX",
78
+ "70": "channel",
79
+ "71": "ieee80211",
80
+ "72": "ibm370parChan",
81
+ "73": "escon",
82
+ "74": "dlsw",
83
+ "75": "isdns",
84
+ "76": "isdnu",
85
+ "77": "lapd",
86
+ "78": "ipSwitch",
87
+ "79": "rsrb",
88
+ "80": "atmLogical",
89
+ "81": "ds0",
90
+ "82": "ds0Bundle",
91
+ "83": "bsc",
92
+ "84": "async",
93
+ "85": "cnr",
94
+ "86": "iso88025Dtr",
95
+ "87": "eplrs",
96
+ "88": "arap",
97
+ "89": "propCnls",
98
+ "90": "hostPad",
99
+ "91": "termPad",
100
+ "92": "frameRelayMPI",
101
+ "93": "x213",
102
+ "94": "adsl",
103
+ "95": "radsl",
104
+ "96": "sdsl",
105
+ "97": "vdsl",
106
+ "98": "iso88025CRFPInt",
107
+ "99": "myrinet",
108
+ "100": "voiceEM",
109
+ "101": "voiceFXO",
110
+ "102": "voiceFXS",
111
+ "103": "voiceEncap",
112
+ "104": "voiceOverIp",
113
+ "105": "atmDxi",
114
+ "106": "atmFuni",
115
+ "107": "atmIma",
116
+ "108": "pppMultilinkBundle",
117
+ "109": "ipOverCdlc",
118
+ "110": "ipOverClaw",
119
+ "111": "stackToStack",
120
+ "112": "virtualIpAddress",
121
+ "113": "mpc",
122
+ "114": "ipOverAtm",
123
+ "115": "iso88025Fiber",
124
+ "116": "tdlc",
125
+ "117": "gigabitEthernet",
126
+ "118": "hdlc",
127
+ "119": "lapf",
128
+ "120": "v37",
129
+ "121": "x25mlp",
130
+ "122": "x25huntGroup",
131
+ "123": "transpHdlc",
132
+ "124": "interleave",
133
+ "125": "fast",
134
+ "126": "ip",
135
+ "127": "docsCableMaclayer",
136
+ "128": "docsCableDownstream",
137
+ "129": "docsCableUpstream",
138
+ "130": "a12MppSwitch",
139
+ "131": "tunnel",
140
+ "132": "coffee",
141
+ "133": "ces",
142
+ "134": "atmSubInterface",
143
+ "135": "l2vlan",
144
+ "136": "l3ipvlan",
145
+ "137": "l3ipxvlan",
146
+ "138": "digitalPowerline",
147
+ "139": "mediaMailOverIp",
148
+ "140": "dtm",
149
+ "141": "dcn",
150
+ "142": "ipForward",
151
+ "143": "msdsl",
152
+ "144": "ieee1394",
153
+ "145": "if-gsn",
154
+ "146": "dvbRccMacLayer",
155
+ "147": "dvbRccDownstream",
156
+ "148": "dvbRccUpstream",
157
+ "149": "atmVirtual",
158
+ "150": "mplsTunnel",
159
+ "151": "srp",
160
+ "152": "voiceOverAtm",
161
+ "153": "voiceOverFrameRelay",
162
+ "154": "idsl",
163
+ "155": "compositeLink",
164
+ "156": "ss7SigLink",
165
+ "157": "propWirelessP2P",
166
+ "158": "frForward",
167
+ "159": "rfc1483",
168
+ "160": "usb",
169
+ "161": "ieee8023adLag",
170
+ "162": "bgppolicyaccounting",
171
+ "163": "frf16MfrBundle",
172
+ "164": "h323Gatekeeper",
173
+ "165": "h323Proxy",
174
+ "166": "mpls",
175
+ "167": "mfSigLink",
176
+ "168": "hdsl2",
177
+ "169": "shdsl",
178
+ "170": "ds1FDL",
179
+ "171": "pos",
180
+ "172": "dvbAsiIn",
181
+ "173": "dvbAsiOut",
182
+ "174": "plc",
183
+ "175": "nfas",
184
+ "176": "tr008",
185
+ "177": "gr303RDT",
186
+ "178": "gr303IDT",
187
+ "179": "isup",
188
+ "180": "propDocsWirelessMaclayer",
189
+ "181": "propDocsWirelessDownstream",
190
+ "182": "propDocsWirelessUpstream",
191
+ "183": "hiperlan2",
192
+ "184": "propBWAp2Mp",
193
+ "185": "sonetOverheadChannel",
194
+ "186": "digitalWrapperOverheadChannel",
195
+ "187": "aal2",
196
+ "188": "radioMAC",
197
+ "189": "atmRadio",
198
+ "190": "imt",
199
+ "191": "mvl",
200
+ "192": "reachDSL",
201
+ "193": "frDlciEndPt",
202
+ "194": "atmVciEndPt",
203
+ "195": "opticalChannel",
204
+ "196": "opticalTransport",
205
+ "197": "propAtm",
206
+ "198": "voiceOverCable",
207
+ "199": "infiniband",
208
+ "200": "teLink",
209
+ "201": "q2931",
210
+ "202": "virtualTg",
211
+ "203": "sipTg",
212
+ "204": "sipSig",
213
+ "205": "docsCableUpstreamChannel",
214
+ "206": "econet",
215
+ "207": "pon155",
216
+ "208": "pon622",
217
+ "209": "bridge",
218
+ "210": "linegroup",
219
+ "211": "voiceEMFGD",
220
+ "212": "voiceFGDEANA",
221
+ "213": "voiceDID",
222
+ "214": "mpegTransport",
223
+ "215": "sixToFour",
224
+ "216": "gtp",
225
+ "217": "pdnEtherLoop1",
226
+ "218": "pdnEtherLoop2",
227
+ "219": "opticalChannelGroup",
228
+ "220": "homepna",
229
+ "221": "gfp",
230
+ "222": "ciscoISLvlan",
231
+ "223": "actelisMetaLOOP",
232
+ "224": "fcipLink",
233
+ "225": "rpr",
234
+ "226": "qam",
235
+ "227": "lmp",
236
+ "228": "cblVectaStar",
237
+ "229": "docsCableMCmtsDownstream",
238
+ "230": "adsl2",
239
+ "231": "macSecControlledIF",
240
+ "232": "macSecUncontrolledIF",
241
+ "233": "aviciOpticalEther",
242
+ "234": "atmbond",
243
+ "235": "voiceFGDOS",
244
+ "236": "mocaVersion1",
245
+ "237": "ieee80216WMAN",
246
+ "238": "adsl2plus",
247
+ "239": "dvbRcsMacLayer",
248
+ "240": "dvbTdm",
249
+ "241": "dvbRcsTdma",
250
+ "242": "x86Laps",
251
+ "243": "wwanPP",
252
+ "244": "wwanPP2",
253
+ "245": "voiceEBS",
254
+ "246": "ifPwType",
255
+ "247": "ilan",
256
+ "248": "pip",
257
+ "249": "aluELP",
258
+ "250": "gpon",
259
+ "251": "vdsl2",
260
+ "252": "capwapDot11Profile",
261
+ "253": "capwapDot11Bss",
262
+ "254": "capwapWtpVirtualRadio",
263
+ "255": "bits",
264
+ "256": "docsCableUpstreamRfPort",
265
+ "257": "cableDownstreamRfPort",
266
+ "258": "vmwareVirtualNic",
267
+ "259": "ieee802154",
268
+ "260": "otnOdu",
269
+ "261": "otnOtu",
270
+ "262": "ifVfiType",
271
+ "263": "g9981",
272
+ "264": "g9982",
273
+ "265": "g9983",
274
+ "266": "aluEpon",
275
+ "267": "aluEponOnu",
276
+ "268": "aluEponPhysicalUni",
277
+ "269": "aluEponLogicalLink",
278
+ "270": "aluGponOnu",
279
+ "271": "aluGponPhysicalUni",
280
+ "272": "vmwareNicTeam",
281
+ "277": "docsOfdmDownstream",
282
+ "278": "docsOfdmaUpstream",
283
+ "279": "gfast",
284
+ "280": "sdci",
285
+ "281": "xboxWireless",
286
+ "282": "fastdsl",
287
+ "283": "docsCableScte55d1FwdOob",
288
+ "284": "docsCableScte55d1RetOob",
289
+ "285": "docsCableScte55d2DsOob",
290
+ "286": "docsCableScte55d2UsOob",
291
+ "287": "docsCableNdf",
292
+ "288": "docsCableNdr",
293
+ "289": "ptm",
294
+ "290": "ghn",
295
+ "291": "otnOtsi",
296
+ "292": "otnOtuc",
297
+ "293": "otnOduc",
298
+ "294": "otnOtsig",
299
+ "295": "microwaveCarrierTermination",
300
+ "296": "microwaveRadioLinkTerminal",
301
+ "297": "ieee8021axDrni",
302
+ "298": "ax25",
303
+ "299": "ieee19061nanocom",
304
+ "300": "cpri",
305
+ "301": "omni",
306
+ "302": "roe",
307
+ "303": "p2pOverLan",
308
+ },
309
+}
src/go/plugin/go.d/config/go.d/snmp.profiles/default/_generic-if.yaml
+27
-46
@@ -13,8 +13,8 @@ metrics:
13
table:
14
OID: 1.3.6.1.2.1.2.2
15
name: ifTable
16
- metric_type: monotonic_count_and_rate
16
symbols:
17
+ # Counters that will be inferred as rate type from PDU
18
- OID: 1.3.6.1.2.1.2.2.1.14
19
name: ifInErrors
20
description: Number of inbound packets that contained errors preventing them from being deliverable to a higher-layer protocol
@@ -35,17 +35,7 @@ metrics:
35
description: Number of outbound packets chosen to be discarded even though no errors had been detected to prevent their being transmitted
36
family: Interfaces/Discards
37
unit: "{discard}"
38
- metric_tags:
39
- - symbol:
40
- OID: 1.3.6.1.2.1.31.1.1.1.1
41
- name: ifName
42
- table: ifXTable
43
- tag: interface
44
- - MIB: IF-MIB
45
- table:
46
- OID: 1.3.6.1.2.1.2.2
47
- name: ifTable
48
- symbols:
38
+ # Gauges that will be inferred from PDU type
39
- OID: 1.3.6.1.2.1.2.2.1.7
40
name: ifAdminStatus
41
description: Current administrative state of the interface
@@ -79,12 +69,27 @@ metrics:
69
name: ifName
70
table: ifXTable
71
tag: interface
72
+ - tag: if_type
73
+ symbol:
74
+ OID: 1.3.6.1.2.1.2.2.1.3
75
+ name: ifType
76
+ mapping_ref: ifType
77
- MIB: IF-MIB
78
table:
79
OID: 1.3.6.1.2.1.31.1.1
80
name: ifXTable
86
- metric_type: monotonic_count
81
symbols:
82
+ # Counters that will be inferred as rate type from PDU
83
+ - OID: 1.3.6.1.2.1.31.1.1.1.6
84
+ name: ifHCInOctets
85
+ description: Total number of octets received on the interface including framing characters
86
+ family: Interfaces/Traffic
87
+ unit: "By"
88
+ - OID: 1.3.6.1.2.1.31.1.1.1.10
89
+ name: ifHCOutOctets
90
+ description: Total number of octets transmitted out of the interface including framing characters
91
+ family: Interfaces/Traffic
92
+ unit: "By"
93
- OID: 1.3.6.1.2.1.31.1.1.1.7
94
name: ifHCInUcastPkts
95
description: Number of packets delivered by this sub-layer to a higher layer which were not addressed to a multicast or broadcast address
@@ -115,44 +120,20 @@ metrics:
120
description: Total number of packets that higher-level protocols requested be transmitted and which were addressed to a broadcast address
121
family: Interfaces/Packets/Broadcast
122
unit: "{packet}"
118
- metric_tags:
119
- - symbol:
120
- OID: 1.3.6.1.2.1.31.1.1.1.1
121
- name: ifName
122
- tag: interface
123
- - MIB: IF-MIB
124
- table:
125
- OID: 1.3.6.1.2.1.31.1.1
126
- name: ifXTable
127
- metric_type: monotonic_count_and_rate
128
- symbols:
129
- - OID: 1.3.6.1.2.1.31.1.1.1.6
130
- name: ifHCInOctets
131
- description: Total number of octets received on the interface including framing characters
132
- family: Interfaces/Traffic
133
- unit: "By"
134
- - OID: 1.3.6.1.2.1.31.1.1.1.10
135
- name: ifHCOutOctets
136
- description: Total number of octets transmitted out of the interface including framing characters
137
- family: Interfaces/Traffic
138
- unit: "By"
139
- metric_tags:
140
- - symbol:
141
- OID: 1.3.6.1.2.1.31.1.1.1.1
142
- name: ifName
143
- tag: interface
144
- - MIB: IF-MIB
145
- table:
146
- OID: 1.3.6.1.2.1.31.1.1
147
- name: ifXTable
148
- symbols:
123
+ # Gauge that will be inferred from PDU type
124
- OID: 1.3.6.1.2.1.31.1.1.1.15
125
name: ifHighSpeed
126
description: Estimate of the interface's current bandwidth in units of 1,000,000 bits per second
127
family: Interfaces/Speed
128
unit: "Mbit/s"
129
metric_tags:
155
- - symbol:
130
+ - tag: interface
131
+ symbol:
132
OID: 1.3.6.1.2.1.31.1.1.1.1
133
name: ifName
158
- tag: interface
134
+ - tag: if_type
135
+ table: ifTable
136
+ symbol:
137
+ OID: 1.3.6.1.2.1.2.2.1.3
138
+ name: ifType
139
+ mapping_ref: ifType