MRTG-Unix-Guide(翻译)

发表于:2007-06-09来源:作者:点击数: 标签:
/*************************************************************** /*MRTG- UNIX 使用指南 /* /*作者:Tobias Oetiker /* /*翻译:Patrick /* /*时间:2004-8-10 /* /*************************************************************** 名字 mrtg- unix -

/***************************************************************
/*MRTG-UNIX使用指南
/*
/*作者:Tobias Oetiker
/*
/*翻译:Patrick
/*
/*时间:2004-8-10
/*
/***************************************************************

 

名字

mrtg-unix-指南 - 介绍如何在Unix机器上运行MRTG 2.10.14

描述

MRTG提供的是源代码。这就是说在Unix上运行之前,你需要编译每一部分代码。这个指南会帮助你做这些。

准备

为了编译并使用MRTG你需要一个C编译器和一份perl安装在你的机器上。很可能这两样你已经具备了。如果还没有,这有一些简单介绍。下面我会介绍整个编译过程的细节。

GCC
GNU C 编译器在很多免费的Unix类系统上已经预安装了。由于一些商业原因,你首先可能需要下载并编译它。如果你还没有任何编译器,那这里就有一个鸡与蛋的问题,但是还会有对很多操作系统的预编译版gcc可供选择。
http://gcc.gnu.org/

Perl
MRTG的很大一部分是用perl写成的。确定你机器上有一个版本较新的perl(try perl -v)。为了使MRTG工作正常,至少需要5.005。你可以从这里获得perl最新版
http://www.perl.com/

MRTG产生的数据流量图是PNG格式的。为了支持这个需要一些第三方库。编译的时候我建议你将他们编译成静态库。看看这个说明的下一节会给你些灵感。请注意很多免费的Unix类系统会提供所有需要的库,所以你根本不需要再安装其他版本。最好检查一下,这样可以略过下面的库说明直接进入mrtg的编译部分。

如果第一次尝试失败,并且没有获得一个可执行的mrtg版本,试着按照下面的说明编译一份所有库的新版本。在你因为编译mrtg的问题给我写邮件以前,请*务必*做一次下面的事再说。

gd
这是一个基本的图形库,由Thomas Boutell建立。请注意所有v1.3以后的发行版只能建立PNG图象。这是因为:1)由于GIF格式使用了Unisys专利的压缩技术,Thomas因为这个会惹上麻烦。2)PNG更高效而且免费。MRTG可以使用新的或旧的GD库。你可以从这里获得最新版的GD库:
http://www.boutell.com/gd/

libpng
gd需要它来生成PNG图形文件。从这里可以找到它:
http://www.libpng.org/pub/png/libpng.html

zlib
libpng需要它来压缩你建立的图形文件,从这里获得它:
http://www.gzip.org/zlib

最主要的,就是需要mrtg,如果你还没有下载,可以从我的网站上下载:
http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/

编译库

这一节我会一步一步介绍怎样编译各种各样的编译mrtg时需要的库。注意,可能所有这些库在你的BSD族或Linux系统上已经提供了,所以你可以略过这一节。下面用的程序wget是一个简单的web下载器。如果你没有wget你可以在netscape中输入地址来下载。

首先我们为编译建立一个目录。注意这个目录可能已经存在。没问题,只要用就可以了。

 mkdir -p /usr/local/src
 cd /usr/local/src

如果还没有安装zlib:

 wget http://www.gzip.org/zlib/zlib-1.1.4.tar.gz
 gunzip -c zlib-*.tar.gz | tar xf -
 rm zlib-*.tar.gz
 mv zlib-* zlib
 cd zlib
 ./configure
 make
 cd ..

如果还没有安装libpng:

 wget http://planetmirror.com/pub/sourceforge/libpng/libpng-1.0.15.tar.gz
 gunzip -c libpng-*.tar.gz |tar xf -
 rm libpng-*.tar.gz
 mv libpng-* libpng
 cd libpng
 make -f scripts/makefile.std CC=gcc ZLIBLIB=../zlib ZLIBINC=../zlib
 rm *.so.* *.so
 cd ..

现在可以编译gd
升级版本到1.8.4:

 wget http://www.boutell.com/gd/http/gd-1.8.4.tar.gz
 gunzip -c gd-*.tar.gz |tar xf -
 rm gd-*.tar.gz
 mv gd-* gd
 cd gd

字符及后面的行代表所有后面的内容事实上是写在一行里的。

 perl -i~ -p -e s/gd_jpeg.o//g Makefile           
 make INCLUDEDIRS="-I. -I../zlib -I../libpng"
      LIBDIRS="-L../zlib -L. -L../libpng"
      LIBS="-lgd -lpng -lz -lm"
      CFLAGS="-O -DHAVE_LIBPNG"
 cd ..

使用2.0.11版本:

 wget http://www.boutell.com/gd/http/gd-2.0.11.tar.gz
 gunzip -c gd-2.0.11.tar.gz |tar xf -
 mv gd-2.0.11 gd
 cd gd
 env CPPFLAGS="-I../zlib -I../libpng" LDFLAGS="-L../zlib -L../libpng" ./configure           --disable-shared
     --without-freetype --without-jpeg
 make
 cp .libs/* .

编译MRTG

OK,现在为编译mrtg准备的所有都已经搞定了。

 cd /usr/local/src
 gunzip -c mrtg-2.10.14.tar.gz | tar xvf -
 cd mrtg-2.10.14

如果所有的库都已经预装在你的系统上了,你可以简单的配置mrtg:

 ./configure --prefix=/usr/local/mrtg-2

否则你需要提供所有需要的库的位置:

 ./configure --prefix=/usr/local/mrtg-2      
             --with-gd=/usr/local/src/gd     
             --with-z=/usr/local/src/zlib    
             --with-png=/usr/local/src/libpng

如果你有RRDtool(http://www.rrdtool.org)你可以告诉mrtg,可以选择是否使用RRDtool。这里是mrtg-rrd的手册(http://people.ee.ethz.ch/~oetiker/webtools/mrtg/mrtg-rrd.html)

configure会使系统环境适合安装mrtg。如果它发现了问题会告诉你,还会告诉你该怎么做。如果万事OK,你会以定制一个Makefile来结束安装,现在键入:

 make

这会建立库并编辑所有的perl脚本中的路径。现在你可以通过键入以下来安装mrtg:

 make install   (requires gnu install)

所有MRTG需要的软件已经安装在/usr/local/mrtg-2下面了。

现在你可以安全的删除刚才编译过的库。但是你可以保留它们,以防编译下一个版本的mrtg。

配置

下一步是配置mrtg来监视一个网络设备。你可以建立一个mrtg.cfg文件来定义你想监视的设备。幸运的是你不用自己写配置文件。伴随mrtg你已经获得一个cfgmaker。这是一个脚本,你可以用其指向一个你选择的路由设备;它会为你生成一个mrtg配置文件。你可以在bin子目录下找到这个脚本。

 cfgmaker --global 'WorkDir: /home/httpd/mrtg' 
          --global 'Options[_]: bits,growright'
          --output /home/mrtg/cfg/mrtg.cfg   
           community@router.abc.xyz

上面的这个例子会在/home/mrtg/cfg中建立一个mrtg配置文件,假设这是一个在你的web服务器上可见的目录。你可以通过阅读cfgmaker手册(http://people.ee.ethz.ch/~oetiker/webtools/mrtg/cfgmaker.html)来获得更多它的信息。有一个地方你可能会考虑使用的--ifref=ip用来防止接口重编号问题。如果你想重新写一个mrtg配置文件,确定你已经读过mrtg-reference manpage(http://people.ee.ethz.ch/~oetiker/webtools/mrtg/mrtg-reference.html)。

运行MRTG

一旦你建立了一个配置文件,试着做下面的事:

 /usr/local/mrtg-2/bin/mrtg /home/mrtg/cfg/mrtg.cfg

这会询问你的路由器并生成你的第一个mrtg流量图和网页。当你第一次运行mrtg时或许会有许多抱怨由于丢失记录文件。别担心,在你开始运行mrtg的一两次中这是很正常的。如果持续这样,来看看下面的问题。

手动启动mrtg对长期运行是不利的。所以如果你想得到满意的结果,你可以这样定期的运行mrtg(默认5分钟一次)。

你还可以在你的crontab中这样加入mrtg:

 0,5,10,15,20,25,30,35,40,45,50,55 * * * *
       <mrtg-bin>/mrtg <path to mrtg-cfg>/mrtg.cfg
                --logging /var/log/mrtg.log

或者如果你用惯了Linux,如果你用crontab -e刚才这行可以这样写:

 */5 * * * *  <mrtg-bin>/mrtg <path to mrtg-cfg>/mrtg.cfg
                       --logging /var/log/mrtg.log

