客户已请求我们将SNMP陷阱发送到其Nagios服务器而不是电子邮件警报.我昨天才知道关于SNMP的唯一事情就是它听起来像一个缩写词,所以请原谅(并纠正我)我可能有的任何误解.
需要在陷阱中发送的唯一信息涉及我们警告客户的事件的数据,这只是从我们的数据库中提取的几个值.毋庸置疑,这些不属于任何类型的MIB,也没有任何OID,这就是我无法找到答案的地方.
我无法弄清楚我是如何在不使用MIB OID的情况下将我们的特定数据添加到陷阱中的,这是我没有的.
我正在使用PySNMP来生成请求,并且现在只有不完整的代码,因为我不确定如何将数据合并到数据包中.
from pysnmp.hlapi import *
def sendSNMP(destination, community_string, data):
community = CommunityData(community_string, mpModel = 0)
target = UdpTransportTarget((destination, 162))
notification_type = None
req = sendNotification(SnmpEngine(), community, target, ContextData(), 'trap', notification_type)
errorIndication, errorStatus, errorIndex, varBinds = next(req)
任何帮助表示赞赏!谢谢.
解决方法:
在纯粹的技术层面上,您可以将任何OID用于任何目的.但是,SNMP被设计为委员会管理的协议.
如果您的陷阱或其varbinds不符合标准消息/类型,则您的OID应以1.3.6.1.4.1.YOUR_ENTERPRISE_NUMBER开头.如果您的公司或您的客户没有注册的私人企业号码(PEN),您可以免费获得request one from IANA.如果有人管理您的PEN,您应该要求他们为您的产品域提供OID.
PEN list充满了个人的电子邮件地址.该系统中存在行业级信任的要素.与控制竞争对手企业编号的人合作并不罕见.如果您对PEN承担责任,那么您将承担与之相关的道德责任.
您不必为企业范围编写或发布MIB,但您可能希望为了客户的利益而编写它们.
SNMP是一种旧协议.首选的替代品是NETCONF,或者我被告知.