From 6dc6caf237c9792f73a5722e7d6513022c96269c Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Mon, 20 Apr 2026 13:38:42 +1000 Subject: [PATCH 01/13] Refactor Catalyst serial_number metadata to symbols list Use metadata symbols (first fetchable wins) for CISCO-STACK-MIB chassisSerialNumberString and ENTITY-MIB entPhysicalSerialNum. Add Circitor MIB references, Source 2 sysDescr note, and stack index guidance. Made-with: Cursor --- .../default_profiles/_cisco-catalyst.yaml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml index fc0e189ef50c6..0e27de8767984 100644 --- a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml +++ b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml @@ -9,15 +9,18 @@ metadata: device: fields: serial_number: - symbol: - # Cisco Catalyst devices are using CISCO-STACK-MIB - # Source1: http://www.circitor.fr/Mibs/Html/C/CISCO-STACK-MIB.php - # "This MIB provides configuration and runtime status for chassis, modules, ports, etc. on the Catalyst systems." - # Source2: chassisSerialNumberString is present for this device: + symbols: + # CISCO-STACK-MIB: chassisSerialNumberString — primary chassis serial on classic Catalyst. + # Source 1: https://circitor.fr/Mibs/Html/CISCO-STACK-MIB.php + # Source 2: chassisSerialNumberString is present for this device: # Cisco Systems WS-C6509.Cisco Catalyst Operating System Software, Version 5.5(8).Copyright (c) 1995-2001 by Cisco Systems. - MIB: CISCO-STACK-MIB - OID: 1.3.6.1.4.1.9.5.1.2.19.0 - name: chassisSerialNumberString + - OID: 1.3.6.1.4.1.9.5.1.2.19.0 + name: chassisSerialNumberString + # ENTITY-MIB: entPhysicalSerialNum at entPhysicalIndex 1 — fallback when stack MIB data is missing. + # Source: https://circitor.fr/Mibs/Html/ENTITY-MIB.php + # Stacked members often use x000 indexes (1000, 2000, …); add more list entries if you need them. + - OID: 1.3.6.1.2.1.47.1.1.1.1.11.1 + name: entPhysicalSerialNum metrics: - MIB: CISCO-ENTITY-SENSOR-MIB From 326733506924913914239d82f86550432ac4bceb Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Mon, 20 Apr 2026 13:39:33 +1000 Subject: [PATCH 02/13] Add changelog for PR 23369 Made-with: Cursor --- snmp/changelog.d/23369.fixed | 1 + 1 file changed, 1 insertion(+) create mode 100644 snmp/changelog.d/23369.fixed diff --git a/snmp/changelog.d/23369.fixed b/snmp/changelog.d/23369.fixed new file mode 100644 index 0000000000000..b61b9b29f9e59 --- /dev/null +++ b/snmp/changelog.d/23369.fixed @@ -0,0 +1 @@ +Refactor Cisco Catalyst serial_number metadata to use a symbols list with CISCO-STACK and ENTITY-MIB fallbacks and updated Circitor links. From 39f2617804858c070f5b953bc03126d881ccee5b Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Wed, 29 Apr 2026 01:36:08 +1000 Subject: [PATCH 03/13] SNMP: align changelog with Catalyst serial_number fallback intent. Made-with: Cursor --- snmp/changelog.d/23369.fixed | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snmp/changelog.d/23369.fixed b/snmp/changelog.d/23369.fixed index b61b9b29f9e59..25ffdf0daa791 100644 --- a/snmp/changelog.d/23369.fixed +++ b/snmp/changelog.d/23369.fixed @@ -1 +1 @@ -Refactor Cisco Catalyst serial_number metadata to use a symbols list with CISCO-STACK and ENTITY-MIB fallbacks and updated Circitor links. +Cisco Catalyst: use ``entPhysicalSerialNum`` when ``chassisSerialNumberString`` is absent for device ``serial_number`` metadata. From 1d7fa78acd43918aca0b5578930789b05976260c Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Wed, 29 Apr 2026 02:15:37 +1000 Subject: [PATCH 04/13] Rename SNMP changelog fragment to match PR 23498. Made-with: Cursor --- snmp/changelog.d/{23369.fixed => 23498.fixed} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename snmp/changelog.d/{23369.fixed => 23498.fixed} (100%) diff --git a/snmp/changelog.d/23369.fixed b/snmp/changelog.d/23498.fixed similarity index 100% rename from snmp/changelog.d/23369.fixed rename to snmp/changelog.d/23498.fixed From ad4f3b3f8a1f413f8e75a661393783d59e971859 Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Mon, 18 May 2026 22:40:14 +1000 Subject: [PATCH 05/13] SNMP: add tests for Catalyst entPhysicalSerialNum fallback Adds a minimal cisco-catalyst-9k.snmprec fixture (no customer data) that exercises the entPhysicalSerialNum fallback when chassisSerialNumberString is absent, and asserts serial_number resolution via both a profile unit test and a core metadata test. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../compose/data/cisco-catalyst-9k.snmprec | 4 ++ snmp/tests/test_e2e_core_metadata.py | 45 +++++++++++++++++++ snmp/tests/test_profiles.py | 15 +++++++ 3 files changed, 64 insertions(+) create mode 100644 snmp/tests/compose/data/cisco-catalyst-9k.snmprec diff --git a/snmp/tests/compose/data/cisco-catalyst-9k.snmprec b/snmp/tests/compose/data/cisco-catalyst-9k.snmprec new file mode 100644 index 0000000000000..95e528c19b19c --- /dev/null +++ b/snmp/tests/compose/data/cisco-catalyst-9k.snmprec @@ -0,0 +1,4 @@ +1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.9.1.2804 +1.3.6.1.2.1.1.3.0|67|470854 +1.3.6.1.2.1.1.5.0|4|catalyst-9k.example +1.3.6.1.2.1.47.1.1.1.1.11.1|4|FOCXXXXXXXX.1 diff --git a/snmp/tests/test_e2e_core_metadata.py b/snmp/tests/test_e2e_core_metadata.py index 5e80a7a477cf1..887c352d0f1e8 100644 --- a/snmp/tests/test_e2e_core_metadata.py +++ b/snmp/tests/test_e2e_core_metadata.py @@ -308,6 +308,51 @@ def test_e2e_core_metadata_cisco_catalyst(dd_agent_check): assert_device_metadata(aggregator, device) +def test_e2e_core_metadata_cisco_catalyst_entity_serial_fallback(dd_agent_check): + config = common.generate_container_instance_config([]) + instance = config['instances'][0] + instance.update( + { + 'community_string': 'cisco-catalyst-9k', + 'loader': 'core', + } + ) + + aggregator = dd_agent_check(config, rate=False) + + device_ip = instance['ip_address'] + device_id = 'default:' + device_ip + + device = { + 'id': device_id, + 'id_tags': [ + 'device_namespace:default', + 'snmp_device:' + device_ip, + ], + 'ip_address': device_ip, + 'name': 'catalyst-9k.example', + 'profile': 'cisco-catalyst', + 'status': 1, + 'sys_object_id': '1.3.6.1.4.1.9.1.2804', + 'tags': [ + 'agent_host:' + common.get_agent_hostname(), + 'device_id:' + device_id, + 'device_ip:' + device_ip, + 'device_namespace:default', + 'device_vendor:cisco', + 'snmp_device:' + device_ip, + 'snmp_host:catalyst-9k.example', + 'device_hostname:catalyst-9k.example', + 'snmp_profile:cisco-catalyst', + ], + 'vendor': 'cisco', + 'serial_number': 'FOCXXXXXXXX.1', + 'device_type': 'switch', + 'integration': 'snmp', + } + assert_device_metadata(aggregator, device) + + def test_e2e_core_metadata_hp_ilo4(dd_agent_check): config = common.generate_container_instance_config([]) instance = config['instances'][0] diff --git a/snmp/tests/test_profiles.py b/snmp/tests/test_profiles.py index f68ea17337c47..619f7c1bb51bd 100644 --- a/snmp/tests/test_profiles.py +++ b/snmp/tests/test_profiles.py @@ -2939,6 +2939,21 @@ def test_cisco_catalyst(aggregator): aggregator.assert_metrics_using_metadata(get_metadata_metrics(), check_submission_type=True) +@pytest.mark.usefixtures("dd_environment") +def test_cisco_catalyst_entity_serial_fallback(aggregator): + # Exercises the entPhysicalSerialNum fallback when chassisSerialNumberString is absent. + run_profile_check('cisco-catalyst-9k', 'cisco-catalyst') + common_tags = common.CHECK_TAGS + [ + 'snmp_host:catalyst-9k.example', + 'device_hostname:catalyst-9k.example', + 'snmp_profile:cisco-catalyst', + 'device_vendor:cisco', + ] + + aggregator.assert_metric('snmp.sysUpTimeInstance', count=1) + common.assert_common_metrics(aggregator, common_tags) + + @pytest.mark.parametrize("file", ["juniper-ex", "juniper-ex-variation"]) @pytest.mark.usefixtures("dd_environment") def test_juniper_ex(aggregator, file): From bc16685de65e1f6593548288421e64ec71ca364f Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Wed, 20 May 2026 01:45:10 +1000 Subject: [PATCH 06/13] SNMP: extend Cisco serial_number coverage and add Catalyst 1300/9200 sysobjectids Adds entPhysicalSerialNum.67109120 as the primary ENTITY-MIB fallback for Cisco devices that expose chassis data at the CBS350/Catalyst 1300 index, and keeps entPhysicalSerialNum.1 as the secondary fallback. - _cisco-catalyst.yaml: insert the .67109120 entry ahead of .1 in the serial_number symbols list so Catalyst 1300 and Cat 9400/9200 chassis (e.g. cisco_switch_c9407r) report a serial even when the legacy chassisSerialNumberString is absent. - _cisco-metadata.yaml: add the same fallback chain so profiles that inherit it (cisco.yaml via _base_cisco -> _cisco-generic) gain serial_number metadata. - cisco-sb.yaml: define serial_number with the same chain for CBS350 devices that fall outside the cisco-catalyst inheritance tree. - cisco-catalyst.yaml: add Catalyst 9200 (1.3.6.1.4.1.9.1.3079) and Catalyst 1300 (.3233, .3236) sysobjectids so those devices match the Catalyst profile. Refs AGENT-15682. --- .../snmp/data/default_profiles/_cisco-catalyst.yaml | 4 ++++ .../snmp/data/default_profiles/_cisco-metadata.yaml | 10 ++++++++++ .../snmp/data/default_profiles/cisco-catalyst.yaml | 3 +++ .../snmp/data/default_profiles/cisco-sb.yaml | 10 ++++++++++ 4 files changed, 27 insertions(+) diff --git a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml index 0e27de8767984..9dda980240063 100644 --- a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml +++ b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml @@ -16,6 +16,10 @@ metadata: # Cisco Systems WS-C6509.Cisco Catalyst Operating System Software, Version 5.5(8).Copyright (c) 1995-2001 by Cisco Systems. - OID: 1.3.6.1.4.1.9.5.1.2.19.0 name: chassisSerialNumberString + # ENTITY-MIB: entPhysicalSerialNum at entPhysicalIndex 67109120 — Catalyst 1300 / CBS-derived chassis. + # Reference: https://www.cisco.com/c/en/us/support/docs/smb/switches/Cisco-Business-Switching/kmgmt3636-snmpv3-common-oids-cbs350.html + - OID: 1.3.6.1.2.1.47.1.1.1.1.11.67109120 + name: entPhysicalSerialNum # ENTITY-MIB: entPhysicalSerialNum at entPhysicalIndex 1 — fallback when stack MIB data is missing. # Source: https://circitor.fr/Mibs/Html/ENTITY-MIB.php # Stacked members often use x000 indexes (1000, 2000, …); add more list entries if you need them. diff --git a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml index 2ad15e90b29fa..7f06402e7cad6 100644 --- a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml +++ b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml @@ -5,6 +5,16 @@ metadata: fields: vendor: value: "cisco" + serial_number: + symbols: + # ENTITY-MIB: entPhysicalSerialNum at entPhysicalIndex 67109120 — Catalyst 1300 / CBS-derived chassis. + # Reference: https://www.cisco.com/c/en/us/support/docs/smb/switches/Cisco-Business-Switching/kmgmt3636-snmpv3-common-oids-cbs350.html + - OID: 1.3.6.1.2.1.47.1.1.1.1.11.67109120 + name: entPhysicalSerialNum + # ENTITY-MIB: entPhysicalSerialNum at entPhysicalIndex 1 — common chassis index. + # Source: https://circitor.fr/Mibs/Html/ENTITY-MIB.php + - OID: 1.3.6.1.2.1.47.1.1.1.1.11.1 + name: entPhysicalSerialNum version: symbol: OID: 1.3.6.1.2.1.1.1.0 diff --git a/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml b/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml index 5f0f9cc6b4fe0..f4e652a936e0a 100644 --- a/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml +++ b/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml @@ -463,3 +463,6 @@ sysobjectid: - 1.3.6.1.4.1.9.1.3023 # ciscoC1000FE48T4GL - 1.3.6.1.4.1.9.1.3024 # ciscoC1000FE48P4GL - 1.3.6.1.4.1.9.1.3069 # ciscoC8500L8S4X + - 1.3.6.1.4.1.9.1.3079 # ciscoC9200CX12P2X2G + - 1.3.6.1.4.1.9.1.3233 # ciscoC130024P4G + - 1.3.6.1.4.1.9.1.3236 # ciscoSwitch1300 diff --git a/snmp/datadog_checks/snmp/data/default_profiles/cisco-sb.yaml b/snmp/datadog_checks/snmp/data/default_profiles/cisco-sb.yaml index 81d79ab64421f..0ccbf138f1b00 100644 --- a/snmp/datadog_checks/snmp/data/default_profiles/cisco-sb.yaml +++ b/snmp/datadog_checks/snmp/data/default_profiles/cisco-sb.yaml @@ -10,6 +10,16 @@ metadata: fields: vendor: value: "cisco" + serial_number: + symbols: + # ENTITY-MIB: entPhysicalSerialNum at entPhysicalIndex 67109120 — CBS350 / Cisco Small Business chassis. + # Reference: https://www.cisco.com/c/en/us/support/docs/smb/switches/Cisco-Business-Switching/kmgmt3636-snmpv3-common-oids-cbs350.html + - OID: 1.3.6.1.2.1.47.1.1.1.1.11.67109120 + name: entPhysicalSerialNum + # ENTITY-MIB: entPhysicalSerialNum at entPhysicalIndex 1 — common chassis index. + # Source: https://circitor.fr/Mibs/Html/ENTITY-MIB.php + - OID: 1.3.6.1.2.1.47.1.1.1.1.11.1 + name: entPhysicalSerialNum metrics: - MIB: CISCOSB-rndMng symbol: From 7dbb2a0cb258e330a3c7e57d72f3019a08b201d8 Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Wed, 20 May 2026 01:45:20 +1000 Subject: [PATCH 07/13] SNMP: align changelog with extended Cisco serial_number coverage The cisco-sb, _cisco-metadata, and Catalyst 9200/1300 additions broaden the PR beyond the original Catalyst-only fallback intent. --- snmp/changelog.d/23498.fixed | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snmp/changelog.d/23498.fixed b/snmp/changelog.d/23498.fixed index 25ffdf0daa791..f16f77b1a0982 100644 --- a/snmp/changelog.d/23498.fixed +++ b/snmp/changelog.d/23498.fixed @@ -1 +1 @@ -Cisco Catalyst: use ``entPhysicalSerialNum`` when ``chassisSerialNumberString`` is absent for device ``serial_number`` metadata. +Add ``entPhysicalSerialNum`` fallbacks for Cisco ``serial_number`` metadata. The Cisco Catalyst, Cisco Small Business (cisco-sb), and generic Cisco profiles now resolve ``serial_number`` from ``entPhysicalSerialNum`` at entPhysical indexes ``67109120`` (Catalyst 1300 / CBS350) and ``1``. Adds new Catalyst 9200 (``1.3.6.1.4.1.9.1.3079``) and Catalyst 1300 (``1.3.6.1.4.1.9.1.3233``, ``1.3.6.1.4.1.9.1.3236``) sysobjectids to the cisco-catalyst profile. From b45605ec701eb935004cd8053de746ef49861e78 Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Wed, 20 May 2026 10:47:46 +1000 Subject: [PATCH 08/13] SNMP: narrow _cisco-metadata serial_number to entPhysicalSerialNum.1 The .67109120 index is only known on Catalyst 1300 / CBS-derived chassis; those devices match the cisco-catalyst profile, which keeps its own .67109120 lookup in _cisco-catalyst.yaml. Keeping .67109120 in the generic Cisco mixin adds noise without coverage benefit. Updates the changelog to reflect the narrower mixin scope. --- snmp/changelog.d/23498.fixed | 2 +- .../snmp/data/default_profiles/_cisco-metadata.yaml | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/snmp/changelog.d/23498.fixed b/snmp/changelog.d/23498.fixed index f16f77b1a0982..5579356855e56 100644 --- a/snmp/changelog.d/23498.fixed +++ b/snmp/changelog.d/23498.fixed @@ -1 +1 @@ -Add ``entPhysicalSerialNum`` fallbacks for Cisco ``serial_number`` metadata. The Cisco Catalyst, Cisco Small Business (cisco-sb), and generic Cisco profiles now resolve ``serial_number`` from ``entPhysicalSerialNum`` at entPhysical indexes ``67109120`` (Catalyst 1300 / CBS350) and ``1``. Adds new Catalyst 9200 (``1.3.6.1.4.1.9.1.3079``) and Catalyst 1300 (``1.3.6.1.4.1.9.1.3233``, ``1.3.6.1.4.1.9.1.3236``) sysobjectids to the cisco-catalyst profile. +Add ``entPhysicalSerialNum`` fallbacks for Cisco ``serial_number`` metadata. The Cisco Catalyst and Cisco Small Business (cisco-sb) profiles now resolve ``serial_number`` from ``entPhysicalSerialNum`` at entPhysical indexes ``67109120`` (Catalyst 1300 / CBS350) and ``1``; the generic Cisco profiles inherit ``entPhysicalSerialNum.1`` via the shared metadata mixin. Adds new Catalyst 9200 (``1.3.6.1.4.1.9.1.3079``) and Catalyst 1300 (``1.3.6.1.4.1.9.1.3233``, ``1.3.6.1.4.1.9.1.3236``) sysobjectids to the cisco-catalyst profile. diff --git a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml index 7f06402e7cad6..bb7506bd9c808 100644 --- a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml +++ b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml @@ -6,15 +6,13 @@ metadata: vendor: value: "cisco" serial_number: - symbols: - # ENTITY-MIB: entPhysicalSerialNum at entPhysicalIndex 67109120 — Catalyst 1300 / CBS-derived chassis. - # Reference: https://www.cisco.com/c/en/us/support/docs/smb/switches/Cisco-Business-Switching/kmgmt3636-snmpv3-common-oids-cbs350.html - - OID: 1.3.6.1.2.1.47.1.1.1.1.11.67109120 - name: entPhysicalSerialNum + symbol: # ENTITY-MIB: entPhysicalSerialNum at entPhysicalIndex 1 — common chassis index. # Source: https://circitor.fr/Mibs/Html/ENTITY-MIB.php - - OID: 1.3.6.1.2.1.47.1.1.1.1.11.1 - name: entPhysicalSerialNum + # Catalyst 1300 / CBS-derived chassis (which use entPhysicalIndex 67109120) match the + # cisco-catalyst profile, which provides its own serial_number lookup at that index. + OID: 1.3.6.1.2.1.47.1.1.1.1.11.1 + name: entPhysicalSerialNum version: symbol: OID: 1.3.6.1.2.1.1.1.0 From e4609a066704c597ec598e0d599881a0b3727e43 Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Wed, 20 May 2026 11:35:52 +1000 Subject: [PATCH 09/13] SNMP: revert serial_number addition to _cisco-metadata mixin Adding serial_number to _cisco-metadata.yaml turned out to suppress the leaf-level _cisco-catalyst.yaml symbols list during profile merging, so cisco-catalyst-profiled devices stopped extracting chassisSerialNumberString (the previously-working source). The metric mixin scope was already narrow benefit: the only known cisco_switch_1300 / c9407r devices now match cisco-catalyst directly, and the other inheritors of _cisco-metadata (cisco-firepower, cisco-firepower-asa, cisco-ironport-email) don't expose entPhysicalSerialNum in their test fixtures. Keep the entPhysicalSerialNum fallbacks in _cisco-catalyst.yaml and cisco-sb.yaml only. --- snmp/changelog.d/23498.fixed | 2 +- .../snmp/data/default_profiles/_cisco-metadata.yaml | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/snmp/changelog.d/23498.fixed b/snmp/changelog.d/23498.fixed index 5579356855e56..e30214357a9c2 100644 --- a/snmp/changelog.d/23498.fixed +++ b/snmp/changelog.d/23498.fixed @@ -1 +1 @@ -Add ``entPhysicalSerialNum`` fallbacks for Cisco ``serial_number`` metadata. The Cisco Catalyst and Cisco Small Business (cisco-sb) profiles now resolve ``serial_number`` from ``entPhysicalSerialNum`` at entPhysical indexes ``67109120`` (Catalyst 1300 / CBS350) and ``1``; the generic Cisco profiles inherit ``entPhysicalSerialNum.1`` via the shared metadata mixin. Adds new Catalyst 9200 (``1.3.6.1.4.1.9.1.3079``) and Catalyst 1300 (``1.3.6.1.4.1.9.1.3233``, ``1.3.6.1.4.1.9.1.3236``) sysobjectids to the cisco-catalyst profile. +Cisco Catalyst and Cisco Small Business (cisco-sb): use ``entPhysicalSerialNum`` at entPhysical indexes ``67109120`` (Catalyst 1300 / CBS350) and ``1`` as ``serial_number`` fallbacks when the primary chassis serial source is absent. Adds new Catalyst 9200 (``1.3.6.1.4.1.9.1.3079``) and Catalyst 1300 (``1.3.6.1.4.1.9.1.3233``, ``1.3.6.1.4.1.9.1.3236``) sysobjectids to the cisco-catalyst profile so those devices match and report a serial. diff --git a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml index bb7506bd9c808..2ad15e90b29fa 100644 --- a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml +++ b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-metadata.yaml @@ -5,14 +5,6 @@ metadata: fields: vendor: value: "cisco" - serial_number: - symbol: - # ENTITY-MIB: entPhysicalSerialNum at entPhysicalIndex 1 — common chassis index. - # Source: https://circitor.fr/Mibs/Html/ENTITY-MIB.php - # Catalyst 1300 / CBS-derived chassis (which use entPhysicalIndex 67109120) match the - # cisco-catalyst profile, which provides its own serial_number lookup at that index. - OID: 1.3.6.1.2.1.47.1.1.1.1.11.1 - name: entPhysicalSerialNum version: symbol: OID: 1.3.6.1.2.1.1.1.0 From 2d9570e4b990b5fe70ba973d6028ff5881cb1956 Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Wed, 20 May 2026 11:55:28 +1000 Subject: [PATCH 10/13] SNMP: move cisco-catalyst sysobjectid additions to PR #23759 Drops the Catalyst 9200 / 1300 sysobjectid entries (3079, 3233, 3236) from this branch; they ship in #23759 instead so the metadata fallback work here can be evaluated against CI in isolation. --- snmp/changelog.d/23498.fixed | 2 +- .../snmp/data/default_profiles/cisco-catalyst.yaml | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/snmp/changelog.d/23498.fixed b/snmp/changelog.d/23498.fixed index e30214357a9c2..df98edf6da92f 100644 --- a/snmp/changelog.d/23498.fixed +++ b/snmp/changelog.d/23498.fixed @@ -1 +1 @@ -Cisco Catalyst and Cisco Small Business (cisco-sb): use ``entPhysicalSerialNum`` at entPhysical indexes ``67109120`` (Catalyst 1300 / CBS350) and ``1`` as ``serial_number`` fallbacks when the primary chassis serial source is absent. Adds new Catalyst 9200 (``1.3.6.1.4.1.9.1.3079``) and Catalyst 1300 (``1.3.6.1.4.1.9.1.3233``, ``1.3.6.1.4.1.9.1.3236``) sysobjectids to the cisco-catalyst profile so those devices match and report a serial. +Cisco Catalyst and Cisco Small Business (cisco-sb): use ``entPhysicalSerialNum`` at entPhysical indexes ``67109120`` (Catalyst 1300 / CBS350) and ``1`` as ``serial_number`` fallbacks when the primary chassis serial source is absent. diff --git a/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml b/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml index f4e652a936e0a..5f0f9cc6b4fe0 100644 --- a/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml +++ b/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml @@ -463,6 +463,3 @@ sysobjectid: - 1.3.6.1.4.1.9.1.3023 # ciscoC1000FE48T4GL - 1.3.6.1.4.1.9.1.3024 # ciscoC1000FE48P4GL - 1.3.6.1.4.1.9.1.3069 # ciscoC8500L8S4X - - 1.3.6.1.4.1.9.1.3079 # ciscoC9200CX12P2X2G - - 1.3.6.1.4.1.9.1.3233 # ciscoC130024P4G - - 1.3.6.1.4.1.9.1.3236 # ciscoSwitch1300 From 45fb5fdc82a9cb1b50553e87529d6e806f6d08e6 Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Wed, 20 May 2026 13:20:39 +1000 Subject: [PATCH 11/13] Revert "SNMP: move cisco-catalyst sysobjectid additions to PR #23759" This reverts commit 6551dd3d758daff6fe2af08ab280172d87f4a7e0. --- snmp/changelog.d/23498.fixed | 2 +- .../snmp/data/default_profiles/cisco-catalyst.yaml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/snmp/changelog.d/23498.fixed b/snmp/changelog.d/23498.fixed index df98edf6da92f..e30214357a9c2 100644 --- a/snmp/changelog.d/23498.fixed +++ b/snmp/changelog.d/23498.fixed @@ -1 +1 @@ -Cisco Catalyst and Cisco Small Business (cisco-sb): use ``entPhysicalSerialNum`` at entPhysical indexes ``67109120`` (Catalyst 1300 / CBS350) and ``1`` as ``serial_number`` fallbacks when the primary chassis serial source is absent. +Cisco Catalyst and Cisco Small Business (cisco-sb): use ``entPhysicalSerialNum`` at entPhysical indexes ``67109120`` (Catalyst 1300 / CBS350) and ``1`` as ``serial_number`` fallbacks when the primary chassis serial source is absent. Adds new Catalyst 9200 (``1.3.6.1.4.1.9.1.3079``) and Catalyst 1300 (``1.3.6.1.4.1.9.1.3233``, ``1.3.6.1.4.1.9.1.3236``) sysobjectids to the cisco-catalyst profile so those devices match and report a serial. diff --git a/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml b/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml index 5f0f9cc6b4fe0..f4e652a936e0a 100644 --- a/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml +++ b/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst.yaml @@ -463,3 +463,6 @@ sysobjectid: - 1.3.6.1.4.1.9.1.3023 # ciscoC1000FE48T4GL - 1.3.6.1.4.1.9.1.3024 # ciscoC1000FE48P4GL - 1.3.6.1.4.1.9.1.3069 # ciscoC8500L8S4X + - 1.3.6.1.4.1.9.1.3079 # ciscoC9200CX12P2X2G + - 1.3.6.1.4.1.9.1.3233 # ciscoC130024P4G + - 1.3.6.1.4.1.9.1.3236 # ciscoSwitch1300 From 015b495ea15e7e8f667101bc37899cf62a244c7a Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Thu, 21 May 2026 01:25:10 +1000 Subject: [PATCH 12/13] SNMP: sort and dedupe snmprec test fixtures The snmpsim container's entrypoint (datadog/docker-library:snmp) refuses to start if any .snmprec file isn't `sort -V | uniq` clean. Eight files in tests/compose/data had unsorted or duplicate OID rows, making the container exit immediately on boot and the agent collect zero metrics during e2e runs (`Needed at least 1 candidates for snmp., got 0`). No content change other than line reordering; all OID/value pairs are preserved. --- snmp/tests/compose/data/_generic-entity-sensor.snmprec | 2 +- snmp/tests/compose/data/anue.snmprec | 2 +- snmp/tests/compose/data/cisco-5500-wlc.snmprec | 2 +- snmp/tests/compose/data/cisco-asa-5525.snmprec | 2 +- snmp/tests/compose/data/generic-ups.snmprec | 2 +- snmp/tests/compose/data/juniper-variation.snmprec | 2 +- snmp/tests/compose/data/juniper.snmprec | 2 +- snmp/tests/compose/data/watchguard.snmprec | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/snmp/tests/compose/data/_generic-entity-sensor.snmprec b/snmp/tests/compose/data/_generic-entity-sensor.snmprec index de760e26e0a39..85b96fb5315fe 100644 --- a/snmp/tests/compose/data/_generic-entity-sensor.snmprec +++ b/snmp/tests/compose/data/_generic-entity-sensor.snmprec @@ -18,4 +18,4 @@ 1.3.6.1.6.3.10.2.1.1.0|4x|4a616465642062757420666f7277617264 1.3.6.1.6.3.10.2.1.2.0|2|31 1.3.6.1.6.3.10.2.1.3.0|2|31 -1.3.6.1.6.3.10.2.1.4.0|2|1234 \ No newline at end of file +1.3.6.1.6.3.10.2.1.4.0|2|1234 diff --git a/snmp/tests/compose/data/anue.snmprec b/snmp/tests/compose/data/anue.snmprec index 1d410cbc9e4b9..aaf4062d39ab3 100644 --- a/snmp/tests/compose/data/anue.snmprec +++ b/snmp/tests/compose/data/anue.snmprec @@ -1,4 +1,4 @@ 1.3.6.1.2.1.1.1.0|4|anue-packet-broker Device Description 1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.32620.1.1 1.3.6.1.2.1.1.5.0|4|anue-packet-broker.device.name -1.3.6.1.2.1.2.1.0|2|4 \ No newline at end of file +1.3.6.1.2.1.2.1.0|2|4 diff --git a/snmp/tests/compose/data/cisco-5500-wlc.snmprec b/snmp/tests/compose/data/cisco-5500-wlc.snmprec index 28192b5379a84..f9e305da60b6a 100644 --- a/snmp/tests/compose/data/cisco-5500-wlc.snmprec +++ b/snmp/tests/compose/data/cisco-5500-wlc.snmprec @@ -625,4 +625,4 @@ 1.3.6.1.4.1.14179.2.2.13.1.24.0.0.0.0.0.17.0|2|0 1.3.6.1.4.1.14179.2.2.13.1.24.0.0.0.0.0.17.1|2|0 1.3.6.1.4.1.14179.2.2.13.1.24.0.0.0.0.0.18.0|2|0 -1.3.6.1.4.1.14179.2.2.13.1.24.0.0.0.0.0.18.1|2|0 \ No newline at end of file +1.3.6.1.4.1.14179.2.2.13.1.24.0.0.0.0.0.18.1|2|0 diff --git a/snmp/tests/compose/data/cisco-asa-5525.snmprec b/snmp/tests/compose/data/cisco-asa-5525.snmprec index 8184c651523c9..8a81a7714c74b 100644 --- a/snmp/tests/compose/data/cisco-asa-5525.snmprec +++ b/snmp/tests/compose/data/cisco-asa-5525.snmprec @@ -1475,4 +1475,4 @@ 1.3.6.1.6.3.10.2.1.3.0|2|4 1.3.6.1.6.3.10.2.1.3.0|2|28 1.3.6.1.6.3.10.2.1.4.0|2|567 -1.3.6.1.6.3.10.2.1.4.0|2|763 \ No newline at end of file +1.3.6.1.6.3.10.2.1.4.0|2|763 diff --git a/snmp/tests/compose/data/generic-ups.snmprec b/snmp/tests/compose/data/generic-ups.snmprec index 6ad13b03cac0f..5e81778cc2e6a 100644 --- a/snmp/tests/compose/data/generic-ups.snmprec +++ b/snmp/tests/compose/data/generic-ups.snmprec @@ -1,4 +1,4 @@ 1.3.6.1.2.1.1.1.0|4|generic-ups Device Description 1.3.6.1.2.1.1.2.0|6|1.3.6.1.2.1.33 1.3.6.1.2.1.1.5.0|4|generic-ups.device.name -1.3.6.1.2.1.33.1.2.2.0|2|10 \ No newline at end of file +1.3.6.1.2.1.33.1.2.2.0|2|10 diff --git a/snmp/tests/compose/data/juniper-variation.snmprec b/snmp/tests/compose/data/juniper-variation.snmprec index ab67508b4dd95..5ae40d268756a 100644 --- a/snmp/tests/compose/data/juniper-variation.snmprec +++ b/snmp/tests/compose/data/juniper-variation.snmprec @@ -21,4 +21,4 @@ 1.3.6.1.2.1.25.3.3.1.1.10|2|10 1.3.6.1.2.1.25.3.3.1.1.21|2|21 1.3.6.1.2.1.25.3.3.1.2.10|2|31 -1.3.6.1.2.1.25.3.3.1.2.21|2|15 \ No newline at end of file +1.3.6.1.2.1.25.3.3.1.2.21|2|15 diff --git a/snmp/tests/compose/data/juniper.snmprec b/snmp/tests/compose/data/juniper.snmprec index bff8cb320bf63..f243fee4446a6 100644 --- a/snmp/tests/compose/data/juniper.snmprec +++ b/snmp/tests/compose/data/juniper.snmprec @@ -21,4 +21,4 @@ 1.3.6.1.2.1.25.3.3.1.1.10|2|10 1.3.6.1.2.1.25.3.3.1.1.21|2|21 1.3.6.1.2.1.25.3.3.1.2.10|2|31 -1.3.6.1.2.1.25.3.3.1.2.21|2|15 \ No newline at end of file +1.3.6.1.2.1.25.3.3.1.2.21|2|15 diff --git a/snmp/tests/compose/data/watchguard.snmprec b/snmp/tests/compose/data/watchguard.snmprec index a7e31acb4c611..c106ac3eb03d3 100644 --- a/snmp/tests/compose/data/watchguard.snmprec +++ b/snmp/tests/compose/data/watchguard.snmprec @@ -16,4 +16,4 @@ 1.3.6.1.2.1.25.3.3.1.1.10|2|10 1.3.6.1.2.1.25.3.3.1.1.21|2|21 1.3.6.1.2.1.25.3.3.1.2.10|2|31 -1.3.6.1.2.1.25.3.3.1.2.21|2|15 \ No newline at end of file +1.3.6.1.2.1.25.3.3.1.2.21|2|15 From d0e0bc77c4f47bea4278f4e763f0428d469e40c4 Mon Sep 17 00:00:00 2001 From: Ian Bucad Date: Wed, 3 Jun 2026 17:04:32 +1000 Subject: [PATCH 13/13] SNMP: scope Catalyst entPhysicalSerialNum fallback to index 67109120 Drops the broader entPhysicalSerialNum.1 fallback (entPhysicalIndex is arbitrary per ENTITY-MIB and .1 is not guaranteed to be the chassis). Keeps the documented .67109120 chassis index used by Catalyst 1300 / CBS-derived chassis. Test fixture renamed and re-targeted to a Catalyst 1300 sysObjectID (ciscoC130024P4G, 1.3.6.1.4.1.9.1.3233) so the snmprec models a device family where this index is actually valid. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../snmp/data/default_profiles/_cisco-catalyst.yaml | 5 ----- snmp/tests/compose/data/cisco-catalyst-1300.snmprec | 4 ++++ snmp/tests/compose/data/cisco-catalyst-9k.snmprec | 4 ---- snmp/tests/test_e2e_core_metadata.py | 12 ++++++------ snmp/tests/test_profiles.py | 6 +++--- 5 files changed, 13 insertions(+), 18 deletions(-) create mode 100644 snmp/tests/compose/data/cisco-catalyst-1300.snmprec delete mode 100644 snmp/tests/compose/data/cisco-catalyst-9k.snmprec diff --git a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml index 9dda980240063..7ae2c03cb3393 100644 --- a/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml +++ b/snmp/datadog_checks/snmp/data/default_profiles/_cisco-catalyst.yaml @@ -20,11 +20,6 @@ metadata: # Reference: https://www.cisco.com/c/en/us/support/docs/smb/switches/Cisco-Business-Switching/kmgmt3636-snmpv3-common-oids-cbs350.html - OID: 1.3.6.1.2.1.47.1.1.1.1.11.67109120 name: entPhysicalSerialNum - # ENTITY-MIB: entPhysicalSerialNum at entPhysicalIndex 1 — fallback when stack MIB data is missing. - # Source: https://circitor.fr/Mibs/Html/ENTITY-MIB.php - # Stacked members often use x000 indexes (1000, 2000, …); add more list entries if you need them. - - OID: 1.3.6.1.2.1.47.1.1.1.1.11.1 - name: entPhysicalSerialNum metrics: - MIB: CISCO-ENTITY-SENSOR-MIB diff --git a/snmp/tests/compose/data/cisco-catalyst-1300.snmprec b/snmp/tests/compose/data/cisco-catalyst-1300.snmprec new file mode 100644 index 0000000000000..e04715152644c --- /dev/null +++ b/snmp/tests/compose/data/cisco-catalyst-1300.snmprec @@ -0,0 +1,4 @@ +1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.9.1.3233 +1.3.6.1.2.1.1.3.0|67|470854 +1.3.6.1.2.1.1.5.0|4|catalyst-1300.example +1.3.6.1.2.1.47.1.1.1.1.11.67109120|4|FOCXXXXXXXX diff --git a/snmp/tests/compose/data/cisco-catalyst-9k.snmprec b/snmp/tests/compose/data/cisco-catalyst-9k.snmprec deleted file mode 100644 index 95e528c19b19c..0000000000000 --- a/snmp/tests/compose/data/cisco-catalyst-9k.snmprec +++ /dev/null @@ -1,4 +0,0 @@ -1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.9.1.2804 -1.3.6.1.2.1.1.3.0|67|470854 -1.3.6.1.2.1.1.5.0|4|catalyst-9k.example -1.3.6.1.2.1.47.1.1.1.1.11.1|4|FOCXXXXXXXX.1 diff --git a/snmp/tests/test_e2e_core_metadata.py b/snmp/tests/test_e2e_core_metadata.py index 887c352d0f1e8..6630d8e120b0e 100644 --- a/snmp/tests/test_e2e_core_metadata.py +++ b/snmp/tests/test_e2e_core_metadata.py @@ -313,7 +313,7 @@ def test_e2e_core_metadata_cisco_catalyst_entity_serial_fallback(dd_agent_check) instance = config['instances'][0] instance.update( { - 'community_string': 'cisco-catalyst-9k', + 'community_string': 'cisco-catalyst-1300', 'loader': 'core', } ) @@ -330,10 +330,10 @@ def test_e2e_core_metadata_cisco_catalyst_entity_serial_fallback(dd_agent_check) 'snmp_device:' + device_ip, ], 'ip_address': device_ip, - 'name': 'catalyst-9k.example', + 'name': 'catalyst-1300.example', 'profile': 'cisco-catalyst', 'status': 1, - 'sys_object_id': '1.3.6.1.4.1.9.1.2804', + 'sys_object_id': '1.3.6.1.4.1.9.1.3233', 'tags': [ 'agent_host:' + common.get_agent_hostname(), 'device_id:' + device_id, @@ -341,12 +341,12 @@ def test_e2e_core_metadata_cisco_catalyst_entity_serial_fallback(dd_agent_check) 'device_namespace:default', 'device_vendor:cisco', 'snmp_device:' + device_ip, - 'snmp_host:catalyst-9k.example', - 'device_hostname:catalyst-9k.example', + 'snmp_host:catalyst-1300.example', + 'device_hostname:catalyst-1300.example', 'snmp_profile:cisco-catalyst', ], 'vendor': 'cisco', - 'serial_number': 'FOCXXXXXXXX.1', + 'serial_number': 'FOCXXXXXXXX', 'device_type': 'switch', 'integration': 'snmp', } diff --git a/snmp/tests/test_profiles.py b/snmp/tests/test_profiles.py index 619f7c1bb51bd..7cf0795c5c0d4 100644 --- a/snmp/tests/test_profiles.py +++ b/snmp/tests/test_profiles.py @@ -2942,10 +2942,10 @@ def test_cisco_catalyst(aggregator): @pytest.mark.usefixtures("dd_environment") def test_cisco_catalyst_entity_serial_fallback(aggregator): # Exercises the entPhysicalSerialNum fallback when chassisSerialNumberString is absent. - run_profile_check('cisco-catalyst-9k', 'cisco-catalyst') + run_profile_check('cisco-catalyst-1300', 'cisco-catalyst') common_tags = common.CHECK_TAGS + [ - 'snmp_host:catalyst-9k.example', - 'device_hostname:catalyst-9k.example', + 'snmp_host:catalyst-1300.example', + 'device_hostname:catalyst-1300.example', 'snmp_profile:cisco-catalyst', 'device_vendor:cisco', ]