You need to enable JavaScript to run this app.
导航
使用官方 SNMP 驱动
最近更新时间:2024.11.08 14:16:11首次发布时间:2024.03.29 10:14:12

边缘智能提供了官方的 SNMP 驱动程序,允许您快捷添加支持 SNMP 协议的设备到节点(一体机)。添加设备到节点后,您可以查看设备运行状态,并进行远程管理。本文介绍了官方 SNMP 驱动的使用方法。

背景信息

简单网络管理协议(Simple Network Management Protocol,简称 SNMP)是一种互联网标准协议,用于监控和管理通过 IP 连接的网络设备。它允许网络管理员通过远程方式收集设备的运行状态、性能数据和错误信息,以便进行故障排除和网络优化。
SNMP 的基本组件包括网络管理系统 NMS(Network Management System)、代理进程(Agent)、被管对象(Managed Object)和管理信息库 MIB(Management Information Base)四部分,这些组件共同构成了SNMP的管理模型。每个被管理设备中都包含驻留在设备上的 SNMP Agent 进程、MIB 和多个被管对象。NMS 通过与运行在被管理设备上的 SNMP Agent 交互,由 SNMP Agent 通过对设备端的 MIB进行操作,完成 NMS 的指令。
SNMP 协议的通信过程包括以下几个步骤:

  1. SNMP 管理系统向 SNMP 代理发送查询请求。
  2. SNMP 代理收到查询请求后,收集设备的性能数据,并将这些数据打包成SNMP消息发送给 SNMP 管理系统。
  3. SNMP 管理系统收到 SNMP 消息后,将其解包,并分析其中的数据。
  4. SNMP 管理系统根据收到的数据,对设备进行配置和控制。

在节点上部署官方 SNMP 驱动,接入被管设备后,可以实现对设备的监控和管理:

  • 提供"读"操作,支持从设备获取数据。
  • 提供"写"操作,支持向设备执行设置操作。

SNMP 驱动介绍

查看官方 SNMP 驱动

您可以在边缘智能控制台设备管理 > 驱动模板 页面,查看官方 SNMP驱动
Image

驱动配置

官方 SNMP 驱动的子协议配置和点表配置说明见下表。

配置项

名称

参数名称

说明

子协议配置

TCP

IP 地址

被管设备的 IP 地址。

端口号

SNMP 代理使用的 UDP 端口号。
SNMP 代理进程通过该端口监听和处理 SNMP 请求和响应。

点表配置

N/A

对象标识符(oid)

被管对象的唯一标识符,用于获取特定对象的信息。

采样周期

表示每隔多久采集一次数据。单位:毫秒。默认值:10000。

变化上报

用于控制节点进行数据上报的触发条件。

  • true:表示启用变化上报。节点仅在检测到连续两次采集的设备数据不一致时,才会执行数据上报操作。
  • false:表示禁用变化上报。节点将上报每次采集到的设备数据,不管该数据是否与前一次采集的数据相同。

默认值:true。

缩放因子

表示对原始数据放大的倍数。默认值:1。

说明

当缩放因子为小数时,对应物模型属性的数据类型需是 float 或者 double 才可以生效。

准备工作

准备 SNMP 设备

使用官方 SNMP 驱动前,您需要准备被管设备,同时在设备上启用 SNMP 服务。本教程使用模拟器 SNMP Simulator 作为 SNMP 被管设备。
这里以 Ubuntu 22.04 64 位为例,为您介绍安装、配置 SNMP Simulator 的操作方法。

  1. 使用 root 用户登录管理设备,完成以下操作。

    # 更新软件包索引和软件
    sudo apt-get update
    sudo apt-get upgrade
    # 创建一个用户并将该用户添加到 sudo 用户组。这里创建一个名为“snmpuser”的用户。
    sudo adduser snmpuser
    usermod -aG sudo snmpuser
    # 切换为 snmpuser 用户登录,后续操作使用该用户完成。
    
  2. 安装 virtualenv 并创建 Python 虚拟环境。

    # virtualenv 是一个在 Python 中创建虚拟环境的工具。
    sudo apt install python3-virtualenv
    virtualenv venv
    source venv/bin/activate
    
  3. 安装 SNMP Simulator 和 SNMP 相关工具。

    pip install snmpsim-lextudio
    sudo apt install snmp snmpd snmp-mibs-downloader libsnmp-dev
    
  4. 创建data目录,在data上层目录执行以下命令,通过查询现有的 SNMP 代理生成模拟数据文件。

    mkdir data
    ./venv/bin/snmpsim-record-commands --agent-udpv4-endpoint=demo.pysnmp.com \
         --output-file=./data/private.snmprec
    
  5. 编辑生成的文件private.snmprec,选择设备被管对象并修改其配置,使其允许数据写入。
    例如,本教程选择 "1.3.6.1.2.1.1.9.1.1.1" 作为被管对象,修改其 Tag 为2:writecache,Value 为value=1

    vim ./data/private.snmprec
    ...
    1.3.6.1.2.1.1.9.1.1.1|2:writecache|value=1
    ...
    

    Image

    说明

    模拟数据文件格式说明请参见文件格式介绍

  6. 启动 SNMP 模拟器。
    本教程中使用 1024 作为 SNMP 代理的 UDP 端口号。

    # 执行 deactivate,退出 Python 虚拟环境。
    deactivate
    ./venv/bin/snmpsim-command-responder --data-dir=./data --agent-udpv4-endpoint=0.0.0.0:1024 --debug=all
    

    Image

  7. 测试模拟器。

    snmpwalk -v 1 -c private 127.0.0.1:1024 1
    

    Image

