@cryptotaxi247 / netdata / commits / bc26fbd04

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