求教linux下如何配置snmp trap

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教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
参考技术A 1.首先要用一个定时器计算当前CPU的利用率。 net-snmp有专门的定时器APIsnmp_alarm_register 2. 就是在CPU超过这个阀值就调用trap API。

Zabbix server 3 : 使用 SNMP trap 监控特定的 SNMP OID 项

【中文标题】Zabbix server 3 : 使用 SNMP trap 监控特定的 SNMP OID 项【英文标题】:Zabbix server 3 : Using SNMP trap for monitoring specific SNMP OID item 【发布时间】:2016-04-01 13:50:23 【问题描述】:

在 Zabbix Server 3 中,我有一个通过 SNMP 监控的 linux 主机。 被监控 MIB 的 SNMP OID 如下:

SNMPv2-SMI::enterprises.94.7.1.4.2.1.5.1 = STRING: "CLUSTER STARTED (RESTARTED)"

我已将此 SNMP OID 配置为每 10 分钟监控一次。 Zabbix 服务器正在发送一个 SNMP get-request 并且 linux 主机回复。在这种情况下,时间戳在 Zabbix 仪表板的 Zabix>Monitoring>Latest Data 部分中更新

我还为此事件定义了一个 SNMP 陷阱。

我在 linux 主机中重启了集群,这触发了一个 SNMP 陷阱消息到 zabbix,并且该事件在 zabbix 服务器的/var/log/zabbix/snmptrapfmt.log 中被捕获。但是 Zabbix 仪表板的 Zabix>Monitoring>Latest Data 部分仍然有最新数据的旧时间戳。新值不会从 SNMP 陷阱更新。 是否需要任何单独的配置?

我使用 zabbix appliance 3 作为 zabbix server

【问题讨论】:

您是否尝试将 Type of informationLog 更改为 Text @AliYousefiSabzevar,是的,我已将其更改为 Text。但仍然是相同的行为 【参考方案1】:

您显示的第一个项目,即轮询 SNMP 的项目,应该与陷阱处理无关。

关于第二项(snmptrap),请确保您已经启动了 SNMP Trapper(服务器配置文件中的 StartSNMPTrapper 参数)。 还要检查 Zabbix 服务器是否指向使用参数 SNMPTrapperFile 写入陷阱的位置。 如果所有配置都已配置,请检查服务器日志 - 如果那里写入了陷阱,则它与您的项目不匹配 - 在这种情况下,请检查您的正则表达式与陷阱数据并确保 Zabbix 看到陷阱的 IP 地址匹配该项目的 SNMP 接口地址。

【讨论】:

以上是关于求教linux下如何配置snmp trap的主要内容,如果未能解决你的问题,请参考以下文章

[技术干货] 博科光交机SNMP配置

如何配置linux下的snmp服务

snmp_trap snmptt

如何配置设备侧的SNMP参数

H3C交换机系统基本配置(3)

在SNMP协议中,网络管理系统是如何与代理进行通信的?