Holmesian Blog

FREEBSD8 下 Nginx + SNMP + MRTG 的安装与配置

在 FREEBSD8 上安装 nginx + snmp + mrtg 还是相对简单的,因为有 PORTS 的帮助,使得很多工作得以简化。不过,网络上的教程要么太陈旧,要么将安装过程描述得过于顺利,下面我将贴出自己的安装过程,供有需要的朋友参考。Nginx 的安装过程在此就不再赘述了,因为最终使用 Nginx 的目的只是将所有的监测结果展示出来,相当于在 Nginx 下添加一个新的虚拟主机而已。

一、安装 SNMP

通过 PORTS 安装

首先,我们通过 PORTS 来安装 SNMP

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 没有安装好,那么更高层的 MRTGNagios 等软件就无法通过 SNMP 获取相应的系统信息,也就无法达到监控的目的。

二、安装 MRTG

同样通过 PORTS 进行 MRTG 的安装:

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

首先,进入 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 设为 chinese 是为了让监控结果以中文显示。当然,很多网友会在 mrtg.cfg 中添加更多内容来增强监控功能(比如监控 CPU、磁盘、进程、uptime 等)。就我的理解,如果把 SNMP + MRTG 看作是一个 PHP + MySQL 程序,那么 mrtg.cfg 相当于一个模板,MRTG 是一整套模板引擎,SNMP 则是 MySQL 数据库。MRTG 通过解析 mrtg.cfg 调用 SNMP 数据并生成相应的前台页面。

接下来生成首页:

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

这里 --title 后面的内容是页面的标题,--output= 的值是生成文件的目录位置,mrtg.cfg 是刚才生成并修改过的配置文件。

然后测试生成实时数据:

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

实际上,每次执行该命令都是 MRTGSNMP 中读取一次数据并将数据存储到工作目录中。由于权限问题,这个命令在执行的前三次可能会报错,若执行第四次之后不再报错,那么恭喜你,MRTG 的配置完成。

最后,将生成实时数据的命令添加到 crontab 中,使其每隔五分钟运行一次。在 /etc/crontab 中添加以下内容:

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

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

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »