4-zabbix监控snmp网络设备

熊 1 阅读 监控平台

1.SNMP协议介绍

1.1 SNMP协议介绍

SNMP是英文“Simple Network Management Protocol”的缩写 , 中文意思是“简单网络管理协议 , SNMP是一种简单网络管理协议 , 它属于TCP/IP五层协议中的应用层协议 , 用于网络管理的协议 , SNMP主要用于网络设备的管理。

SNMP的基本思想 : 为不同种类的设备、不同厂家生产的设备、不同型号的设备 , 定义为一个统一的接口和协议 , 使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络 , 管理员可以管理位于不同物理空间的设备 , 从而大大提高网络管理的效率 , 简化网络管理员的工作。

SNMP协议是TCP/IP协议簇的一个应用层协议 , 在1988年被制定 , 并被Internet体系结构委员会 ( IAB ) 采纳作为一个短期的网络管理解决方案 , 由于SNMP的简单性 , 在Internet时代得到了蓬勃的发展 , 1992年发布了SNMPv2版本 , 以增强SNMPv1的安全性和功能 , SNMP的协议版本目前有SNMP v1、SNMP v2c和SNMP v3三种版本 , 其具体差别如下 :

  • SNMP v1采用团体名 ( Community Name ) 认证 , 团体名用来定义SNMP NMS和SNMP Agent的关系 , 如果SNMP报文携带的团体名没有得到设备的认可 , 该报文将被丢弃 , 团体名起到了类似于密码的作用 , 用来限制SNMP NMS对SNMP Agent的访问。

  • SNMP v2c也采用团体名认证 , 它在兼容SNMP v1的同时又扩充了SNMP v1的功能 , 它提供了更多的操作类型 ( GetBulk和InformRequest ) 、支持更多的数据类型 ( Counter64-等 ) 、提供了更丰富的错误代码且能够更细致地区分错误。

  • SNMP v3提供了基于用户的安全模型 ( USM ,User-Based Security Model ) 的认证机制 , 用户可以设置认证和加密功能 , 认证用于验证报文发送方的合法性 , 避免非法用户的访问 , 加密则是对NMS和Agent之间的传输报文进行加密 , 以免被窃听。通过有无认证和有无加密等功能组合 , 可以为SNMP NMS和SNMP Agent之间的通信提供更高的安全性。

1.2 SNMP工作机制

SNMP的工作机制SNMP网络元素分为NMS和Agent两种 :

  • NMS ( Network Management Station , 网络管理站)是运行SNMP客户端程序的工作站 , 能够提供非常友好的人机交互界面 , 方便网络管理员完成绝大多数的网络管理工作。

  • Agent是驻留在设备上的一个进程 , 负责接收、处理来自NMS的请求报文。在一些紧急情况下 , 如接口状态发生改变等 ,Agent也会主动通知NMS。

  • NMS是SNMP网络的管理者 , Agent是SNMP网络的被管理者。NMS和Agent之间通过SNMP协议来交互管理信息。

1.3 SNMP数据交互

SNMP管理进程与代理进程之前为了交互信息 , 定义了5种报文 :

  • get-request操作 : 从代理进程处提取一个或多个参数值。

  • get-next-request操作 : 从代理进程处提取一个或多个参数的下一个参数值。

  • set-request操作 : 设置代理进程的一个或多个参数值。

  • get-response操作 : 返回的一个或多个参数值。这个操作是由代理进程发出的。

  • trap操作 : 代理进程主动发出的报文 , 通知管理进程有某些事情发生。

1769223-20200225130848238-388017752

1.4 SNMP组织结构

一套完整的SNMP系统主要包括以下几个方面:

  • SNMP报文协议。

  • 管理信息结构 ( SMI , Structure ofManagementInformation) , 一套公用的结构和表示符号。

  • 管理信息库 ( MIB , Management Information Base) , 管理信息库包含所有代理进程的所有可被查询和修改的参数。

  • OID ( Object Identifiers) , 一个OID是一个唯一的键值对 , 用于标识具体某一个设备的某个具体信息(对象标识) , 如端口信息、设备名称等。

1.5 SNMP MIB

所谓(MIB)管理信息库 , 就是所有代理进程包含的、并且能够被管理进程进行查询和设置的信息的集合。MIB是基于对象标识树的 , 对象标识是一个整数序列 , 中间以"."分割 , 这些整数构成一个树型结构 , 类似于DNS或Unix 的文件系统,MIB被划分为若干个组 , 如system、interface、at ( 地址转换)和ip组等。iso.org.dod.internet.private.enterprises ( 1.3.6.1.4.1 ) 这个标识 , 是给厂家自定义而预留的 , 比如华为的为1.3.6.1.4.1.2011 , 华三的为1.3.6.1.4.1.25506。

1769223-20200225131054470-243972795

1.6 SNMP OID

如何测试OID

snmpwalk是SNMP的一个工具, 它使用SNMP的GET请求查询指定的OID(SNMP协议中的对象标识)入口的所有OID树信息, 并显示给用户。通过snmpwalk也可以查看支持SNMP协议(可网管)的设备的一些其他信息, 比如cisco交换机或路由器IP地址、内存使用率等, 也可用来协助开发SNMP功能

要使用snmpwalk需要先安装net-snmp软件包

