improve snmp ubiquiti unifi ap model (#20895)
Ilya Mashchenko committed
Aug 28, 2025 at 01:15 UTC
310113fa0768f941b4fdcc68068e9f58a90c6c0a
3 files changed
+16
-40
src/go/plugin/go.d/collector/snmp/ddsnmp/ddsnmpcollector/collector_device_meta.go
+1
-1
@@ -58,7 +58,7 @@ func (dc *deviceMetadataCollector) Collect(prof *ddsnmp.Profile) (map[string]dds
58
}
59
}
60
61
- if err := dc.processMetadataFields(cfg.Fields, meta, slices.Contains(prof.Definition.Extends, dc.sysobjectid)); err != nil {
61
+ if err := dc.processMetadataFields(cfg.Fields, meta, slices.Contains(prof.Definition.SysObjectIDs, dc.sysobjectid)); err != nil {
62
return ternary(len(meta) > 0, meta, nil), fmt.Errorf("failed to process metadata resource '%s': %w", resName, err)
63
}
64
src/go/plugin/go.d/collector/snmp/ddsnmp/ddsnmpcollector/collector_device_meta_test.go
+5
-39
@@ -799,10 +799,10 @@ func TestDeviceMetadataCollector_Collect(t *testing.T) {
799
},
800
expectedError: false,
801
},
802
- "base metadata exact via Extends": {
802
+ "base metadata exact via sysObjectIDs": {
803
profile: &ddsnmp.Profile{
804
Definition: &ddprofiledefinition.ProfileDefinition{
805
- Extends: []string{"1.3.6.1.4.1.9.1.669"},
805
+ SysObjectIDs: []string{"1.3.6.1.4.1.9.1.669"},
806
Metadata: ddprofiledefinition.MetadataConfig{
807
"device": {
808
Fields: ddprofiledefinition.ListMap[ddprofiledefinition.MetadataField]{
@@ -823,10 +823,10 @@ func TestDeviceMetadataCollector_Collect(t *testing.T) {
823
},
824
expectedError: false,
825
},
826
- "extends exact + sysobjectid wildcard → base wins overlap": {
826
+ "sysObjectIDs exact + sysobjectid wildcard → base wins overlap": {
827
profile: &ddsnmp.Profile{
828
Definition: &ddprofiledefinition.ProfileDefinition{
829
- Extends: []string{"1.3.6.1.4.1.9.1.669"},
829
+ SysObjectIDs: []string{"1.3.6.1.4.1.9.1.669"},
830
Metadata: ddprofiledefinition.MetadataConfig{
831
"device": {
832
Fields: ddprofiledefinition.ListMap[ddprofiledefinition.MetadataField]{
@@ -858,7 +858,7 @@ func TestDeviceMetadataCollector_Collect(t *testing.T) {
858
},
859
expectedError: false,
860
},
861
- "no extends (non-exact) + sysobjectid wildcard → wildcard wins": {
861
+ "non-exact + sysobjectid wildcard → wildcard wins": {
862
profile: &ddsnmp.Profile{
863
Definition: &ddprofiledefinition.ProfileDefinition{
864
Metadata: ddprofiledefinition.MetadataConfig{
@@ -891,40 +891,6 @@ func TestDeviceMetadataCollector_Collect(t *testing.T) {
891
},
892
expectedError: false,
893
},
894
- "extends exact + sysobjectid exact → sysobjectid wins overlap": {
895
- profile: &ddsnmp.Profile{
896
- Definition: &ddprofiledefinition.ProfileDefinition{
897
- Extends: []string{"1.3.6.1.4.1.9.1.669"},
898
- Metadata: ddprofiledefinition.MetadataConfig{
899
- "device": {
900
- Fields: ddprofiledefinition.ListMap[ddprofiledefinition.MetadataField]{
901
- "vendor": {Value: "Cisco-Base"},
902
- "model": {Value: "BaseModel"},
903
- },
904
- },
905
- },
906
- SysobjectIDMetadata: []ddprofiledefinition.SysobjectIDMetadataEntryConfig{
907
- {
908
- SysobjectID: "1.3.6.1.4.1.9.1.669", // exact
909
- Metadata: ddprofiledefinition.ListMap[ddprofiledefinition.MetadataField]{
910
- "vendor": {Value: "Cisco-Exact"},
911
- "model": {Value: "ASA5510"},
912
- "series": {Value: "ASA5500"},
913
- },
914
- },
915
- },
916
- },
917
- },
918
- setupMock: func(m *snmpmock.MockHandler) {},
919
- sysobjectid: "1.3.6.1.4.1.9.1.669",
920
- expectedResult: map[string]ddsnmp.MetaTag{
921
- // sysobjectid exact (written first) holds; base exact does not overwrite exact
922
- "vendor": {Value: "Cisco-Exact", IsExactMatch: true},
923
- "model": {Value: "ASA5510", IsExactMatch: true},
924
- "series": {Value: "ASA5500", IsExactMatch: true},
925
- },
926
- expectedError: false,
927
- },
894
}
895
896
for name, tc := range tests {
src/go/plugin/go.d/config/go.d/snmp.profiles/default/ubiquiti-unifi.yaml
+10
@@ -5,6 +5,16 @@ extends:
5
sysobjectid:
6
- 1.3.6.1.4.1.41112 # Ubiquiti Networks, Inc.
7
8
+metadata:
9
+ device:
10
+ fields:
11
+ model:
12
+ symbol:
13
+ OID: 1.3.6.1.4.1.41112.1.6.3.3.0
14
+ name: unifiApSystemModel
15
+ match_pattern: '(.*)'
16
+ match_value: 'UniFi $1'
17
+
18
# FROGFOOT-RESOURCES-MIB
19
# https://mibbrowser.online/mibdb_search.php?mib=FROGFOOT-RESOURCES-MIB
20
# https://github.com/DanielleHuisman/observium-community-edition/blob/main/mibs/ubiquiti/FROGFOOT-RESOURCES-MIB