准备节点

使用 SNMP 驱动前,您需要准备一台边缘智能节点,并完成以下工作:

步骤1:配置设备模板

创建设备模板

  1. 登录边缘智能控制台

  2. 在左侧导航栏顶部的 我的项目 区域,选择您的项目。

  3. 在左侧导航栏,选择 设备管理 > 设备模板

  4. 单击 创建设备模板

  5. 创建设备模板 对话框,完成以下配置,并单击 确定

    配置项

    说明

    名称

    为设备模板设置一个名称。

    本教程中使用 snmp-template。

    设备类型

    选择 其他设备

    描述

    为设备模板添加描述信息。

    Image

创建成功后,在 设备模板 页面可以看到新创建的设备模板。
Image

发布物模型

您可以通过物模型定义设备功能,并发布一个版本使其生效。

  1. 找到新创建的设备模板,单击模板名称。

  2. 模板详情 页面,单击 物模型定义 页签,然后单击 编辑
    编辑物模型 页面的 模块列表 区域,默认为 默认模块

  3. (可选)如果需要新增模块,单击 新建模块。在 新建模块 对话框,参照以下说明配置相关参数,并单击 确定,然后单击已添加的模块名称。

    配置项

    描述

    名称

    输入模块的名称。

    • 允许使用以下字符:中文字符、英文大小写字母、数字、下划线(_)。长度不超过 32 个字符。
    • 开头和结尾不允许使用特殊字符。不允许连续使用特殊字符。

    唯一标识

    为模块设置一个标识符。该标识符在当前设备模板下必须唯一。输入要求如下:

    • 允许使用以下字符:英文大小写字母、数字、下划线(_)。长度不超过 32 个字符。
    • 开头和结尾不允许使用特殊字符。不允许连续使用特殊字符。

    描述

    输入模块的描述信息。最多支持128个字符。

  4. 单击 添加自定义功能

  5. 添加自定义功能 对话框,参考下表说明配置相关参数,然后单击 确定

    配置项

    说明

    功能类型

    选择 属性

    功能名称

    为功能设置一个名称。

    本教程中使用 RedLight。

    标识符

    为功能设置一个标识符。

    本教程中使用 RedLight。

    读写类型

    选择 读写

    数据类型

    选择 int

    取值范围

    设置数值取值范围。本教程中保持默认配置。

    步长

    设置数值步长。本教程中保持默认配置。

    描述

    为功能添加描述信息。

  6. 配置好所有模块及功能后,在 编辑物模型 页面,单击右下角的 保存

  7. 发布新版本 对话框,设置 版本号描述,然后单击 确定
    Image

发布成功后,您将会得到如下图所示的物模型。
Image

创建点表

物模型定义完成后,需要为物模型属性创建点表。

  1. 模板详情 页面,单击 点表 页签,然后单击 创建点表

  2. 创建点表 页面,完成以下配置。

    类别

    配置项

    说明

    基本信息

    名称

    为点表设置一个名称。

    本教程中使用 snmp-pt 作为点表名称。

    驱动模板

    选择 SNMP驱动

    配置信息

    默认模块

    • 属性名称:RedLight
    • 对象标识符(oid):输入被管对象的标识符。

    本教程中选择 1.3.6.1.2.1.1.9.1.1.1 作为被管对象。

    • 采样周期:使用默认配置 10000 毫秒
    • 变化上报:选择 true
    • 缩放因子:设置为 1
  3. 配置完成,单击 确认

创建成功后,您将得到一个如下图所示的点表。
Image

步骤2:部署 SNMP 驱动

