@cryptotaxi247 / netdata / commits / 310113fa0

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