如果你使用/etc/crontab还可以这样:

 */5 * * * *  mrtg-user  <mrtg-bin>/mrtg <path to mrtg-cfg>/mrtg.cfg
                                 --logging /var/log/mrtg.log

你当然还可以将mrtg以守护进程的凡是运行,将:

 RunAsDaemon: Yes

加入mrtg的配置文件,并在系统中加入一个启动脚本。不幸的是,在不同的unix系统中,启动脚本是很不相同的。可能会是/etc/init.d或/etc/rc.d/init.d这样的目录,你可以在其中加入启动脚本。更进一步,你必须建立一个符号连接在/etc/rc3.d或/etc/rc.d/rc?.d中,诸如S65mrtg(这仅仅是一个简单的名字……只是注意以S开头而且S后面接了两个数字)。确定你参考了系统中的文档以保证你正确的做这些。

在init.d中加入的最小规模的脚本是像这样的:

 #! /bin/sh
 cd /usr/local/mrtg-2.10.14/bin && ./mrtg --user=mrtg-user
       /home/httpd/mrtg/mrtg.cfg  --logging /var/log/mrtg.log

请注意这只会在当你在mrtg.cfg中定义了RunAsDaemon: Yes之后才工作。

作者

Tobias Oetiker <oetiker@ee.ethz.ch>
/**************************     The End     ********************************/ 
/**************************Translate by Patrick*****************************/

一篇介绍Mrtg入门的文章,这篇文章好在比较详细,所以拿来翻译了一下,但只是篇介绍安装和简单使用的文章。进一步的你可以再找些资料,也或者有时间我再找篇文章来。

HTH~~

原文转自:http://www.ltesting.net