vCenter实例配置snmp 代理来发送告警

背景

最近,在对接vcenter告警到第三方监控平台中过程中,发现之前触发成功的snmptrap告警信息,触发失败了;本文主要借此,说下vcenter发送snmptrap的原理及snmptrap的测试排故方法,以供参考。
在这里插入图片描述
在这里插入图片描述

原理

vCenter Server设备/实例安装后自带的SNMP agent组件可以在vCenter Server启动、告警触发时发送trap消息;而另一个组件SNMP agent仅作为trap的发射器,不支持SNMP的其他管理操作,诸如get, getbulk和gettext命令;vCenter默认发送SNMPv1 和v2c的traps到其他管理组件,之后在这些管理组件/平台配置对从vc发过来的trap做解析即可;默认用UDP 162作为trap的发送端口,你可以在vc的管理界面自定义其他端口。

在VC实例中,实际是由2个组件来完成trap的发送的,其中,配置的告警snmp trap信息是通过VCSA实例上的vpxd agent来发出来的,而vc中的另一个代理snmp agent将实现允许告警trap信息发送给vmware的外部第三方监控平台/告警接收系统。

vCenter服务器发送的告警信息定义在VMWARE-VC-EVENT-MIB.mib库文件里,可将其传到接收trap的平台上,做trap的oid参数信息解析;

vcenter上默认告警时间为5分钟,且不能通过Web客户端修改。如果一个警报在一个5分钟的窗口内被触发多次,它只会执行一次操作。如果告警在第一次触发后5分钟内被重置,这也会导致重置规则操作被忽略。这个5分钟的频率是vmware产品预期的行为,用来防止警报事件的滥发而导致数据库持续增大。我们可以将告警频率调整为0。将频率设置为0可以有效地禁用对告警及其操作的任何数据流限制。

操作

1、图形界面vcenter平台中配置

在这里插入图片描述
在这里插入图片描述

2、命令行配置:root登录

1)使用snmp.set --notraps 命令可以筛选陷阱,执行:
snmp.set --notraps oid_list //其中oid_list 是要筛选的陷阱的对象 ID 列表(以逗号分隔)

2)要清除所有陷阱筛选器,执行:snmp.set --notraps reset;

3)启用SNMP 代理,执行: snmp.enable

4)配置vcsa示例snmp团体字,执行:
snmp.set --communities
eg:snmp.set --communities public,eastnoc,westnoc //指定多个社区,请用逗号分隔社区名称。

3、vcsa调试snmp告警

使用 vCenter Server Appliance SNMP 代理将虚拟机和环境通知发送到管理系统,要使用 SNMP 代理发送 SNMP v1 和 v2c 通知,则必须配置目标(接收方)、单播地址、社区以及可选端口。默认,SNMP 代理默认将通知发送到目标管理系统上的 UDP 端口 162。

1)root登录vCenter/VCCSA实例

2)执行: snmp.set --targets命令配置接手/要发送告警到的管理系统

snmp.set --targets target_address@port/community

其中:target_address、port 和 community 分别是目标系统的地址、通知发送到的端口号和社区名称。端口值是可选的。如果未指定端口,则使用默认端口 161。

注意:每次使用此命令指定目标时,所指定的设置将会覆盖掉所有之前指定的设置,操作时要特别小心。要指定多个目标,请用逗号分隔它们。为避免 SNMP 代理的端口与其他服务的端口之间发生冲突,请使用没有在 /etc/services 中定义的 UDP 端口。指定的端口不能已由其他服务使用。使用端口 49152 及以上来监听;

eg1;snmp.set --targets 192.0.2.1@678/targetcommunity,2001:db8::1/anothercom

3)发送测试陷阱以验证是否正确配置了代理,执行:snmp.test;vc实例上snmp代理会将 warmStart 陷阱发送到已配置的目标。

4、配置默认告警时间为0(不限制告警频率)

1)下载脚本:eset-alarm-reporting-frequency.ps1.gz,
地址:https://kb.vmware.com/sfc/servlet.shepherd/version/download/068f400000CSrblAAD

按照现场实际修改脚本中以下参数:
$vcIP = ‘VCENTER_IP’
$user = ‘VCENTER_SSO_ADMIN_USERNAME’
$pass = ‘VCENTER_SSO_ADMIN_PASSWORD’
$alarmName = “ALARM_NAME”

完成后运行PowerCLI 脚本文件即可;

2)通过修改数据库方式修改:

1>连接vcenter数据库:pgadmin

2>执行:SELECT setting_data FROM vpx_alarm LIMIT 1;
返回类似如下:
0300

3>复制上述结果,执行:UPDATE vpx_alarm SET setting_data=‘XML_FROM_STEP_3’ WHERE name=‘ALARM_NAME’;

eg:PDATE vpx_alarm SET setting_data=‘00’ WHERE name=‘My Alarm’;

4>重启vc服务:
service-control --stop vmware-vpxd;service-control --start vmware-vpxd;

关于vc trap中3种告警未成功触发的问题

1)无法连接到存储(alarm.StorageConnectivityAlarm):配置模式告警触发条件如下(这样就可正常触发了)
在这里插入图片描述
原有告警需配置为严重状态,配置警告会报错,因该告警类型没有次字符串定义:
在这里插入图片描述
在这里插入图片描述

默认告警定义如下,告警触发完成后,恢复如下原告警定义状态:
在这里插入图片描述

2)主机连接故障(alarm.HostConnectivityAlarm):

在这里插入图片描述
其他原告警均配置为严重(red):
在这里插入图片描述
3)主机错误(alarm.HostErrorAlarm):与上同理;

4)当同一对象上定义了多条告警,且部分告警已被禁用时,会出现告警不会在定义的事件上触发;在父对象上禁用的告警也会影响在下级对象上定义的告警。这时,可考虑删除和解禁同一对象的其他告警配置或父告警配置;

5)VSAN健康状态告警没有被成功触发告警可能原因是:vSAN定期运行状况检查可能已禁用,请去集群的VSAN【健康和性能】里,打开定期运行状况检查。

猜你喜欢

转载自blog.csdn.net/ximenjianxue/article/details/112565850