From 474ab8d46cee111288114abed550b2516fdb38a4 Mon Sep 17 00:00:00 2001 From: datadog-bits Date: Wed, 3 Jun 2026 14:52:25 +0000 Subject: [PATCH] AGENT-15682 Add Catalyst SMB profiles --- .../default_profiles/cisco-catalyst-1200.yaml | 64 ++++++++++++ .../default_profiles/cisco-catalyst-1300.yaml | 86 ++++++++++++++++ .../compose/data/cisco-catalyst-1200.snmprec | 6 ++ .../compose/data/cisco-catalyst-1300.snmprec | 6 ++ snmp/tests/test_e2e_core_metadata.py | 98 +++++++++++++++++++ 5 files changed, 260 insertions(+) create mode 100644 snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst-1200.yaml create mode 100644 snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst-1300.yaml create mode 100644 snmp/tests/compose/data/cisco-catalyst-1200.snmprec create mode 100644 snmp/tests/compose/data/cisco-catalyst-1300.snmprec diff --git a/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst-1200.yaml b/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst-1200.yaml new file mode 100644 index 0000000000000..346a0fb71b7ff --- /dev/null +++ b/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst-1200.yaml @@ -0,0 +1,64 @@ +# Cisco Catalyst 1200 Series Smart Switches +# +# These run the Cisco SMB switch OS (the same firmware family as CBS250/350 and +# the SG/SF SMB line), NOT IOS/IOS-XE — so they are modeled on cisco-sb.yaml, +# not cisco-catalyst.yaml. +# +# serial_number (and the chassis software rev) live in ENTITY-MIB at the fixed +# chassis entPhysicalIndex 67109120, which is a property of this SMB OS — the +# documented index for these devices: +# https://www.cisco.com/c/en/us/support/docs/smb/switches/Cisco-Business-Switching/kmgmt3636-snmpv3-common-oids-cbs350.html +# +# sysObjectIDs are the named ciscoC1200* assignments under ciscoProducts +# (1.3.6.1.4.1.9.1) from the official CISCO-PRODUCTS-MIB +# (github.com/cisco/cisco-mibs, v2/CISCO-PRODUCTS-MIB.my). The range is +# contiguous (3210-3225); listed explicitly because 9.1.* is shared with +# mainstream IOS-XE Catalysts that must NOT match this profile. + +extends: + - _base.yaml + - _generic-if.yaml + # Deliberately does NOT import cisco.yaml (SMB OS, like cisco-sb.yaml). + +device: + vendor: "cisco" + +sysobjectid: + - 1.3.6.1.4.1.9.1.3210 # ciscoC12008TD - C1200-8T-D + - 1.3.6.1.4.1.9.1.3211 # ciscoC12008TE2G - C1200-8T-E-2G + - 1.3.6.1.4.1.9.1.3212 # ciscoC12008PE2G - C1200-8P-E-2G + - 1.3.6.1.4.1.9.1.3213 # ciscoC12008FP2G - C1200-8FP-2G + - 1.3.6.1.4.1.9.1.3214 # ciscoC120016T2G - C1200-16T-2G + - 1.3.6.1.4.1.9.1.3215 # ciscoC120016P2G - C1200-16P-2G + - 1.3.6.1.4.1.9.1.3216 # ciscoC120024T4G - C1200-24T-4G + - 1.3.6.1.4.1.9.1.3217 # ciscoC120024P4G - C1200-24P-4G + - 1.3.6.1.4.1.9.1.3218 # ciscoC120024FP4G - C1200-24FP-4G + - 1.3.6.1.4.1.9.1.3219 # ciscoC120048T4G - C1200-48T-4G + - 1.3.6.1.4.1.9.1.3220 # ciscoC120048P4G - C1200-48P-4G + - 1.3.6.1.4.1.9.1.3221 # ciscoC120024T4X - C1200-24T-4X + - 1.3.6.1.4.1.9.1.3222 # ciscoC120024P4X - C1200-24P-4X + - 1.3.6.1.4.1.9.1.3223 # ciscoC120024FP4X - C1200-24FP-4X + - 1.3.6.1.4.1.9.1.3224 # ciscoC120048T4X - C1200-48T-4X + - 1.3.6.1.4.1.9.1.3225 # ciscoC120048P4X - C1200-48P-4X + +metadata: + device: + fields: + type: + value: "switch" + serial_number: + symbol: + MIB: ENTITY-MIB + OID: 1.3.6.1.2.1.47.1.1.1.1.11.67109120 + name: entPhysicalSerialNum + version: + symbol: + MIB: ENTITY-MIB + OID: 1.3.6.1.2.1.47.1.1.1.1.10.67109120 + name: entPhysicalSoftwareRev + +metrics: + - MIB: CISCOSB-rndMng + symbol: + name: cpu.usage + OID: 1.3.6.1.4.1.9.6.1.101.1.8 \ No newline at end of file diff --git a/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst-1300.yaml b/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst-1300.yaml new file mode 100644 index 0000000000000..b246c64ddfe4a --- /dev/null +++ b/snmp/datadog_checks/snmp/data/default_profiles/cisco-catalyst-1300.yaml @@ -0,0 +1,86 @@ +# Cisco Catalyst 1300 / 1300X Series Managed Switches +# +# These run the Cisco SMB switch OS (the same firmware family as CBS250/350 and +# the SG/SF SMB line), NOT IOS/IOS-XE — so they are modeled on cisco-sb.yaml, +# not cisco-catalyst.yaml. +# +# serial_number (and the chassis software rev) live in ENTITY-MIB at the fixed +# chassis entPhysicalIndex 67109120, which is a property of this SMB OS — the +# documented index for these devices: +# https://www.cisco.com/c/en/us/support/docs/smb/switches/Cisco-Business-Switching/kmgmt3636-snmpv3-common-oids-cbs350.html +# +# sysObjectIDs are the named ciscoC1300* / ciscoC1300X* assignments under +# ciscoProducts (1.3.6.1.4.1.9.1) from the official CISCO-PRODUCTS-MIB +# (github.com/cisco/cisco-mibs, v2/CISCO-PRODUCTS-MIB.my): Catalyst 1300 = +# 3226-3253, Catalyst 1300X = 3410-3417. Listed explicitly because 9.1.* is +# shared with mainstream IOS-XE Catalysts that must NOT match this profile. + +extends: + - _base.yaml + - _generic-if.yaml + # Deliberately does NOT import cisco.yaml (SMB OS, like cisco-sb.yaml). + +device: + vendor: "cisco" + +sysobjectid: + # --- Catalyst 1300 (ciscoProducts 3226-3253) --- + - 1.3.6.1.4.1.9.1.3226 # ciscoC13008TE2G - C1300-8T-E-2G + - 1.3.6.1.4.1.9.1.3227 # ciscoC13008PE2G - C1300-8P-E-2G + - 1.3.6.1.4.1.9.1.3228 # ciscoC13008FP2G - C1300-8FP-2G + - 1.3.6.1.4.1.9.1.3229 # ciscoC130016T2G - C1300-16T-2G + - 1.3.6.1.4.1.9.1.3230 # ciscoC130016P2G - C1300-16P-2G + - 1.3.6.1.4.1.9.1.3231 # ciscoC130016FP2G - C1300-16FP-2G + - 1.3.6.1.4.1.9.1.3232 # ciscoC130024T4G - C1300-24T-4G + - 1.3.6.1.4.1.9.1.3233 # ciscoC130024P4G - C1300-24P-4G + - 1.3.6.1.4.1.9.1.3234 # ciscoC130024FP4G - C1300-24FP-4G + - 1.3.6.1.4.1.9.1.3235 # ciscoC130048T4G - C1300-48T-4G + - 1.3.6.1.4.1.9.1.3236 # ciscoC130048P4G - C1300-48P-4G + - 1.3.6.1.4.1.9.1.3237 # ciscoC130048FP4G - C1300-48FP-4G + - 1.3.6.1.4.1.9.1.3238 # ciscoC130016P4X - C1300-16P-4X + - 1.3.6.1.4.1.9.1.3239 # ciscoC130024T4X - C1300-24T-4X + - 1.3.6.1.4.1.9.1.3240 # ciscoC130024P4X - C1300-24P-4X + - 1.3.6.1.4.1.9.1.3241 # ciscoC130024FP4X - C1300-24FP-4X + - 1.3.6.1.4.1.9.1.3242 # ciscoC130048T4X - C1300-48T-4X + - 1.3.6.1.4.1.9.1.3243 # ciscoC130048P4X - C1300-48P-4X + - 1.3.6.1.4.1.9.1.3244 # ciscoC130048FP4X - C1300-48FP-4X + - 1.3.6.1.4.1.9.1.3245 # ciscoC13008MGP2X - C1300-8MGP-2X + - 1.3.6.1.4.1.9.1.3246 # ciscoC130024MGP4X - C1300-24MGP-4X + - 1.3.6.1.4.1.9.1.3247 # ciscoC130048MGP4X - C1300-48MGP-4X + - 1.3.6.1.4.1.9.1.3248 # ciscoC130012XT2X - C1300-12XT-2X + - 1.3.6.1.4.1.9.1.3249 # ciscoC130012XS - C1300-12XS + - 1.3.6.1.4.1.9.1.3250 # ciscoC130024XT - C1300-24XT + - 1.3.6.1.4.1.9.1.3251 # ciscoC130024XS - C1300-24XS + - 1.3.6.1.4.1.9.1.3252 # ciscoC130016XTS - C1300-16XTS + - 1.3.6.1.4.1.9.1.3253 # ciscoC130024XTS - C1300-24XTS + # --- Catalyst 1300X (ciscoProducts 3410-3417) --- + - 1.3.6.1.4.1.9.1.3410 # ciscoC1300X10NU2X - 10*5G+2SFP28 + - 1.3.6.1.4.1.9.1.3411 # ciscoC1300X24MU4X - 24*2.5G+4SFP28 + - 1.3.6.1.4.1.9.1.3412 # ciscoC1300X24NGU4X - 16GE+8*5G+4SFP28 + - 1.3.6.1.4.1.9.1.3413 # ciscoC1300X24P4X - 24GE+4SFP28, PoE + - 1.3.6.1.4.1.9.1.3414 # ciscoC1300X24T4X - 24GE+4SFP28 + - 1.3.6.1.4.1.9.1.3415 # ciscoC1300X48NGU4X - 40GE+8*5G+4SFP28 + - 1.3.6.1.4.1.9.1.3416 # ciscoC1300X48P4X - 48GE+4SFP28, PoE + - 1.3.6.1.4.1.9.1.3417 # ciscoC1300X48T4X - 48GE+4SFP28 + +metadata: + device: + fields: + type: + value: "switch" + serial_number: + symbol: + MIB: ENTITY-MIB + OID: 1.3.6.1.2.1.47.1.1.1.1.11.67109120 + name: entPhysicalSerialNum + version: + symbol: + MIB: ENTITY-MIB + OID: 1.3.6.1.2.1.47.1.1.1.1.10.67109120 + name: entPhysicalSoftwareRev + +metrics: + - MIB: CISCOSB-rndMng + symbol: + name: cpu.usage + OID: 1.3.6.1.4.1.9.6.1.101.1.8 \ No newline at end of file diff --git a/snmp/tests/compose/data/cisco-catalyst-1200.snmprec b/snmp/tests/compose/data/cisco-catalyst-1200.snmprec new file mode 100644 index 0000000000000..389fac8566669 --- /dev/null +++ b/snmp/tests/compose/data/cisco-catalyst-1200.snmprec @@ -0,0 +1,6 @@ +1.3.6.1.2.1.1.1.0|4|Cisco Catalyst 1200 C1200-24P-4G Smart Switch +1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.9.1.3217 +1.3.6.1.2.1.1.3.0|67|470854 +1.3.6.1.2.1.1.5.0|4|catalyst-1200.example +1.3.6.1.2.1.47.1.1.1.1.10.67109120|4|4.1.3.36 +1.3.6.1.2.1.47.1.1.1.1.11.67109120|4|FOC1200ABCD \ No newline at end of file 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..b1a20ebe70ce3 --- /dev/null +++ b/snmp/tests/compose/data/cisco-catalyst-1300.snmprec @@ -0,0 +1,6 @@ +1.3.6.1.2.1.1.1.0|4|Cisco Catalyst 1300 C1300-24P-4G Managed Switch +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.10.67109120|4|4.1.3.36 +1.3.6.1.2.1.47.1.1.1.1.11.67109120|4|FOC1300WXYZ \ No newline at end of file diff --git a/snmp/tests/test_e2e_core_metadata.py b/snmp/tests/test_e2e_core_metadata.py index 5e80a7a477cf1..acb584ddfef01 100644 --- a/snmp/tests/test_e2e_core_metadata.py +++ b/snmp/tests/test_e2e_core_metadata.py @@ -308,6 +308,104 @@ def test_e2e_core_metadata_cisco_catalyst(dd_agent_check): assert_device_metadata(aggregator, device) +def test_e2e_core_metadata_cisco_catalyst_1200(dd_agent_check): + # Catalyst 1200 runs the SMB OS: serial_number comes from ENTITY-MIB + # entPhysicalSerialNum at the fixed chassis index 67109120. + config = common.generate_container_instance_config([]) + instance = config['instances'][0] + instance.update( + { + 'community_string': 'cisco-catalyst-1200', + '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-1200.example', + 'description': 'Cisco Catalyst 1200 C1200-24P-4G Smart Switch', + 'profile': 'cisco-catalyst-1200', + 'status': 1, + 'sys_object_id': '1.3.6.1.4.1.9.1.3217', + '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-1200.example', + 'device_hostname:catalyst-1200.example', + 'snmp_profile:cisco-catalyst-1200', + ], + 'vendor': 'cisco', + 'serial_number': 'FOC1200ABCD', + 'version': '4.1.3.36', + 'device_type': 'switch', + 'integration': 'snmp', + } + assert_device_metadata(aggregator, device) + + +def test_e2e_core_metadata_cisco_catalyst_1300(dd_agent_check): + # Catalyst 1300/1300X runs the SMB OS: serial_number comes from ENTITY-MIB + # entPhysicalSerialNum at the fixed chassis index 67109120. + config = common.generate_container_instance_config([]) + instance = config['instances'][0] + instance.update( + { + 'community_string': 'cisco-catalyst-1300', + '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-1300.example', + 'description': 'Cisco Catalyst 1300 C1300-24P-4G Managed Switch', + 'profile': 'cisco-catalyst-1300', + 'status': 1, + 'sys_object_id': '1.3.6.1.4.1.9.1.3233', + '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-1300.example', + 'device_hostname:catalyst-1300.example', + 'snmp_profile:cisco-catalyst-1300', + ], + 'vendor': 'cisco', + 'serial_number': 'FOC1300WXYZ', + 'version': '4.1.3.36', + '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]