[root@agent ~]# yum install net-snmp-utils
[root@agent ~]# snmpwalk -h
USAGE: snmpwalk[OPTIONS] AGENT [OID]
–h:显示帮助。
–v:指定snmp的版本, 1或者2c或者3。
–c:指定连接设备SNMP 的community。
–V:显示当前snmpwalk命令行版本。
–r:指定重试次数,默认为0次。
–t:指定每次请求的等待超时时间,单为秒,默认为3秒。
–l:指定安全级别:noAuthNoPriv|authNoPriv|authPriv。
–a:验证协议:MD5|SHA。只有-l指定为authNoPriv或authPriv时才需要。
–A:验证字符串。只有-l指定为authNoPriv或authPriv时才需要。
–x:加密协议:DES。只有-l指定为authPriv时才需要。
–X:加密字符串。只有-l指定为authPriv时才需要。

1.7 Centos 部分oid

  • CPU 负载:

    • 1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1

    • 5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2

    • 15 minute Load : .1.3.6.1.4.1.2021.10.1.3.3

  • CPU信息:

    • percentage of user CPU time : .1.3.6.1.4.1.2021.11.9.0

    • raw user cpu time: .1.3.6.1.4.1.2021.11.50.0

    • percentage of user CPU time : .1.3.6.1.4.1.2021.11.9.0

    • raw system cpu time : .1.3.6.1.4.1.2021.11.52.0

    • percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0

    • raw idle cpu time : .1.3.6.1.4.1.2021.11.53.0

    • raw nice cpu time : .1.3.6.1.4.1.2021.11.51.0

  • 内存使用:

    • Total Swap Size : .1.3.6.1.4.1.2021.4.3.0

    • Available Swap Space : .1.3.6.1.4.1.2021.4.4.0

    • Total RAM in machine : .1.3.6.1.4.1.2021.4.5.0

    • Total RAM used : .1.3.6.1.4.1.2021.4.6.0

    • Total RAM Free: .1.3.6.1.4.1.2021.4.11.0

    • Total RAM Shared : .1.3.6.1.4.1.2021.4.13.0

    • Total RAM Buffered : .1.3.6.1.4.1.2021.4.14.0

    • Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0

  • 硬盘使用:

    • Path where the disk is mounted : .1.3.6.1.4.1.2021.9.1.2.1

    • Path of the device for the partition : .1.3.6.1.4.1.2021.9.1.3.1

    • Total size of the disk/partion (kBytes) : .1.3.6.1.4.1.2021.9.1.6.1

    • Available space on the disk : .1.3.6.1.4.1.2021.9.1.7.1

    • Used space on the disk : .1.3.6.1.4.1.2021.9.1.8.1

2. zabbix监控SNMP设备

2.1 服务器中配置snmp

  1. 安装并配置SNMP包

    [root@agent ~]# yum install net-snmp -y
    ​
    #apt-get install snmpd
  2. 配置SNMP

    [root@agent ~]# vi /etc/snmp/snmpd.conf 
    ####
    第一步, 将团体名称public关联至`security name`里面
    # First, map the community name "public" into a "security name"
    ​
    #       sec.name  source          community
    com2sec notConfigUser  default       public
    ​
    ####
    第二部, 将团体名称notConfigUser 关联至组notConfigGroup
    # Second, map the security name into a group name:
    ​
    #       groupName      securityModel securityName
    group   notConfigGroup v1           notConfigUser
    group   notConfigGroup v2c           notConfigUser
    ​
    ####
    #创建一个view  , 并对其授权可访问的OID范围
    # Third, create a view for us to let the group have rights to:
    ​
    # Make at least  snmpwalk -v 1 localhost -c public system fast again.
    #       name           incl/excl     subtree         mask(optional)
    view    systemview    included   .1.3.6.1.2.1.1
    view    systemview    included   .1.3.6.1.2.1.25.1.1
    view    systemview    included   .1.    #自定义授权, 否则zabbix server无法获取数据
    ####
    # Finally, grant the group read-only access to the systemview view.
    #将组noConfigGroup关联至systemview 从而完成对组的授权
    #       group          context sec.model sec.level prefix read   write  notif
    access  notConfigGroup ""      any       noauth    exact  systemview none none
    ​
  3. 启动SNMP服务 , 设置为开机启动 , 此时由于SNMP是UDP协议 , 需要查看UDP监听端口:161

    [root@agent ~]# systemctl restart snmpd
    image-20240318233655555
  4. 用客户端测试验证常用的OID,是否能够正常获取数据

    [root@agent ~]# snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.4.5.0
    UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 1832972 kB
    [root@agent ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:          1.7Gi       289Mi       894Mi       8.0Mi       605Mi       1.3Gi
    Swap:         2.0Gi          0B       2.0Gi 
    [root@agent ~]# snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.10.1.3.1
    UCD-SNMP-MIB::laLoad.1 = STRING: 0.00
    ​

2.2 配置zabbix页面

  1. 在对应主机中添加对应snmp模板以及监控端口

    image-20240319130214110

  1. 修改snmp中对应的community值, 将值修改为agent中对应的配置文件中的值

    1769223-20200225121738311-924343357
  2. 之后可以看到已经获取到数据

    image-20240319131006269
    image-20240319131031852