• (38)zabbix中配置snmp监控


    1、首先按照“snmp监控快速配置”文本文档在被监控的主机上安装、配置及启动snmp服务, 具体内容如下:

    1)、安装snmp

    yum install net-snmp* -y

    cp -a /etc/snmp/snmpd.conf{,.ori}


    cat > /etc/snmp/snmpd.conf<<EOF
    com2sec local localhost public
    com2sec mynetwork 10.0.91.0/24 public
    group MyRWGroup v1 local
    group MyRWGroup v2c local
    group MyRWGroup usm local
    group MyROGroup v1 mynetwork
    group MyROGroup v2c mynetwork
    group MyROGroup usm mynetwork
    view all included .1 80                  #注意最后的80是16进制,最好写成0x80,做掩码使用
    access MyROGroup "" any noauth exact all none none
    access MyRWGroup "" any noauth exact all all none
    syslocation cacti.com
    syscontact Me <hyran@126.com>
    proc mountd
    proc ntalkd 4
    proc sendmail 10 1
    proc httpd 10 1
    exec echotest /bin/echo hello world
    #exec disk_used_shell /bin/sh /root/current_disk_used.sh
    #exec httpd_proc /bin/sh /root/current_httpd_proc.sh
    disk / 10000
    disk /boot 10000
    load 12 14 14
    EOF

    cat -n /etc/snmp/snmpd.conf
    #/etc/init.d/snmpd start
    #chkconfig snmpd on

    systemctl start snmpd
    systemctl enable snmpd
    systemctl status snmpd

    netstat -tunlp|grep snmpd
    lsof -i :snmp
    ps -ef|grep snmp


    测试
    snmpget -v 1 -c public localhost system.sysUpTime.0          #localhost为指定从本机获取数据, 也可指定的为具体的IP地址, 表示获取某个远程主机的数据
    snmpget -v 2c -c public localhost sysDescr.0

    snmpget不同于snmpwalk,必须在命令行给出<object>.<instance>的格式,不能只给出object, 而snmpwalk可以仅给出<object>
    如:
    snmpwalk -v 2c -c public localhost system      #可获得数据(snmpwalk仅给出object)
    snmpget -v 2c -c public localhost system       #获取不到数据(仅给出object, 没有给instance, 获取不到数据)


    1.3.6.1.2.1
    1(iso).3(identified organization).6(dod).1(internet).2(private).1(system) 系统相关
    1(iso).3(identified organization).6(dod).1(internet).2(private).2(interface) 网络接口相关
    1(iso).3(identified organization).6(dod).1(internet).2(private).3(at) 地址转换相关
    1(iso).3(identified organization).6(dod).1(internet).2(private).4(ip) IP分组相关
    1(iso).3(identified organization).6(dod).1(internet).2(private).5(icmp) icmp相关
    1(iso).3(identified organization).6(dod).1(internet).2(private).6(tcp) tcp相关
    1(iso).3(identified organization).6(dod).1(internet).2(private).7(udp) udp相关
    1(iso).3(identified organization).6(dod).1(internet).2(private).8(egp) egp相关

    MIB中的对象1.3.6.1.4.1,即enterprises(企业),其所属结点数已超过3000。
    例如
    IBM为1.3.6.1.4.1.2},
    Cisco为{1.3.6.1.4.1.9},
    Novell为{1.3.6.1.4.1.23}等

    net-snmp工具介绍
    1、snmpget
    模拟snmp的GetRequest操作的工具。用来获取一个或几个管理信息。用来读取管理信息的内容。

    2、snmpbulkget
    模拟snmp的GetBulkRequest操作的工具。用来获取大块的数据(仅用于v2版本)
    一般在大量读取大块数据时使用,以提高带宽利用率,并且比使用snmpget、snmpgetnext及snmpwalk有更强的容错能力,代理会返回尽可能多的数据,比其它命令更有保证。

    3、snmpgetnext
    模拟snmp的GetNextRequest操作的工具。用来获取一个管理信息实例的下一个可用实例数据。一般用来遍历SNMP中的表格数据。

    4、snmpset
    模拟snmp的SetRequest操作的工具。用来设置可以写的管理信息。一般用来配置设备或对设备执行操作。

    5、snmpwalk
    利用GetNextRequest对给定的管理树进行遍历的工具。一般用来对表格类型管理信息进行遍历。

    6、snmptrap
    模拟trap的工具, 用来发送模拟trap。一般用来测试管理站安装和配置是否正确,或者用来验证开发的Trap接收程序是否可以正常工作。

    7、snmptrapd
    接收并显示trap的工具。一般在代理的开发过程中,接收代理agent发来的Trap,并将PDU细节打印出来,也来测试Trap发送功能是否正常。

    8、snmpinform
    模拟发送InformRequest的工具。跟snmptrap类似,用来发送模拟的带应答的Trap,以测试管理站或自己开发的接收程序。

    9、snmptable
    使用GetNextRequest和GetBulkRequest操作读取表信息,以列表形式显示的工具。

    10、snmpstatus
    从SNMP实体读取几个重要的管理信息以确定设备状态的工具。用来简单测定设备状态。

    11、snmpbulkwalk
    利用GetBulkRequest实现对给定管理树进行遍历的工具。对表格类型的管理信息进行遍历读取。

    12、snmpdelta
    用来监视Integer类型的管理对象,会及时报告值改变情况的工具。用于监测一个设备或开发中的代理。

    13、snmptest
    是一个复杂的工具,可以监测和管理一个网络实体的信息,通过SNMP请求操作与管理实体通信。

    14、snmptranslate
    将对象名字和标识符相互转换的工具。用于数据格式的对象标识和可读式字符串的数据名称的转换。类似于域名与IP地址的关系。
    以上14个指定使用的选项均和snmpwalk相同,具体参见snmpwalk的使用详解

    15、snmpusm
    SNMPv3USM配置工具。用于SNMPv3的用户管理。

    16、snmpvacm
    为一个网络实体创建和维护SNMPv3的基于视图访问控制参数的工具。用于维护SNMPv3的视图访问控制。

    17、snmpconf
    生成snmpd配置文件的工具。用于生成snmpd的各种配置文件,用作模板,以生成用户级配置文件。

    18、snmpd
    Net-snmp开发的主代理程序,包括众多标准MIB的实现。还可以使用子代理对其进行扩展,是一个功能强大的SNMP代理。Linux、Unix和Windows系统运行snmpd后,直接具备了SNMP协议支持,可以被管理站管理。许多商业化的Linux中使用snmpd作为系统的SNMP代理。

    19、snmpdf
    通过SNMP访问并显示网络实体磁盘利用情况的工具。用来监测网络实体的磁盘。


    下面我们来说几个最常用的net-snmp工具,
    常用命令:
    (1).snmpget命令
    snmpget [OPTIONS] AGENTOID[OID]...
    选项:
    -v 1|2c|3 #指定SNMP版本
    -c COMMUNITY #指定共同体名称
    -m MIB[:...] #指定MIB文件
    注:snmpget不同于snmpwalk,必须在命令行给出<object>.<instance>的格式,不能只给出object
    如:
    snmpwalk -v 2c -c public localhost system      #可获得数据
    snmpget -v 2c -c public localhost system        #获取不到数据
    示例:
    snmpget -v 2c -c public localhost system.sysDescr.0       #获取设备的描述信息。
    snmpget -v 2c -c public localhost sysDescr.0          #获取设备的描述信息。


    [root@node1~]# snmpget -v 2c -c public localhost system.sysDescr.0
    SNMPv2-MIB::sysDescr.0=STRING:Linuxnode1.test.com2.6.32-358.el6.x86_64#1SMPFriFeb2200:31:26UTC2013x86_64

    (2).snmpwalk/snmpbulkwalk命令
    snmpwalk/snmpbulkwalk [OPTIONS] AGENT[OID]
    选项:
    -v 1|2c|3 #指定SNMP版本
    -c COMMUNITY #指定communitystring
    -m MIB[:...] #指定MIB文件
    注:
    snmpbulkwalk命令:获取snmp服务器的mib-2各种资讯,snmpbulkwalk用于通过SNMPv2的SNMPGETBULK请求命令与其它网络实体通信,只能用于snmpv2, 速度快于snmpwalk

    示例:
    [root@node1~]# snmpbulkwalk -v 2c -c public 127.0.0.1 .1.3.6.1.2.1.1 #获取mib-2的system的数据。

    (3).snmpwalk命令
    获取snmp服务器的HOST-RESOURCES的各种资讯。
    示例:
    [root@node1~]# snmpwalk -v 2c -c public localhost system #这条指令用于查看本机系统信息。

    (4).snmpdelta命令
    监控网卡流量等信息,指定共同体为public,协议为snmpv1,以表格的方式输出结果,显示时间戳。
    示例:
    snmpdelta -c public -v 1 -Cs -CT 127.0.0.1   IF-MIB::ifInUcastPkts.2    IF-MIB::ifOutUcastPkts.2
    #监控IF-MIB::ifInUcastPkts(输入流量),IF-MIB::ifOutUcastPkts(输出流量),如监控本地的第二块网卡instance为2。

    snmpdelta -c public -v 1 -Cs -CT 127.0.0.1 ifInDiscards.2
    #监控ifInDiscards(已经丢弃的收到的数据包的总数),格式同上。


    (5).snmpnetstat命令
    查看snmp服务器的端口连接信息,协议为snmp2c。
    示例:snmpnetstat -v 2c -c public -Can -Cp tcp 127.0.0.1
    #获取127.0.0.1的TCP协议的开放端口状态
    #-Ca显示所有的套接字, 一般情况下套接字被服务进程使用而不显示
    #-Cn所有地址以数字形式显示
    #-Cp指定协议
    #-Ci显示所有的网络接口
    #-Co显示所有网络接口的简单状态, 需配合-Ci使用
    #-CI 后接网络接口名, 如eth0 显示该接口的相关信息
    #-Cs 显示统计信息
    #-Cr 显示路由信息, 配合-Cn使用, 显示数字形式


    (6).snmptranslate命令
    在MIBOID在数字和文字名称之间进行转换。
    例子,
    snmptranslate -On -IR HOST-RESOURCES-MIB::hrSystem
    #用snmptranslate把symbol(字符串)格式的HOST-RESOURCES-MIB::hrSystem转换为numberic(数值)格式的oid
    用     -On(输出数字格式的oid)
    用     -IR(允许“随机”访问MIB)
    [root@node1~]#snmptranslate -On -IR HOST-RESOURCES-MIB::hrSystem
    .1.3.6.1.2.1.25.1                              #numberic(数值)格式的oid

    snmptranslate -Onf -IR HOST-RESOURCES-MIB::hrSystem
    #用snmptranslate把symbol(字符串)格式的HOST-RESOURCES-MIB::hrSystem转换为symbol(字符串)格式的oid
    用-Onf(输出符号格式的oid)

    [root@node1~]#snmptranslate -Onf -IR HOST-RESOURCES-MIB::hrSystem
    .iso.org.dod.internet.mgmt.mib-2.host.hrSystem                     #symbol(字符串)格式的oid


    [root@localhost ~]# snmptranslate -Td iso.org.dod.internet.mgmt.mib-2 #用snmptranslate输出该对象(iso.org.dod.internet.mgmt.mib-2)的详细定义
    SNMPv2-SMI::mib-2 #用-Td(包括文字名称、所属MIB、类型、状态、读写权限、描述信息,数字格式的OID)
    mib-2 OBJECT-TYPE
    -- FROM SNMPv2-SMI
    ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) 1 }


    [root@node1~]#snmptranslate -Tp iso.org.dod.internet.mgmt.mib-2        #用snmptranslate打印从指定OID(.1.3.6.1.2.1)开始一直到该OID(.1.3.6.1.2.1)所属的MIB子树末端的树型结构信息

    snmptranslat -Ta            #用snmptranslate导出所有已经加载的MIB的数据,每个对象一行
    snmptranslate -Tl           #用snmptranslate导出所有已经加载的MIB的对象,并且输出完整的oid路径
    snmptranslate -To          #用snmptranslate导出已经加载的所有MIB的数字格式的oid,不含值和类型,仅仅有oid而已
    snmptranslate -Ts          #用snmptranslate只输出文字格式的OID名称而已

    2、在zabbix server主机上执行如下操作:

    yum  install  net-snmp*  -y

    snmpget  -v 1  -c public   10.0.91.10  system.sysUpTime.0

    snmpget  -v 2c  -c public  10.0.91.10  sysDescr.0

    10.0.91.10是被监控主机的IP地址(已经按照1中正确配置)

    system.sysUpTime.0和sysDescr.0是要被监控的项目(必须事先查询, 最好是使用OID)

    示例:

    1、物理主机监控

    1.1 snmpv2

    监控10.0.91.10主机的物理内存

    在命令行上测试是否可获取到数据

    字符串形式的监控项翻译成数字形式OID

     

    将字符串形式的监控项翻译成字符串形式OID

    在zabbix中配置监控项时, 上述的字符串形式的监控项、数字形式OID、字符串形式OID 3种形式均可使用

     

    查看监控的数据

     

    1.2 snmpv3

    主机snmd.conf配置文件中需要配置如下两行

               用户名(security name)    认证算法       认证密码                  加密算法       加密密码

    createUser   testuser         SHA       admin@123         DES       china123

    为读写用户设置权限                                       上述创建的用户      安全级别(noauth|auth(认证)|priv(认证且加密))

    rwuser               testuser       priv

    zabbix server主机上执行如下命令行:

    snmpwalk  -v 3 -u testuser  -a SHA  -A admin@123  -x DES -X china123 -l authPriv  10.0.91.10 sysDescr.0

     

    查看监控数据:

     

  • 相关阅读:
    [ASP.NET] 使用 ASP.NET SignalR 添加实时 Web
    [ORM] Entity Framework(2) CodeFirst进阶
    [ORM] Entity Framework(1) CodeFirst快速入门
    [C#] 谈谈异步编程async await
    [Solution] NPOI操作Excel
    消息队列二
    消息队列一
    redis成长之路——(七)
    redis成长之路——(六)
    redis成长之路——(五)
  • 原文地址:https://www.cnblogs.com/wyzhou/p/10836811.html
Copyright © 2020-2023  润新知