FreeBSD用SNMP+MRTG监控网络

2010-08-21T19:46:00

FREEBSD8上安装nginx+snmp+mrtg还是比较简单的,因为有PORTS的帮助让很多工作都简化了。但是网络上的教程要么太老,要么显得安装过程过于顺利,下面贴出我的安装过程供需要的TX参考。Nginx的安装就不再赘述了,最终用到Nginx的地方只是将所有的监测结果展示出来,相当于在Nginx下添加一个新的虚拟主机而已。

安装SNMP

通过PORTS安装

    cd /usr/ports/net-mgmt/net-snmp
    make install

装好后在/etc/rc.conf中添加如下内容,使得开机启动SNMP服务


    snmpd_enable="YES"
    
    snmpd_flags="-a "
    
    snmpd_pidfile="/var/run/snmpd.pid"
    
    snmptrapd_enable="YES"
    
    snmptrapd_flags="-a -p /var/run/snmptrapd.pid"

用你擅长的文本编辑器修改文件/usr/local/share/snmp/snmpd.conf 添加以下内容(如果没有就新建,非常重要!)

    rocommunity public

这是为了让SNMP能够通过public用户进行读取相应的信息,确认添加完毕后启动服务

    /usr/local/etc/rc.d/snmpd start

到这里SNMP就简单的安装完成了,SNMP是监控系统的最基本支持,如果SNMP没有安装好那么更高层的MRTG、Nagios等等软件就不能够通过SNMP来获取相应的系统信息,也就达不到监控的目的了。

安装MRTG

依旧是通过PORTS安装

    cd /usr/ports/net-mgmt/mrtg
    make install

安装好了之后先建立一个用来存放信息文件生成的目录,也就是要在Nginx下新添加的虚拟主机的根目录,我这里新建的是是/www/mrtg。在Nginx的配置文件中添加如下内容:(红色部分就是以后你访问监控状态的域名)


    server
    
    {
    
    listen 80;
    
    server_name info.net;
    
    access_log /var/log/nginx/access-info_net.log;
    
    location /{
    
    root /www/mrtg;
    
    index index.html;
    
    }
    
    }

保存之后运行Nginx -s reload重新加载配置,至此,MRTG的安装和Nginx的配置就完成了.

配置MRTG

首先cd到MRTG的配置目录/usr/local/etc/mrtg,用以下命令新建一个配置文件(红色部分可以改成你服务器相应的IP)


    cfgmaker public@127.0.0.1 > mrtg.cfg

这里public是访问SNMP的用户名,如果是照我前面的rocommunity public的话就是public,如果改了的话就是你设置的用户名;127.0.0.1是你本机的地址,可以用域名,但推荐使用一个固定IP,好处你用多了就知道了;mrtg.cfg是生成配置保存的文件

注意:如果你的SNMP配置正常的话,那么创建新配置文件的过程是不会报错的,如果出现了错误请根据提示修改你的语句尤其是SNMP的配置。

如果你成功地生成了mrtg.cfg,那么恭喜到目前为止你的配置没有任何问题,不过别着急,再在mrtg.cfg中添加一下如下内容:

    LoadMIBs: /usr/local/share/snmp/mibs/UCD-SNMP-MIB.txt
    
    WorkDir: /www/mrtg
    
    Language: chinese

LoadMIBs不解释,WorkDir就是之前设置Nginx虚拟机主机的目录,Language改成中文是让监控结果以中文显示。当然还有不少网友在mrtg.cfg中添加更多的内容来强大监控的功能(比如CPU、磁盘、进程、uptime等等),就我的理解:如果把SNMP+MRTG看作是一个PHP+MySQL程序的话,mrtg.cfg相当于一个模板,MRTG是一整套模板引擎,SNMP就是MySQL数据库。MRTG通过解析mrfg.cfg调用SNMP数据生成相应的前台页面展现出来。

接下来生成首页:

    indexmaker --title "Ecjtu.net" --output=/www/mrtg/index.html mrtg.cfg

--title后面的tittle的内容,--output=的值是生成的目录所在位置,mrtg.cfg就是刚才生成并修改过的配置文件了。

接下来测试一下生成适时数据:

    /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

实际上每次执行这个命令都是MRTG从SNMP中读取一次数据并将数据组织到工作目录中。貌似因为权限的问题,这个命令执行的前三次都会报错,执行第四次之后如果不会再报错了就恭喜你,MRTG配置完成。

最后将生成实时数据的命令放在crontab里去,每隔五分钟运行一次。在/etc/crontab中添加

    */5 * * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

至此FreeBSD8下Nginx+SNMP+MRTG监控服务就配置完成了。打开配置好的虚拟主机就可以看到相应的图表了:

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »