snmptrap?snmp协议里trap设定的作用
各位老铁们,大家好,今天由我来为大家分享snmptrap,以及snmp协议里trap设定的作用的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
求教linux下如何配置snmp trap
安装snmp服务
CentOS/RedHat下可以只用yum命令进行安装。
$ yum–y install net-snmp net-snmp-devel
若要使用snmpwalk进行安装检测,则还需要安装net-snmp-utils包
$ yum–y install net-snmp-utils
Ubuntu可以通过apt-get install snmp snmpd进行安装
设置安全的验证方式
将SNMP代理程序暴露给网络上的所有主机是很危险的,为了防止其它主机访问您的SNMP代理程序,我们需要在SNMP代理程序上加入身份验证机制。SNMP支持不同的验证机制,这取决于不同的SNMP协议版本,云监控目前支持v2c和v3两个版本,其中v2c版本的验证机制比较简单,它基于明文密码和授权IP来进行身份验证,而v3版本则通过用户名和密码的加密传输来实现身份验证,我们建议使用v3,当然,只要按照以下的介绍进行配置,不论是v2c版本还是v3版本,都可以保证一定的安全性,您可以根据情况来选择。
注意一点,SNMP协议版本和SNMP代理程序版本是两回事,刚才说的v2c和v3是指SNMP协议的版本,而Net-SNMP是用来实现SNMP协议的程序套件,目前它的最新版本是刚才提到的5.4.2.1。
v2c
先来看如何配置v2c版本的SNMP代理,我们来创建snmpd的配置文件,默认情况下它是不存在的,我们来创建它,如下:
sdo:~# vi/usr/local/snmp/share/snmp/snmpd.conf
然后我们需要创建一个只读帐号,也就是read-only community,在snmpd.conf中添加以下内容:
rocommunity sdomonitor 114.80.132.9 rocommunity sdomonitor 58.215.169.26 rocommunity sdomonitor 58.215.169.27
如果想要检测服务是否成功开启,则还需要在snmpd.conf中添加:
rocommunity sdomonitor 127.0.0.1
注意,这里的"rocommunity"表示这是一个只读的访问权限,云监控只可以从您的服务器上获取信息,而不能对服务器进行任何设置。
紧接着的"sdomonitor"相当于密码,很多平台喜欢使用"public"这个默认字符串。这里的"sdomonitor"只是一个例子,您可以设置其它字符串作为密码。
最右边的"60.195.249.83"代表指定的监控点IP,这个IP地址是云监控专用的监控点,这意味着只有云监控有权限来访问您的SNMP代理程序。
所以,以上这段配置中,只有"sdomonitor"是需要您进行修改的,同时在云监控上添加服务器的时候,需要提供这个字符串。
v3
当然,我们建议您使用v3版本来进行身份验证。对于一些早期版本的Linux分发版,其内置的SNMP代理程序可能并不支持v3,所以我们建议您按照前边介绍的方法,编译和安装最新的Net-Snmp。
v3支持另一种验证方式,需要创建一个v3的帐号,我们同样修改以下配置文件:
sdo:~# vi/usr/local/snmp/share/snmp/snmpd.conf
然后添加一个只读帐号,如下:
rouser sdomonitor auth
可以看到,在v3中,"rouser"用于表示只读帐号类型,随后的"sdomonitor"是指定的用户名,后边的"auth"指明需要验证。
接下来,我们还要添加"sdomonitor"这个用户,这就是v3中的特殊机制,我们打开以下配置文件:
sdo:~# vi/var/net-snmp/snmpd.conf
这个文件会在snmpd启动的时候被自动调用,我们需要在它里边添加创建用户的指令,如下:
createUser sdomonitor MD5 mypassword
这行配置的意思是创建一个名为"sdomonitor"的用户,密码为"mypassword",并且用MD5进行加密传输。这里要提醒的是:
密码至少要有8个字节
这是SNMP协议的规定,如果小于8个字节,通信将无法进行。
值得注意的是,一旦snmpd启动后,出于安全考虑,以上这行配置会被snmpd自动删除,当然,snmpd会将这些配置以密文的形式记录在其它文件中,重新启动snmpd是不需要再次添加这些配置的,除非您希望创建新的用户。
以上配置中的用户名、密码和加密方式,在云监控添加服务器的时候需要添加。
启动snmp服务
$ service snmpd start
用以下命令检查服务是否启动成功
$ snmpwalk-v 2c-c sdomonitor 127.0.0.1 system
如果要关闭,则可以直接kill这个进程,如下:
$ killall-9 snmpd或者$ service snmpd stop
snmp协议里trap设定的作用
Trap报文采用UDP协议使用162端口普通SNMP协议采用161端口
由网管系统以询问的方式,采集被监控端性能指标,因此发现被监控端性能问题的快慢取决于采集的频率间隔。而SNMP Trap是以事件为驱动,在被监控端设置陷阱,一旦被监控端设备出现相关问题,立刻发送SNMP Trap,因此能够在最短的时间内发现故障,避免因为设备故障带来的经济损失。
snmptrap告警没发送给特定网管
对于SNMPTrap告警没有发送给特定网管的问题,可能有以下几个原因:
1.网络配置问题:首先,需要确保特定网管的网络配置正确。检查特定网管的IP地址、子网掩码、网关等参数是否正确设置,确保特定网管与设备之间的网络连通性。
2. SNMP配置问题:其次,需要验证设备的SNMP配置是否正确。检查设备的SNMP版本、团体名、访问控制列表(ACL)等配置是否与特定网管的要求一致。
3.网络访问控制问题:另外,特定网管可能配置了网络访问控制列表,限制了SNMPTrap消息的来源IP地址或团体名。确保设备的IP地址和团体名是特定网管允许的。
4.设备故障:最后,设备本身可能存在故障导致无法发送SNMPTrap消息。检查设备的SNMP代理是否正常运行,设备的系统日志是否有任何相关错误信息。
除了上述原因,还有一些其他可能的因素,例如特定网管的配置错误、网络拥堵等。当出现SNMPTrap告警没有发送给特定网管的情况时,需要逐步排查并解决以上可能的原因,以确保告警正常发送。同时,也可以考虑使用其他监控方式或工具来确保及时获取设备的告警信息,以提高网络管理的可靠性和效率。
snmptrap报文是周期上报吗
答案:SNMP Trap报文通常不是周期性上报的。
解释:SNMP(Simple Network Management Protocol,简单网络管理协议)Trap是一种用于网络设备之间信息交换的标准协议。SNMP Trap报文是当网络设备(如路由器、交换机等)发生特定事件(如配置更改、错误等)时,主动将这些事件以报文的形式发送给SNMP代理或管理站的一种机制。这些事件通常是一次性的,即在某个时间点上发生的,而不是周期性的。
拓展内容:虽然SNMP Trap报文通常不是周期性上报的,但在某些情况下,用户可能会希望实现周期性上报。为了实现这一目标,可以使用定时器或者计划任务来触发SNMP Trap报文的发送。例如,可以使用Python的第三方库PySNMP和schedule库来实现SNMP Trap报文的周期性发送。以下是一个简单的示例代码:
```python
from pysnmp.hlapi import*
import schedule
import time
def send_snmp_trap():
errorIndication, errorStatus, errorIndex, varBinds= next(
sendNotification(SnmpEngine(),
CommunityData('public'),
UdpTransportTarget(('demo.snmplabs.com', 162)),
ContextData(),
NotificationType(ObjectIdentity('SNMPv2-MIB','sysDescr', 0)))
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print('%s at%s'%(errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex)- 1][0] or'?'))
else:
for varBind in varBinds:
print('='.join([x.prettyPrint() for x in varBind]))
schedule.every(10).seconds.do(send_snmp_trap)
while True:
schedule.run_pending()
time.sleep(1)
```
这段代码会每隔10秒向指定的SNMP代理发送一个包含系统描述信息的Trap报文。
感谢您的阅读!希望本文对解决您关于snmptrap的问题有所帮助。如果您还有其他疑问,欢迎随时向我们提问。