您必须在节点上部署 SNMP 驱动,然后才可以添加设备到节点。

  1. 在左侧导航栏,单击 节点管理
  2. 节点管理 页面,找到要部署 SNMP 驱动的节点,单击节点名称。
  3. 单击 设备接入 页签。
  4. 驱动实例 右侧,单击 新建驱动实例,创建 SNMP 驱动实例。

    说明

    如果您是首次在当前节点上部署驱动实例,单击 立即部署

  5. 新建驱动实例 对话框,选择 SNMP驱动 的最新版本,然后单击 确定

提交部署请求后,系统将在节点上部署驱动实例。部署过程涉及到数据传输。根据现场网络环境不同,部署所需时间不同。请确保您的节点在线,并耐心等待部署完成。
驱动部署成功后,驱动实例状态 将变为 运行中
Image

步骤3:添加设备

  1. 驱动实例 列表选中 SNMP 驱动
  2. 基本信息 标签页,您可以选择以下方式添加设备:
    • 添加设备:一次添加一个设备实例。
    • 批量添加:一次添加一个或多个设备实例。最多可以同时添加 100 个设备实例,并批量设置一些设备参数。

添加设备

  1. 基本信息 标签页,单击 添加设备

  2. 添加设备 面板,完成以下配置,然后单击 确定

    配置项

    说明

    名称

    为设备设置一个名称。

    本教程中使用 device-snmp 作为设备名称。

    标识符

    为设备设置一个标识符。

    本教程中使用 device-snmp 作为标识符。

    设备模板

    选择您在创建设备模板中创建的设备模板。

    本教程中选择 snmp-template。

    点表

    选择在创建点表中创建的点表。

    本教程中选择 snmp-pt。

    子协议名称

    选择 TCP

    IP 地址

    输入被管设备的 IP 地址。

    端口号

    输入 SNMP 代理所使用的端口号。

    本教程中使用 1024。

    标签

    为设备添加标签。如果需要创建新的标签,输入 keyvalue 后,单击 创建标签

    描述

    为设备添加描述信息。

完成以上操作后,您可以在设备列表查看新添加的设备。最初,设备的 状态添加中。当设备的状态变为 在线 后,表示设备已经添加成功。

批量添加

  1. 基本信息 标签页,单击 批量添加

  2. 添加设备 页面,您可以在 驱动信息 区域查看驱动相关信息,并参考下表说明完成 设备配置,然后单击 确定

    配置项

    说明

    子协议类型

    选择 TCP

    设备模板

    选择您在创建设备模板中创建的设备模板。

    本教程中选择 snmp-template。

    点表

    选择在创建点表中创建的点表。

    本教程中选择 snmp-pt。

    设备名称

    为设备设置一个名称。

    本教程中使用 device-snmp 作为设备名称。

    标识符

    为设备设置一个标识符。

    本教程中使用 device-snmp 作为标识符。

    IP 地址

    输入被管设备的 IP 地址。

    端口号

    输入 SNMP 代理所使用的端口号。

    本教程中使用 1024。

    标签

    为设备添加标签。如果需要创建新的标签,输入 keyvalue 后,单击 创建标签

    描述

    为设备添加描述信息。

  3. (可选)如果需要同时添加多个设备实例,在 添加设备 后的输入框中输入要添加的设备个数,然后单击 添加设备。系统会自动生成多个设备配置条目。

  4. (可选)如果需要批量设置一些设备参数,先勾选右上角的 批量编辑所有配置项,然后修改某个参数值,系统会同步修改所有设备的对应参数值。

    说明

    勾选 批量编辑所有配置项 后,如果参数配置框置灰,表示该参数不支持批量设置。

完成以上操作后,您可以在设备列表查看新添加的设备。最初,设备的 状态添加中。当设备的状态变为 在线 后,表示设备已经添加成功。

步骤4:结果验证

查看数据上报

  1. 回到节点的 设备接入 页面,定位到新添加的设备,单击设备名称。
    Image
  2. 单击 运行状态 页签,可以看到设备属性值为 1,符合预期。
    Image

属性调试

  1. 单击 在线调试 页签,在 属性调试 下测试在发布物模型中定义的属性功能。

    1. 在 RedLight 输入框右侧,单击 调试,然后选择 读取
      可以在输入框中看到获取的属性值,也可以在页面右侧 实时日志 中查看获取的内容。
      Image
    2. 在 RedLight 输入框中输入一个 int 类型数据,单击 写入
      在右侧 实时日志 中,可以看到返回状态码为 200,表示写入成功。单击 读取,可以看到属性值已变为写入的值。
      Image
  2. 单击 运行状态 页签,可以看到设备当前属性值已变为输入的值。
    Image