• FreeBSD8下Nginx+SNMP+MRTG监控网络

    post by Holmesian / 2010-8-21 19:46 Saturday

    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监控服务就配置完成了。

    打开配置好的虚拟主机就可以看到相应的图表了……

     

     

     

     

    发表评论: