Contrail 见解中的 SNMP 陷阱
Contrail 见解支持监控从网络设备发送的 SNMP 陷阱。陷阱是从 SNMP 代理向远程网络管理系统或陷阱接收器发送的未经请求的消息。
配置设备以转发 SNMP 陷阱
要使 Contrail 见解侦听设备的 SNMP 陷阱,您需要将设备配置为转发陷阱,因为默认情况下不会转发陷阱。这可以通过设备的 Junos OS CLI 手动完成,也可以通过 Contrail 见解软件开发工具包 (SDK) 完成。
检查设备上的 SNMP 陷阱配置
Contrail 见解 3.1 版之前的版本:
在 Contrail 见解 3.0 版中,Contrail 见解仅支持 SNMPv2 陷阱。将设备配置为转发 SNMP 陷阱后,可以通过登录到 Junos OS CLI 并运行以下命令来验证配置:
show snmp
输出应类似于以下示例:
trap-options { source-address {device_ip}; } trap-group snmp-trap-metallb-test { version v2; destination-port 42597; categories { link; authentication; } targets { {collector_1_ip}; {collector_2_ip}; } }
有关配置的其他详细信息,请参阅 Contrail 见解中的 SNMP 陷阱。
在 Contrail 见解 3.1 版之后:
安装 Contrail 见解 3.1 或更高版本时,需要更新设备上的 SNMP 陷阱配置,因为 Contrail 见解 3.0 版上的设备配置不再有效。在 Contrail 见解 3.1 或更高版本中,Contrail 见解同时支持 SNMPv2 和 SNMPv3。您需要使用以下示例配置来配置设备,以便 Contrail 见解收集 SNMP 陷阱。
将设备配置为转发 SNMP 陷阱后,可以通过登录到 Junos OS CLI 并运行以下命令来验证配置:
show snmp v3
输出应类似于 SNMPv2 的以下示例:
security-name public
以下配置中的 指的是您在设备中设置的 SNMPv2 公共组名称。在添加此 SNMP 陷阱配置之前,请设置 SNMPv2 公共组名称。
... SNMP v2c Configuration ... target-address appformix_snmp_v2 { address x.x.x.x; port 42597; tag-list appformix_snmp_v2; target-parameters appformix_snmp_v2; } target-parameters appformix_snmp_v2 { parameters { message-processing-model v2c; security-model v2c; security-level none; security-name public; //this is the snmp v2c community name } notify-filter appformix_snmp_v2; } notify appformix_snmp_v2 { type trap; tag appformix_snmp_v2; } notify-filter appformix_snmp_v2 { oid .1 include; }
输出应类似于 SNMPv3 的以下示例:
... SNMP v3 Configuration ... target-address appformix_snmp_v3 { address x.x.x.x; port 42597; tag-list appformix_snmp_v3; target-parameters appformix_snmp_v3; } target-parameters appformix_snmp_v3 { parameters { message-processing-model v3; security-model usm; security-level authentication; security-name acelio; } notify-filter appformix_snmp_v3; } notify appformix_snmp_v3 { type trap; tag appformix_snmp_v3; } notify-filter appformix_snmp_v3 { oid .1 include; }
变量、security-level
、security-model
security-name
和与您在此设备中设置的 SNMPv3 配置相关。在启用 SNMPv3 陷阱之前,请使用 SNMPv3 凭据配置设备。
配置 Contrail 见解以启用来自网络设备的 SNMP 陷阱监控
- 为网络设备启用侦听 SNMP 陷阱
- 为 SNMPv2c 创建网络设备 JSON 文件
- 为 SNMPv3 创建网络设备 JSON 文件
- 配置 Contrail 见解网络设备监控插件
- 启用 SNMP 陷阱以显示在 Contrail 见解仪表板中
- 用于外部通知的 SNMP 陷阱数据
为网络设备启用侦听 SNMP 陷阱
在仪表板Contrail 见解 设置>网络设备中,您可以添加或编辑 SNMP 设备配置,并启用 Contrail 见解 来收集这些已配置设备的 SNMP 陷阱。只要您从 Ansible 发布了 snmp_trap_network_device
插件,Contrail 见解就会自动开始侦听来自 Contrail 见解中配置的所有 SNMP 网络设备的 SNMP 陷阱。
当您要为设备启用 SNMPv3 陷阱时,需要该字段 SnmpEngineId
。正常的 SNMP 轮询不需要此字段。
为 SNMPv2c 创建网络设备 JSON 文件
需要监控的网络设备列表应按以下格式添加到 JSON 文件中。JSON 文件中可以有多个设备。
{ "NetworkDeviceList": [ { "NetworkDevice": { "MetaData": { "SnmpConfig": { "Version": "2c", "OIDList": ["TCP-MIB::tcp", "IF-MIB::ifTable", "enterprises.2636.3.1.13.1"], "Community": "public"} }, "Name": "QFX0", "NetworkDeviceId": "QFX0", "ManagementIp": "x.x.x.x", "ChassisType": "tor", "Source": ["user.snmp"], "InterfaceList": [ ], "ConnectionInfo": [] } } ] }
user.snmp
需要包含在字段中Source
。Contrail 见解会自动开始监控从 Contrail 见解中配置的所有设备发送的user.snmp
陷阱。有关其他字段以及如何使用 Ansible 发布网络设备的更多详细信息,请参阅通过 JSON 文件配置网络设备。
为 SNMPv3 创建网络设备 JSON 文件
需要监控的网络设备列表应使用以下格式添加到 JSON 文件中。JSON 文件中可以有多个设备。对于 SNMPv3 陷阱,需要为 SnmpEngineId
SnmpConfig
指定 。
{ "NetworkDeviceList": [ { "NetworkDevice": { "MetaData": { "SnmpConfig": { "Version": "3", "Password": "pwd", "Level": "authPriv", "PrivKey": "privkey", "PrivProtocol": "DES", "Protocol": "MD5", "SnmpEngineId": "80000a4c010a574478", "OIDList": ["TCP-MIB::tcp", "IF-MIB::ifTable", "enterprises.2636.3.1.13.1"], "Username": "user"} }, "Name": "QFX0", "NetworkDeviceId": "QFX0", "ManagementIp": "x.x.x.x", "ChassisType": "tor", "Source": ["user.snmp"], "InterfaceList": [ ], "ConnectionInfo": [] } } ] }
配置 Contrail 见解网络设备监控插件
需要在安装时配置 Contrail 见解,以启用 SNMP 陷阱插件。Contrail 见解在 Ansible 安装目录的文件夹中certified_plugins
有一个内置的 SNMP 陷阱插件。这需要包含在 中的group_vars/all
变量的插件描述符appformix_plugins
中。
# network_device_file_name is optional, if you want to add devices from UI, then you don't need it network_device_file_name: <path_to_above_json_file> appformix_plugins: - { plugin_info: certified_plugins/snmp_trap_network_device.json }
启用 SNMP 陷阱以显示在 Contrail 见解仪表板中
中配置 profiles/network_device_snmp_trap_profile.json
了一个内置的 SNMP 陷阱规则,用于在 Contrail 见解仪表板警报页面中启用 SNMP 陷阱弹出窗口。默认情况下,陷阱会发布到 Contrail 见解,每次将陷阱发送到 Contrail 见解代理时,陷阱都会显示在 Contrail 见解仪表板警报页面中,并显示有关 Contrail 见解收到的陷阱的详细信息。
用于外部通知的 SNMP 陷阱数据
当 Contrail 见解 收到 SNMP 陷阱时,Contrail 见解会在 Dashboard > Alarms 中显示该陷阱作为规则 network_device_snmp_trap
,并将其发送给 Apache Kafka( 如果 Kafka 已在 Contrail 见解 中配置)。您可以将规则 network_device_snmp_trap
与外部通知程序(如 PagerDuty、ServiceNow、Slack、自定义通知程序等)相关联。
以下是发送给 SNMP 陷阱的外部通知程序的示例 JSON 文件:
{'status': { 'description': 'NetworkDevice sample_device: SNMP Trap Received for OID=linkUp', 'timestamp': 1555549001000, 'entityType': 'network_device', 'state': 'triggered', 'entityDetails': {}, 'entityId': 'sample_device', 'metaData': { 'snmpTrapOID': 'linkUp', 'Timestamp': 1555548996000, 'ifAdminStatus': '1', 'roomKey': 'sample_device', 'ifIndex': '545', 'ifName': 'irb.20', 'ifOperStatus': '1', 'sysUpTimeInstance': '1028117810'} }, 'kind': 'Alarm', 'spec': { 'aggregationFunction': 'sum', 'intervalDuration': 1, 'severity': 'none', 'module': 'alarms', 'intervalCount': 1, 'metricType': 'snmp.trap', 'name': 'network_device_snmp_trap', 'eventRuleId': 'NETWORK_DEVICE_SNMP_TRAP', 'mode': 'event', 'intervalsWithException': 1, 'threshold': 1, 'comparisonFunction': 'equal'}, 'apiVersion': 'v2'}
您可以在 status
> description
字段中找到 SNMP 陷阱的简要描述,在 status
> metaData
字段找到 SNMP 陷阱的详细信息, status
> entityId
告诉您该陷阱属于哪个网络设备。
在 Contrail 见解网络代理中安装 MIB
当 Contrail 见解收到来自设备的陷阱时,如果您的 Contrail 见解代理中未安装相应的 MIB,则 Contrail 见解可能无法将 OID 解码为正确的用户可理解的字符串。您需要下载 MIB,然后手动将所有 *.txt
MIB 文件复制到所有网络代理 /usr/share/snmp/mibs/
,或者使用 Contrail 见解 Ansible 部署 MIB 文件。
要从 Ansible 安装 MIB,请参阅 自定义 SNMP 插件。