zoukankan      html  css  js  c++  java
  • Liunx 下的 SNMP 及 PHP如何连接

    YUM 安装

    1  yum install -y net-snmp net-snmp-utils

    3、启动snmp服务

    若安装成功,则可使用命令:

    $ service snmpd start

    提示:Starting snmpd: [  OK  ],则启动snmp服务成功。

     

    你可以将snmp服务设置为开机自启动,这样免去手动启动的麻烦。

    使用命令:$ chkconfig snmpd on,将snmpd服务设为开机自启动。

     

    然后使用命令:$ chkconfig --list | grep snmpd,查看是否已经设置成功。

     

    4、验证snmp服务

    (1)使用snmpwalk命令,查看本机localhost的主机名:

     

    如上,获取到本机主机名为Oracle.domain.com,则表示snmp服务已经可以正常使用。

    (2)使用snmptranslate命令,检查snmp工具是否可以使用:

     

    如上,查出了部分oid,则表示snmp工具可以正常使用。

    (3)测试远端主机是否可以获取数据。

    我这里登陆了另外一台Linux主机,该主机也按照上面的步骤安装好snmp服务及snmp工具。通过这台主机,获取远端主机的数据,这时需指定远端主机的IP地址:

     

    如上,可以看到通过远端主机获取到的主机名,与在本机获取到的主机名是一致的。

    二、配置snmp服务

    以上安装完成后,使用的是snmp的默认配置,通过这些默认配置,我们只能获取主机的部分信息。但一些其他的重要信息,无法获取。如主机的CPU使用情况,内存使用情况等。

     

    如上,无法获取CPU的空闲率(注:1.3.6.1.4.1.2021.11.11.0是主机CPU空闲率的oid)。

    这时候,若要获取主机的一些重要信息,则要修改snmp的默认配置。

    配置方法:修改/etc/snmp/snmpd.conf文件

     

    1、修改查看设备节点的权限 

    在该文件中,找到如下位置:

     

    view:定义了可以查看哪些节点设备的信息。

    snmp默认配置只能查看.1.3.6.1.2.1.1和.1.3.6.1.2.1.25.1.1节点下的设备信息,而主机CPU和内存等设备都不在这些节点下,所以无法获取这些数据。

    因此,可以修改这个配置,如下:

     

    在此处添加了一行:

    view    systemview    included   .1

    表示可以查看.1节点下的所有设备信息。 

    2、修改Process checks的配置

    找到如下位置:

     

    # proc mountd

    # proc ntalkd 4

    # proc sendmail 10 1

    三行前的“#”号去掉,取消注释,结果为:

     

      

    3、修改Executables/scripts配置

    找到如下位置:

     

    #exec echotest /bin/echo hello world

    一行前的“#”号去掉,取消注释。

    4、修改disk checks配置

    找到如下位置:

     

    #disk / 10000

    一行前的“#”号去掉,取消注释。

    5、修改load average checks配置

    找到如下位置:

     

    将 #load 12 14 14

    一行前的“#”号去掉,取消注释。

    6、保存修改,重启snmp服务

     

    7、验证修改配置后的snmp服务

     

    如上,通过本机localhost获取到CPU的空闲率为97%。

     

    如上,通过远端主机获取到CPU的空闲率为93%。

    PHP代码如下

    <?php
    function get_server_info($host, $community, $objectid) {
    $a = snmpget($host, $community, $objectid);
    $tmp = explode(":", $a);
    if (count($tmp) > 1) {
    $a = trim($tmp[1]);
    }
    return $a;
    }
    $host="172.19.66.32";
    $community="public";
    //获取$host服务器的1分钟平均负载
    $load1 = get_server_info($host,$community,"1.3.6.1.4.1.2021.11.11.0") ;
    echo $host."当前CPU空闲率为".$load1."%";
    ?>

  • 相关阅读:
    Nginx软件优化
    分布式文件系统---GlusterFS
    内建DNS服务器--BIND
    ESXI 6.5 从载到安装
    在Linux下写一个简单的驱动程序
    TQ2440开发板网络配置方式
    虚拟机Linux下找不到/dev/cdrom
    求最大公约数
    strcmp的源码实现
    转:嵌入式软件工程师经典笔试题
  • 原文地址:https://www.cnblogs.com/666-zhouliang/p/7009548.html
Copyright © 2011-2022 走看看