You need to enable JavaScript to run this app.
导航
使用官方 SNMP 驱动
最近更新时间:2024.06.07 15:50:43首次发布时间: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驱动
图片

驱动配置

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

配置项

名称

参数名称

说明

子协议配置

TCP

IP 地址

被管设备的 IP 地址。

端口号

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

点表配置

N/A

对象标识符(oid)

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

采样周期

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

变化上报

表示数据发生变化时是否主动上报到边缘智能控制台。默认值:true。

缩放因子

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

准备工作

准备 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
    ...
    

    图片

    说明

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

  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
    

    图片

  7. 测试模拟器。

    snmpwalk -v 1 -c private 127.0.0.1:1024 1
    

    图片

准备节点

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

步骤1:配置设备模板

创建设备模板

  1. 登录边缘智能控制台

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

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

  4. 单击 创建设备模板

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

    配置项

    说明

    名称

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

    本教程中使用 snmp-template。

    设备类型

    选择 其他设备

    描述

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

    图片

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

发布物模型

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

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

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

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

    配置项

    描述

    名称

    输入模块的名称。

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

    唯一标识

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

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

    描述

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

  4. 单击 添加自定义功能

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

    配置项

    说明

    功能类型

    选择 属性

    功能名称

    为功能设置一个名称。

    本教程中使用 RedLight。

    标识符

    为功能设置一个标识符。

    本教程中使用 RedLight。

    读写类型

    选择 读写

    数据类型

    选择 int

    取值范围

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

    步长

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

    描述

    为功能添加描述信息。

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

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

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

创建点表

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

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

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

    类别

    配置项

    说明

    基本信息

    名称

    为点表设置一个名称。

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

    驱动模板

    选择 SNMP驱动

    配置信息

    默认模块

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

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

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

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

步骤2:部署 SNMP 驱动

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

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

    说明

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

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

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

步骤3:添加设备

  1. 在 SNMP 驱动实例页面,单击 添加设备

  2. 添加设备 面板,完成以下参数配置。

    配置项

    说明

    名称

    为设备设置一个名称。

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

    标识符

    为设备设置一个标识符。

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

    设备模板

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

    本教程中选择 snmp-template。

    子协议名称

    选择 TCP

    IP 地址

    输入被管设备的 IP 地址。

    端口号

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

    本教程中使用 1024。

    点表

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

    本教程中选择 snmp-pt。

    标签

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

    描述

    为设备添加描述信息。

  3. 配置完成,单击 确定

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

步骤4:部署北向通道

设备接入节点后,要使节点的数据上报到边缘智能控制台进行查看,需要在节点上部署北向通道。

  1. 在左侧导航栏,选择 设备管理 > 北向通道

  2. 单击 创建北向通道

  3. 创建北向通道 页面,完成以下配置。

    类别

    配置项

    说明

    基本信息

    名称

    为北向通道设置一个名称。

    本教程中使用 data-to-cloud

    类型

    选择 数据上云

    描述

    为北向通道添加描述。

    部署到节点

    N/A

    从节点列表中选择目标节点,部署该北向通道。

  4. 配置完成,单击 确定

等待北向通道在节点上部署成功。

步骤5:结果验证

查看数据上报

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

属性调试

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