snmp - 使用陷阱而不是获取请求来获取信息?
问题描述
假设我想制作一个监控应用程序来监控我网络中的一堆设备,我的问题很简单:为什么在设备可以向管理器发送陷阱时使用 SNMP-Get 请求?流行的监控应用程序是否使用陷阱或 SNMP-get 请求?谢谢。
解决方案
有几个考虑因素,这可以概括为推送(陷阱、通知)与拉取(get* 请求)的管理理念:
1) 只有管理应用程序确切地知道它想从设备获取的信息。在拉式架构中(即 SNMP)。它通过 GET* 请求请求信息。在推送架构中,它必须配置推送,例如。必须设置设备以发送通知,例如。如果检测值高于某个阈值,这是昂贵的。
2) 维护设备上的推送配置是昂贵的。在 SNMP 中,设备应该是哑的,管理器应该是聪明的。如今,设备变得越来越强大,因此您看到了更多的推送模型(某些 MIB、NetFlow、sFlow 等)。
3) 除了配置之外,仅仅使通知可靠是昂贵的。在 SNMP 中有 TRAP 和 Inform-Request PDU。前者是不可靠的,仅被视为设备上发生了某些事情的提示,然后应用程序使用拉取来获取所有信息。后者得到确认,设备必须维护信息以使其可靠(超时、重传等)。
有了以上内容,只需考虑在设备上专门设置推送(陷阱)的工作:
1)您的应用程序(可能是多个应用程序之一)必须配置设备以告诉它您需要陷阱/通知。这本身不能完全通过推送来完成,必须有一些 SET 请求;
2)你的应用程序必须准确地告诉它你想要什么陷阱,再次 SET 请求;
3) 您的设备现在必须确保每个通知都能可靠地发送到已在设备上注册的所有应用程序。
就“热门监控应用”而言,在SNMP中绝大多数信息是拉取的,通知用于提示异常,提示拉取信息。
推荐阅读
- python - 无法从网站的登录页面获取所有名称
- javascript - 我的数组包含一个空格 [" "]。当我 .join 带有下划线的空格时,结果字符串中的空格元素在 html 中不可见
- java - 如何使用存储在变量值中的数据类型进行转换?
- php - 如果字段名称为 logo[0][image],如何上传图片
- asp.net - 为什么 post 方法必须带有查询字符串?如何删除查询字符串?
- c++ - C++ 反射和到/从键值对(如 json)
- wordpress - 如何更改 woocommerce 页面的语言,例如结帐和添加到购物车?
- android - 如何在旋转时在Android的多选对话框中保留选择?
- java - 如何从数组列表中加载图像?
- javascript - 如何在 MutationObserver 中添加的节点上使用 querySelectorAll