Chinaunix首页 | 论坛 | 博客
  • 博客访问: 818286
  • 博文数量: 127
  • 博客积分: 3662
  • 博客等级: 中校
  • 技术积分: 1371
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-02 12:36
个人简介

Linux&MySQL&PHP&Nginx&Apache&MSSQL&Shell

文章分类

全部博文(127)

文章存档

2016年(1)

2015年(8)

2014年(14)

2013年(26)

2012年(17)

2011年(28)

2010年(33)

分类: WINDOWS

2011-05-09 17:28:15

http://blog.sina.com.cn/s/blog_56a70c040100mk9t.html

MRTG运行时的行为是由一个配置文件控制的。这个配置文件可以用cfgmaker生成。(请参考cfgmaker的手册)。但是更加详细精巧的配置还是需要手工进行的。

这篇文档介绍了mrtg使用的所有配置选项。

语法

MRTG配置文件语法遵循一些简单的规则:

* 管检测必须在一行的开头。

*  在一个关键词行之后的以空格开头的每一行都是关键词行的后继行。

* 空行被忽略。

*  #开头的行是注释行。

*  你可以使用Include: file的形式把其它的文件导入配置文件。

例子:include: base-option.inc

如果被包含的文件被相对路径指定,包括当前目录和包含主配置文件的目录都会被搜索。

全局配置关键词

WorkDir

WorkDir 指定日志文件和网页文件的生成文件。

例子:

WorkDir: /usr/tardis/pub/www/stats/mrtg

可选全局关键词

HtmlDir

HtmlDir指定html(或者shtml,这个会在以后被支持)生成的位置。

注意:WorkDir会覆盖htmldirimagedirlogdir的设置。

例子:

Htmldir/www/mrtg/

ImageDir

ImageDir 指定存放生成的图片的文件夹。这个文件夹应该设置在html文件夹内。

例子:

Imagedir/www/mrtg/images

 

LogDir

LogDir 指定存放日志的文件夹.这不必放在htmldir文件夹内.

例子:

Logdir/www/mrtg/logs

Forks( UNIX only)

在支持Fork的系统之中(例如UNIX,mrtg需要通过snmp获取数据的时候,它能fork自己成为多个实例。

在高延迟或者存在大量设备的情况下,这能极大的提高效率。如果你的那台交换机就在隔壁,那它可能不会提高你的查询速度。

据我所知,NT不能fork,所以这项功能在NT中不能使用。

例子:

forks4

 

EnableIPv6
当把值设置为yes时,如果相应的库文件存在(请参考mrtg-ipv6手册页),那么IPv6就可以启用

了。这样IPv6功能就启用了,mrtg就能够和基于IPv6的路由器及其它对象的snmp进行通讯,它们

可能使用了IPv6来指定地址。

如果IPv6被启用并且对象是一个主机名,mrtg将尝试解析主机名为IPv6地址,并且如果失败了,

再解析为IPv4地址。注意如果指定了IPv4地址或者设置了主机名,但是没有设置IPv6地址,mrtg

将仅使用IPv4;mrtg如果使用IPv6通讯失败,将不会使用IPv4。这是设计中实现的。

注意现在许多的路由器没有支持基于IPv6的SNMP。这些路由器将使用IPv4Only选项。

IPv6默认是关闭的。

例子:
EnableIpv6:yes

------------------------

EnableSnmpV3

当这一项参数化设置为yes的时候,将使用Net::SNMP模块替代SNMP_SESSION模块来生成snmp请求

。如果snmpv3参数被设置了,这将允许使用SNMPv3。

SNMPv3默认是关闭的。
例子:
EnableSnmpV3:yes

--------------------------

Refresh
浏览器应该多长时间重新加载页面?如果没有指定的话,默认使300秒(5分钟)。
例子:

Refresh:600

---------------------------

Interval

你多长时间调用一次mrtg呢?默认是5分钟。如果频率比较低的话,你应该在这里指定。这将完成

两个任务:
生成的HTML页面包含正确的关于间隔的信息...
在生成的HTML页面中包含正确的META设置...

下面的例子我们让mrtg每10分钟运行一次。如果你让mrtg每5分钟运行一次,你可以注释掉这一行。
例子:
Interval:10

注意:除非你使用rrdtool,你不要把间隔设置的小于5分钟。如果你使用rrdtool,你可以用这样

的格式来设置时间间隔
Interval:MM[SS]

甚至可以设置间隔为1秒。然而还是要注意,间隔的设置会影响rrdtool和mrtg对于数据库的初始

化。如果以后你改变了间隔的设置,所有已经存在的数据库将保持初始化时候的解析度。也要注

意你的mrtg-rrd的 web前端是否支持这种设置。


------------------------------
MaxAge
MRTG非常的以来计算机的时间。如果时间设置有错误,特别是比当前时间快很多,会引起mrtg把日志文件中的数据当成过期数据来处理。
为了避免这样的情况发生,你可以对日志文件指定最大容忍时间来进行“合理性检查”,如果文件看上去很老了,mrtg先不会操作这个文件,而是发出抱怨(警告),给你一个机会来检查原因。

例子:
MaxAge:7200
上面的例子中mrtg将不会更新过期两小时的数据(7200秒)。

-----------------------------
WriteExpires
这个选项将使得mrtg为CERN和Apache(其中包含Expirations标签的)生成.meta文件。这些*.meta文件将会在与其它文件相同的目录里面创建,为了能够保证它正常运行,你将需要在Apache.conf或者.htaccess文件设置“MetaDir.”和“MetaFiles on”。

注意:如果你运行的是Apache-1.2或者更新版本,你能够使用mod_expire来达到同样的效果...请参考htaccess.txt。

例子:
WriteExpires:yes

-----------------------
NoMib2
正常情况下我们会查询设备的“sysUptime”(运行时间)和“sysName”(系统名称)。但是一些设备没有这些信息。如果你想避免mrtg生成相关警告,请设置nomib2选项。

一个不提供基本的mib2属性信息的例子是 Computer Associates - Unicenter TNG 代理。CA 除了使用它自己的代理外还依赖OS的SNMP代理来提供系统管理功能。
例子:
NoMib:yes


-----------------------
SingleRequest
一些SNMP实现不能支持一次查询多个snmp变量。设置这个参数可以强迫mrtg每次只查询一个变量。
例子:
SingleRequest:yes

 


----------------------
SnmpOptions
除了每个监控对象的超时选项可设置外,你还能够更详细的配置snmpget操作。目前支持以下的选项:
timeout                   => $default_timeout,
retries                   => $default_retries,
backoff                   => $default_backoff,
default_max_repetitions   => $max_repetitions,
use_16bit_request_ids     => 1,
lenient_source_port_matching => 0,
lenient_source_address_matching => 1

选项后面的值是默认值。注意这些设置会覆盖每个监控对象的超时设置。
每个监控对象的SnmpOptions[]将会覆盖全局设置.这个关键词主要是为了在SNMPv3中使用.
16bit的请求id是对SMC堡垒路由器进行请求查询的唯一方法.

例子:
SnmpOptions: retries => 2, only_ip_address_matching => 0

注意AS/400的snmp似乎不太配合mrtg,除非这样设置:
SnmpOptions: lenient_source_port_matching => 1

--------------------
IconDir
如果你想把mrtg的图标保存在某个文件夹中,既不是工作目录,也不是imageDir,那么使用这个选项来定义icon的目录.

例子:
IconDir: /mrtgicons/

--------------------
LoadMIBs
加载指定的MIB文件并让其中的OID可以用字符名字引用.为了获得更好的效率,mrtg在WorkDir中维护一个MIB缓存.

例子:
LoadMIBs: /dept/net/mibs/netapp.mib,/usr/local/lib/ft100m.mib

------------------------
Language
使用这个选项来产生指定语言的结果(检查翻译目录来查看你的mrtg支持多少种语言.在这个目录中你还能找到一些说明

,关于怎样支持新的语言.)

目前支持下面几种语言:
big5 brazilian bulgarian catalan chinese croatian czech danish dutch eucjp french galician gb gb2312

german greek hungarian icelandic indonesia iso2022jp italian korean lithuanian malay norwegian polish

portuguese romanian russian russian1251 serbian slovak slovenian spanish swedish turkish ukrainian

例子:
Language:danish

---------------------------
LogFormat
设置这个选项的值为rrdtool就启用了rrdtool模式.在这种模式中,mrtg依靠rrdtool来做日志.请参考mrtg-rrd.

例子:
LogFormat:rrdtool

----------------------------
LibAdd
如果你使用了rrdtool模式并且你的rrdtool的perl模块(RRDs.pm)不能被perl自身找到,你可以使用这个选项来提供相应

的路径.

例子:
LibAdd: /usr/local/rrdtool/lib/perl/

-----------------------------
PathAdd
如果rrdtool的可执行部分在正常的"PATH"中不能被找到,你可以使用这个关键词来给你的PATH增加一个适合的目录.

例子:
PathAdd: /usr/local/rrdtool/bin/

-----------------------
RunAsDaemon
这个参数启用daemon模式来运行mrtg。守护模式就是指MRTG只运行一次,而不是反复的运行(因为它是使用cron运行的

。)这会节省计算资源的,因为只在开始的时候对配置文件进行一次加载和分析。

使用daemon模式,MRTG自己对时间间隔进行控制。因此为“interval”选项设置一个合适的值是很重要的。

如果你想让mrtg以某个特定的用户和组来运行(不推荐使用root身份运行mrtg),那么在命令行运行mrtg时请使用--

user和--group参数。

例子:
mrtg --user=mrtg_user --group=mrtg_group mrtg.cfg

也要注意:在daemon模式中,当配置文件改变时,为了使改变生效,重启进程是必要的。

在UNIX中,Daemon参数让mrtg在检查过配置文件后就进入后台运行。在WindowsNT中,MRTG进程将脱离控制台运行,但是

因为NT/2000的shel会等待子进程结束,所以你需要使用下面的命令来运行:
start /b perl mrtg mrtg.cfg

你可能需要注意修改路径信息。

例子:
RunAsDaemon: Yes
Interval:    5

If you are daemontools and still want to run mrtg as a daemon you can additionally specify
NoDetach:yes
这将使得mrtg不脱离终端运行.

------------------
ConversionCode

一些设备可能会生成非数字的值,但这些值如果能被转换成数字,对于MRTG的图像生成还是有用的.这个关键字指定了一个进行转换操作的Perl文件的路径.在这个文件中包含一个或者多个Perl的子程序.每个子程序都必须接收一个single string变量并返回一个single numeric值.当使用RRDtool的时候,会返回一个decemal值.当某一个子程序的名字在后面的监控目标中指定的时候(参看后面内容),MRTG将会为这个监控目标调用它两次,一次是转换输入值,一次转换输出值.当转换失败的时候,子程序必须返回一个undefine值.如果出现失败,在MRTG的日志文件中将会用Perl的警告函数写入一个警告.MRTG将会把子程序导入一个隔离的名称空间(package MRTGConversion),这样用户就不必担心会影响到MRTG的全局名字空间了。MRTG automatically prepends this package declaration to the user-supplied code.

例子:
假设某个OID返回一个字符串,它的长度对于被监控的值来说是适当的。为了把字符串转换成一个数字,MRTG可以用来绘制图形,我们创建一个文件“MyConversions.pl”,内容如下:
# Return the length of the string argument
sub Length2Int {
   my $value = shift;
   return length( $value );
}

然后在MRTG的配置文件中加入下面的内容(假设转换代码的文件在MRTG/bin目录中):
ConversionCode: MyConversions.pl
这将使得MRTG把我们定义的Length2Int子程序包含进自己的执行环境中。Length2Int将能够被在任何监控目标上被调用,只是需要像下面一样把“|Length2Int”加到监控目标定义中:
Target[myrouter]: 1.3.6.1.4.1.999.1&1.3.6.1.4.1.999.1:public@mydevice|Length2Int
看下面的“Extended Host Name Syntax”来获取完整的关于定义“监控目标”的语法信息。

 


-----------------
2008.12.24
-----------------
Target
使用这个关键词你高速mrtg监控的目标是什么。它能够以很多种形式进行定义。

------------------
基本形式(Basic)
最基本的格式为“port:community@router”,这将为主机‘router’(dns名称或者IP地址)的‘port’接口生成一个通讯

流量图,并且使用‘community’作为snmp查询的口令。

例子:
Target[myrouter]: 2:public@wellfleet-fddi.domain

如果你的community包含或者空格,这些字符必须被使用‘\’进行转义.
例子:
Target[bla]: 2:stu\ pi\@d@router

-----------------------
SNMPv2c
如果你使用一个高速的路由器你可能想要使用ifHC*计数器.这个特性由SNMPv2c参数启用.然而不幸的是,并非所有的设备都支

持SNMPV2C.这个参数将使得你的计数器不会在5分钟内就被重置,因为我们使用了64位计数器代替了原来的32位计数器.

例子:
Target[myrouter]: 2:public@router1:::::2

------------------------
SNMPv3
作为SNMPV2C的替代,SNMPv3提供了对ifHC*计数器的访问功能,并具备了加密功能.不是所有的设备都支持SNMPv3,你还需要

perl的Net::SNMP库来支持SNMPv3.涉及SNMPv3的配置建议使用cfgmaker,因为它会检查Net::SNMP库文件是否被加载,并且在不

能使用v3的时候会使用SNMPv2c.

--------------------------
SNMP v3 需要使用认证参数,使用SnmpOptions[]来传递.
Example: Target[myrouter]: 2:router1:::::3 SnmpOptions[myrouter]: username=>'user1'

--------------------------
noHC
不是所有支持SNMPv2和SNMPv3的路由器在每个接口上都提供ifHC*计数器.noHC 关键词表明需要使用低速的计数器ifInOctets

和ifOutOctets,而不是高速的ifHC*计数器.如果SNMPv2和SNMPv3被指定使用但是ifHC*计数器不可用,cfgmaker将会自动的插

入这个关键词.

Example: Target[myrouter]: #Bri0:router1:::::3 SnmpOptions[myrouter]: username=>'user1' noHC[myrouter]: yes

-----------------------
reversing

有时候你处于链路错误的一侧,你也想mrtg把流入流量报告成流出流量等等.这个关键词能做到这一点,你只是需要把"Target"

的描述中加上一个'-'.它就能把流入和流出流量交换.

例子:
Target[ezci]: -1:public@ezci-ether.domain

-------------------------
Explicit OIDs

你也可以使用‘OID_1&OID_2:community@router’明确的指定想要查询的OID.下面的例子在接口1上检索输入和输出流量的错误

计数.MRTG需要为两个变量绘制图形,这样你需要指定两个OID,比如温度和湿度或者错误的输入和错误的输出.

例子:
Target[myrouter]: 1.3.6.1.2.1.2.2.1.14.1&1.3.6.1.2.1.2.2.1.20.1:public@myrouter


-------------------------
MIB 变量

MRTG知道很多字符形式的SNMP变量.请参看主页上的mibhelp.txt查看这些名字的列表.一个例子就是ifInErrors和ifOutErrors.

这意味着你可以这样定义上面的例子:

例子:
Target[myrouter]: ifInErrors.1&ifOutErrors.1:public@myrouter


--------------------------
SnmpWalk

也许你会监控一个只有使用'walk'才能访问的snmp 对象.你可以让mrtg进行walk操作,这需要在OID前面加上WaLK.或者你想访问

walk操作返回的某个特定条目,那么你可以使用WaLKx,x是一个从"0"开始的数字.

例子:
Target[myrouter]: WaLKstrangeOid.1&WaLKstrangeOid.2:public@myrouter

Target[myrouter]: WaLK3strangeOid.1&WaLK4strangeOid.2:public@myrouter

---------------------------
SnmpGetNext

也有特殊的例子,那就是snmpgetnext能返回正确的值,但是walk不能.这中情况在使用snmpv2 or v3的时候会发生,因为在这些版

本中使用了snmpgetbulk方法.你可以在OID的前面加上字符串"GeTNEXT",以让getnext操作来代替getbulk.

例子:
Target[myrouter]: GeTNEXTstrangeOid&GeTNEXTstrangeOid:public@myrouter


-----------------------------
SNMP Walk 相关计算

在一些情况下,snmpwalk 需要计算行数,而实际的数据并没有意义。例如,计算CAM表中的MAC地址数目,或者同时进行拨号的

会话数目。你可以在OID前面加上CnTWaLK来让MRTG进行计算。下面将对同时通过VOIP进行拨号的数目进行计算:

Target[myrouter]: CnTWaLK1.3.6.1.4.1.9.10.55.1.1.1.1.3&CnTWaLK1.3.6.1.4.1.9.10.55.1.1.1.1.3:public@myrouter


--------------------------------
使用IP来指定接口

有时候SNMP接口的索引号可能会变化,比如添加新接口或者移除某个接口。这可能会让你的配置文件产生偏差,引起MRTG工作

出现错误等等。MRTG支持使用IP地址而不仅使用接口索引号来定义监控对象。
确保使用的IP地址确实在同一个路由器上,特别是当绘制两个不同OID的时侯;并确保使用‘&’分隔开接口。

你可以使用选项 “--ifref=ip”来让cfgmaker生成相应的配置文件。

例子:
Target[myrouter]: /1.2.3.4:public@wellfleet-fddi.domain
Target[ezci]: -/1.2.3.4:public@ezci-ether.domain
Target[myrouter]: ifInErrors/1.2.3.4&ifOutErrors/1.2.3.4:public@myrouter


-------------------------------

-------------圣诞快乐 2008.12.25-------------
使用名字(描述)来指定接口

如果你不能使用接口的IP地址来指定,那么你可能想用接口的名字来指定监控的接口.这和使用IP地址的方法类似,但是前缀使

用\而不是/.

你可以指定cfgmaker使用选项--ifref=descr来自动生成配置文件.

例子:
Target[myrouter]: \My-Interface2:public@wellfleet-fddi.domain
Target[ezci]: -\My-Interface2:public@ezci-ether.domain
Target[myrouter]: ifInErrors\My-If2&ifOutErrors\My-If3:public@myrouter

如果你的描述中包括'&' 、':' 、或者空格,那么你需要使用反斜线进行转义。
Target[myrouter]: \fun\:\ ney\&ddd:public@hello.router

-----------------
使用名字(编号)来指定接口

这是指定你的交换机接口的唯一明智的做法。你可以使用--ifref=name来指示cfgmaker生成相应的配置文件。

例子:
Target[myrouter]: #2/11:public@wellfleet-fddi.domain
Target[ezci]: -#2/11:public@ezci-ether.domain
Target[myrouter]: ifInErrors#3/7&ifOutErrors#3/7:public@myrouter

如果你的描述中包括'&' 、':' 、或者空格,那么你需要使用反斜线进行转义。
Target[myrouter]: \fun\:\ ney\&ddd:public@hello.router

----------------
使用以太网地址(MAC)来指定接口

如果SNMP的接口索引发生变化,你可以使用“物理地址”来指定接口,有时候被称作“硬件地址”,在SNMP中就是变量

‘ifPhyAddress’。在内部,MRTG会对配置文件中的物理地址和收集到的接口的索引的物理地址进行匹配,然后在其后的会

话中使用它。

你可以在各种监控对象的定义中使用物理地址,这需要在OID的后面加上物理地址,并使用'!'来作分隔符(与ip地址选项类

似)。注意,一些路由器把一个MAC地址应用到所有的接口上,这会影响到对接口唯一性的识别。mrtg会发觉这种情况,并提

出警告。

你可以使用--ifref=eth来让cfgmaker生成相应的配置文件。

例子:
Target[myrouter]: !0a-0b-0c-0d:public@wellfleet-fddi.domain
Target[ezci]: -!0-f-bb-05-71-22:public@ezci-ether.domain
Target[myrouter]: 1.3.6.1.2.1.2.2.1.14!0a-00-10-23-44-51&1.3.6.1.2.1.2.2.1.14!0a-00-10-23-44-

51:public@myrouter
Target[myrouter]: ifInErrors!0a-00-10-23-44-51&ifOutErrors!0a-00-10-23-44-51:public@myrouter


-----------------
使用类型来指定接口

有些设备似乎总是尝试拒绝被监控:既没有ifName也没有ifDescr,更不要提永久性的ifIndex了。唯一的办法就是使用接口

的类型,因为接口在你要监控的设备上是唯一的...

你可以使用--ifref=type来生成相应的配置文件。

例子:
Target[myrouter]: :public@wellfleet-fddi.domain
Target[ezci]: -:public@ezci-ether.domain
Target[myrouter]: ifInErrors&ifOutErrors:public@myrouter


---------------------------
ifIndex的位置

有点OID中间包含有接口索引号。使用上面提到的各种方法指定接口的时候,关键词‘IndexPOS’可以被用来指出ifIndex的位

置。如果IndexPOS没有使用,ifIndex将会被加在OID的结尾。

例子:
Target[myrouter]: OID.IndexPOS.1/1.2.3.4&OID.IndexPOS.1/1.2.3.4:public@myrouter

用真实的数字OID取代里面“OID”字符。


-----------------------------
可扩展的主机名的语法

在所有的使用地方,你都能为SNMP的community名称添加额外的使用冒号分隔的后缀作为参数。你也可以

使用管道符号和上面“ConversionCode”选项介绍中提到的转换子程序的名字。完整的语法如下:
]]]]]


各个参数的含义如下:

********
port

和SNMP 代理联系用的UDP端口号(默认值:161)
完整的port参数的语法是: remote_port[!local_address[!local_port]]

有的机器具备某些特殊的安全特性,只允许来自某个IP地址的查询。如果进行查询的主机有多个接口,指定进行查询的接口可

能是必须的。

port指定被查询的机器的工作端口。另外,进行查询的机器的IP地址也可能需要被指定。

例子:
somehost
somehost:161
somehost:161!192.168.2.4!4000 (使用IP 192.168.2.4,端口4000 作为源主机参数。)
somehost:!192.168.2.4 (使用192.168.2.4作为源地址)
somehost:!!4000 (使用端口4000作为源端口)

********
timeout
SNMP查询的初始化超时时间,单位是秒(默认值:2)

*********
retries
超时查询的次数(默认值:5)

*********
backoff
每次重试的超时倍数因子(默认值:1)

*********
version
指定SNMP的版本。如果你有一个快速的路由器,你可能会在这里使用‘2’。如果涉及到授权和加密的SNMP,你可能在这里需要

使用‘3’。这会指示MRTG尝试使用64位的计数器,并能避免计数器频繁的重置。不是所有的路由器都支持这种特性。SNMPv3还

需要另外的设置,请参考SnmpOption[].

例子:
3:public@router1:::::2

*********
name
MRTG调用的把输入、输出值转换成整数的子程序名称。参考上面的“ConversionCode”。

例子:
1.3.6.1.4.1.999.1&1.3.6.1.4.1.999.2:public@mydevice:161::::2|Length2Int

这将在设备上检索OID1.3.6.1.4.1.999.1的值作为输入和1.3.6.1.4.1.999.2的值作为输出,检索使用UDP 161端口,使用

SNMPv2,并会执行转换子程序Length2Int来把这些值转换成整数。
采用默认值就可以忽略不写。后面的冒号也可以被忽略。管道符号必须在最后。在冒号和管道符号左右都不能使用空格。

例子:
Target[ezci]: 1:public@ezci-ether.domain:9161::4
这将检索在ezci-ether.domain上的接口1的输入输出字节的计数器,SNMP代理在UDP端口9161监听,标准的超时时间被使用(2

秒),但是重试次数被设置为4次,backoff值采用默认值。


---------------
使用IPv6地址

如果启用了IPv6地址,你就可以使用IPv6地址来定义监控目标。为了避免和端口号等产生混乱,IPv6地址必须被放到方括号

内。

例子:
Target[IPv6test]: 2:public@[2001:760:4::]:6161::4

-----------------
外部监控脚本的使用

如果你想监控的设备之类的对象没有通过snmp提供数据,你可以使用一些外部的程序来进行数据收集。
外部的命令必须返回4个输出用的lines:

line1
第一个变量一般情况下是指‘流入的字节数’

line2
第二个变量一般情况下是指‘流出的字节数’

line3
字符串型变量,提供监控目标的运行时间

line4
字符串型变量,提供监控目标的名字

依据你的脚本返回的数据的类型,你可能会在Options关键词上使用‘gauge’或者‘absolute ’。

例子:
Target[myrouter]: `/usr/local/bin/df2mrtg /dev/dsk/c0t2d0s0`

注意在命令两头使用的是(`)而不是(').
如果你想在命令名中使用(`),这是可以的,但是需要使用反斜线转义。
如果你的脚本不返回任何数据但是也不想让mrtg对无效的数据给出任何警告,它可以返回‘UNKNOWN’数据,而不是返回数字

。注意,rrdtool能很好的处理unknown数据。

----------------- 11:13 2008-12-29 ----------------

监控多个目标

 

你也可以对几个监控目标的监控指标使用数学进行计算。Perl解释器能理解的计算方法都可以使用。我们可以计算ISDN链接

的两个B通道使用,或者计算服务器上硬盘空间的使用率。

例子:
Target[myrouter]: 2:public@wellfleetA + 1:public@wellfleetA

Target[myrouter]: .1.3.6.1.4.1.999.1&.1.3.6.1.4.1.999.2:public@mydevice /
     .1.3.6.1.4.1.999.3&.1.3.6.1.4.1.999.4:public@mydevice * 100
注意:在表达式中,每个监控目标定义的两边都必须有空格。监控目标定义本身不能有空格,除非在接口描述和接口名称上

,在这些地方,可以使用反斜线进行转义。
MRTG自动的对表达式的结果进行取整,除非使用RRDTool日志格式,并且使用gauge选项。在内部MRTG使用Perl的

Math::BigFloat package来计算,精度是40比特。在极端情况下,使用64bit的整数,表达式的结果将会是精确的。

 

-------------------------
SNMP查询优化

MRTG对自己的SNMP查询进行了优化。如果在一个配置文件中,某个监控目标出现了多次,在一轮数据查询中,MRTG对一个目

标的查询只进行一次,对每一个同样的目标都使用这批数据。对不同监控目标的识别只基于简单的字符串匹配,而不是进一

步的语法分析。

例子:
Target[Targ1]: 1:public@CiscoA
Target[Targ2]: 2:public@CiscoA
Target[Targ3]: 1:public@CiscoA + 2:public@CiscoA
Target[Targ4]: 1:public@CISCOA

上面的例子会产生三个SNMP查询。数据分别来自1:public@CiscoA、2:public@CiscoA,这两个监控目标分别只被查询一次,并

用于Targ1、Targ2、Targ3。Targ4会对1:public@CISCOA监控目标再一次进行查询,因为字符串和1:public@CiscoA不同。

 

---------------
最大字节数

监控的两个变量允许达到的最大值。对于监控路由器来说,正常情况下就是指某个接口每秒能承载的字节数。
如果查询得到的值比MaxBytes大,那么它会被忽略。请进一步参考AbsMax获取信息。MaxBytes的值也被用于在绘图时计算Y的

范围(参考Unscaled一节)。

因为大多数链接的带宽单位都是bits/s,你需要用最大带宽除以8,为了能计算每秒的字节数。这对于实时正确的显示信息是

非常重要的。T1 = 193000, 56K = 7000, 10 MB Ethernet = 1250000, 100 MB Ethernet = 12500000。MaxBytes的值被mrtg

用于决定从路由器得到的值是否有效。

如果你需要两个不同的MaxBytes来测量两个不同的变量,你可以使用MaxBytes1和MaxBytes2来代替MaxBytes。

例子:

MaxBytes[myrouter]: 1250000

 

---------------
Title

生成的HTML页面的标题。

例子:
Title[myrouter]: Traffic Analysis for Our Nice Company

 

 

========11:23 2008-12-30========
可选监控目标配置选项

---------------
PageTop

指定附加到HTML页面的顶部的内容。只要第一列为空,你可以写好几行。注意这些行都会出现在第一行。如果你想换行,请使用‘\n’。

例子:

PageTop[myrouter]:

Traffic Analysis for ETZ C95.1


   Our Campus Backbone runs over an FDDI line\n
   with a maximum transfer rate of 12.5 megabytes per
   Second.

----------------
RouterUPtime

如果你想要计算多个接口的带宽使用你也许不能在页面上显示路由器的运行时间和名称。
如果这些接口都在同一个路由器上,并且需要显示运行时间和名称,那么你不得不使用RouterUptime关键词来指定它的‘community’和IP地址。
如果你想使用OID来指定路由器的运行时间,参考下面的相应实例。

例子:

Target[kacisco.comp.edu]: 1:public@194.64.66.250 + 2:public@194.64.66.250
RouterUptime[kacisco.comp.edu]:

RouterUptime[kacisco.comp.edu]: hrSystemUptime.0:public@194.64.66.250

-----------------
RouterName

如果默认的路由器名字不正确或者没有,你可以使用RouterName从相同/不同的主机获取指定的OID。

一个实例是:在BayTechDS72上不论你怎么指定UnitID,sysName总是显示“ds72”。UnitID存放1.3.6.1.4.1.4779.1.1.3.0,这样我们可以让MRTG显示它而不是sysName。

例子:
RouterName[kacisco.comp.edu]: 1.3.6.1.4.1.4779.1.1.3.0

也可以在另一台主机上指定另一个OID:
RouterName[kacisco.comp.edu]: 1.3.6.1.4.1.4779.1.1.3.0:public@194.64.66.251

-----------------
MaxBytes1
和MaxBytes一样, 为监控的变量1指定.

MaxBytes2
和MaxBytes一样, 为监控的变量2指定.

-----------------
IPv4Only

许多的IPv6路由器目前还不支持基于IPv6的SNMP,并且必须使用IPv4来监控。当和监控目标通讯的时候,即使启用了IPv6,IPv4Only选项也会强制使用IPv4。当监控目标是同时使用IPv4和IPv6地址的主

机的时候;没有IPv4Only选项,如果IPv6启用,监控将不能正常工作。

如果设置为no(默认值),mrtg将会使用IPv6,除非监控目标没有设置IPv6地址,这样就会使用IPv4。如果设置为yes,mrtg就只会使用IPv4。

注意如果这个选项被设置为yes,但是监控目标没有IPv4地址,和监控目标的通讯会失败。

如果IPv6选项没有启用,这个选项不回产生影响。

例子:

Target[v4onlyrouter_1]: 1:public@v4onlyrouter
IPv4Only[v4onlyrouter_1]: Yes

 

=============
SnmpOptions(v3)

SNMPv3需要设置大量的选项。这是一个每个监控目标都可以设置的参数,它允许访问SNMPv3的用户安全模式。选项的语法使

用列表如下。

-------------
安全模式

SNMPv3有3种安全模式,在被监控的设备上进行定义。例如:在Cisco路由器上安全模式是由snmp-server组全局配置命令进行

配置的。

--------------
NoAuthNoPriv

既没有身份验证也没有私钥的定义。在这种模式下只需要用户名称的选项。

例子:
SnmpOptions[myrouter]: username=>'user1'

--------------
AuthNoPriv
使用用户名和口令。口令被snmpkey程序进行散列计算,或者在选项ContextEngineID中使用明文进行传送。

例子:
SnmpOptions[myrouter]: username=>'user1',authpassword=>'example',
   contextengineid=>'80000001110000004000000'

---------------
priv

身份验证和密钥都被定义。默认的私钥协议是DES。
例子:SnmpOptions[myrouter]: authkey=>'0x1e93ab5a396e2af234c8920e61cfe2028072c0e2',

authprotocol=>'sha',privprotocol=>'des',username=>'user1', privkey=>'0x498d74940c5872ed387201d74b9b25e2'

=========
snmp 选项
下面的选项关键词都可以被支持:

----------------
username
与用户安全模式有关的用户名。

----------------
contextname
一个SNMP代理可以定义多个context。这个关键词允许它们被获取。

----------------
contextengineid
一个唯一的24字节的字符串,用于识别snmp代理。

-----------------
authpassword
定义在AuthNoPriv或者Priv安全模式下的用户口令。

----------------
authkey
与明文口令的md5或者sha散列计算有关,与engineid一同使用。使用snmpkey命令来生成这个散列(hash),或者在脚本中使

用Net::SNMP::Security::USM得到.

----------------
authprotocol{sha|md5}
在SNMP客户端定义的散列算法。默认是md5。

----------------
privpassword
在Priv模式中对snmp数据包进行加密的明文密钥,它是事先设置的共享的.

----------------
privkey
明文预置密钥的散列,和engineid同用.使用snmpkey命令来生成这个散列(hash),或者在脚本中使用

Net::SNMP::Security::USM得到.

--------------------
privprotocol {des|3desede|aescfb128|aescfb192|aescfb256}
指定snmp代理使用的加密方法,默认是des.

-----------------10:36 2008-12-31
PageFoot

在这里指定添加到生成HTML页面的底部的内容.只要第一列是空的,你可以写很多行内容.注意它们将会显示成一行.如果你想

换行请使用'\n'.这些内容会添加在 标签前面.

例子:

PageFoot[myrouter]: Contact Peter
if you have questions regarding this page

------------------
AddHead

作用类似PageTop,但是内容添加在之间.
例子:
AddHead[myrouter]:

---------------------
BodyTag

这个选项让你对自己页面的进行定制.

例子:
BodyTag[myrouter]:                       BACKGROUND="/stats/images/bg.neo2.gif">

---------------------
AbsMax

如果你正在监视一个链路,它能处理比MaxBytes更大的量.比如使用压缩技术的链路或者帧中继链路,你可以使用这个参数来指

定一个曾经达到的最大绝对值.这是为了挑出那些路由器返回的不太真实的值.如果你不设置它,那么超过MaxBytes的值会被忽

略.

例子:
AbsMax[myrouter]: 2500000

----------------------
Unscaled

默认情况下,每个图都会被绘制,即使它比MaxBytes小很多.使用Unscaled你可以对其进行控制.它的参数是一个字符串,包含一

些字符:d=day w=week m=month y=year.用来控制哪些图不被绘制.还有一个特殊的情况,把它设置为n,就是none.如果你想覆

盖全局设置,这会有所帮助.下面的例子中,月和年的图被取消绘制.

例子:
Unscaled[myrouter]: ym


------------------------
WithPeak

默认情况下,图像中只包含平均值-一般情况下是流入流出的速率.下面的选项指示mrtg绘制5分钟内的峰值,在周/月和年的图

像中.在例子中,我们让图像既显示平均值,也显示月和年的峰值.

例子:
WithPeak[myrouter]: ym

(续)

-------------------------11:27 2009-01-04-------------------------
suppress

默认情况下,mrtg生成四个图像.使用这个选项,你可以禁止生成指定的图像.这个选项的参数和上面两个类似.在下面的例子

中,我们禁止生成"年"的图像因为这个图像在开始的时候基本是空的.

例子:
Suppress[myrouter]: y

--------------------------
Extension:

默认情况下,mrtg生成的文件的后缀是.html.使用这个参数你可以让mrtg来使用不同的后缀.例如,你可以设置后缀为php3,然

后你将能够在输出中包含有PHP标签(这对于从数据库中获取路由器的名字是很有用的).

---------------------
Directory

默认情况下,mrtg把生成的文件(包括Gif,html,还有日志文件等等)都放置在WorkDir中.

如果Directory选项被指定,这些文件将会被放置到WorkDir下的目录中去,也可能是在Log-、Image-或HtmlDir中的目录中去。

例如在下面的例子中,监控的路由器的文件被放置到/usr/tardis/pub/www/stats/mrtg/myrouter/中.)

目录必须是存在的,mrtg不会创建目录.

例子:
WorkDir: /usr/tardis/pub/www/stats/mrtg
Directory[myrouter]: myrouter

注意:这里的路径是相对路径,如果不对,将会出现意想不到的问题.

--------------------------
Clonedirectory

如果Directory选项被设置,这个参数将使得mrtg吧Directory中的所有文件都复制到CloneDirectory中去.
和上面的参数一样,也要求目录是已经存在的,mrtg不会生成目录.

例子:
WorkDir: /usr/tardis/pub/www/stats/mrtg
Directory[myrouter]: myrouter
Clonedirectory[myrouter]: myclonedirectory

注意:这个参数必须是相对路径,否则会出现意外.

------------------------------
XSize and YSize

默认情况下,mrtg图像是100*400像素.在下面的例子中,我们生成了一个几乎正方形的图像.

注意:XSize的值必须在20到600之间,YSize必须大于20.

例子:
XSize[myrouter]: 300
YSize[myrouter]: 300

--------------------------------
XZoom and YZoom

如果你想要图像的像素变大,你可以对它们进行"缩放".

例子:
XZoom[myrouter]: 2.0
YZoom[myrouter]: 2.0

-------------------------------
XScale and YScale

If you want your graphs to be actually scaled use XScale and YScale.注意:如果使用这两个参数,坦率的说,生成的图

像可能会很难看,欢迎大家解决这个bug.

例子:
XScale[myrouter]: 1.5
YScale[myrouter]: 1.5

---------------------------------
YTics and YTicsFactor

如果你想在图像上显示超过4条线,请使用YTics.如果你想对Y轴上的数据进行缩放,使用 YTicsFactor.默认情况下,YTics值为

4,YTicsFactor是1.0。

例子:
架设你处理的值位于0到700之间。你想划7条线,想在Y轴上显示0、1、2、3、4、5、6、7而不是100、200、300、400、500、

600、700。你可以这样写:
YTics[myrouter]: 7
YTicsFactor[myrouter]: 0.01

 

 

-------------------
Factor

如果你想让在图像下面的数字都乘以一个常数,是用这个参数定义它。

例子:
Factor[as400]: 4096

-------------------
Step

把默认的间隔5*60s变成其它的什么东西(没有做过很多的测试,慎用...)

例子:
Step[myrouter]: 60

---------------------
PNGTitle

当你使用rateup来生成图像的时候,这个选项会把指定的标题显示在图像上。

例子:
PNGTitle[myrouter]: WAN Link UK-US

-----------------------
Opentions
这个选项关键词允许你设置一些布尔变量:

--------
growright
图像默认情况下从左边生成。这个选项会让图像从右边生成。

-----------
bits
指定所有的被监控变量的值都乘以8(比如显示结果为bits,而不是Bytes)。这也会影响到被监控对象的厂商默认值

(‘factory default’)。

----------
perminute
All the monitored variable values are multiplied by 60 (i.e. shown in units per minute instead of units per

second) in case of small values more accurate graphs are displayed. It also affects the 'factory default'

labeling and units for the given target.

所有监控变量的值都乘以60(即: 用分钟为单位而不是秒),这用在某些显示小的值会更准确图像中。这也会影响到工厂预

置的值和单位。

----------
perhour
All the monitored variable values are multiplied by 3600 (i.e. shown in units per hour instead of units per

second) in case of small values more accurate graphs are displayed. It also affects the 'factory default'

labeling and units for the given target.
所有监控变量的值都乘以3600(即: 用小时为单位而不是分),这用在某些显示小的值会更准确图像中。这也会影响到工厂

预置的值和单位。

-------------
noinfo
禁止在生成的页面中显示运行时间和设备名称。

------------
nopercent
不显示使用百分比。

-------------
transparent
使得生成的gif图像的背景透明。

-----------
integer
使得在图像下方的数据为整数,不使用逗点。

------------
dorelpercent
这个选项在图像中显示流入流量和流出流量的相对百分比。注意:这个百分比的范围是0-100%。因此如果流入流量比流出流

量大,那么会显示100%。如果你不肯定流入流量一定小于流出流量,请不要使用这个参数。注意:如果你还使用了Colours

选项,你需要指定第五对 colour-name、 colour-value。

------------
avgpeak
有的ISP使用平均峰值来让用户交费。这个选项让MRTG在每个图像上显示平均峰值。The value is built by averaging the

max 5 minute traffic average for each 'step' shown in the graph. For the Weekly graph this means that it

builds the average of all 2 hour intervals 5 minute peak values. (Confused? Thought so!我也很晕,没看懂~~~)

-------------
gauge
使用这个选项,mrtg会把收集到的值作为当前状态值,而不是一个不断增加的计数器。这对于监控硬盘空间、cpu负载、温度

等等是很有用的。
如果没有指定‘gauge’或者‘absolute’,MRTG会吧变量当成计数器来对待,根据目前的值,还有先前的值及这两个值之间

的间隔来进行计算。

--------------
absolute
这个选项用来应对这样的数据变量,每当它们被读取后,就会重新置0。这意味着rateup不用对从数据源获取的当前值和上一

个值进行某些处理。但是获取的值还是会除以两次取值的时间间隔,这也是和‘gauge’选项的区别。这对于外部数据的收集

很有用。

----------------
derive
如果你正在使用rrdtool做日志或者绘图,你可以使用第三方数据源. 除了不是全时间运行外,Derive 就象一个计数器. 在

一些值的变化需要被绘制图像的情况下,这个选项是很有用的。

--------------
unknaszero
unknow的数据不再取前一个状态的值,而是当作0来处理。但是请注意,因为在图像中间位置的平线比一个取值0的平线更显

眼。

---------------
withzeroes
正常情况下,当计算平均值的时候,我们忽略取到的0值。如果不想这样,请使用这个选项。

---------------9:56 2009-01-06---------------
noborder
如果你使用的是rateup来记录数据,mrtg将能生成图像。正常情况下,这些图像有一个阴影边框。如果你不想生成边框,启用这个选项。但是如果你没有使用rateup,那么将不会有任何效果。

---------------
noarrow
和上面的选项一样,这个选项也只是影响rateup生成的图像。正常情况下,rateup生成的图像有一个箭头表明数据方向。如果你不想生成箭头,那么可以使用这个选项。

---------------
noi
如果使用rateup来生成图像,你可以使用这个选项来让rateup不生成“I”(in)或者说是第一个变量的图形。这也会移除这个变量在MRTG生成的HTML页面中的相关条目,并且会移除这个变量的peak(峰

值),即使peak被启用了。这个选项允许你隐藏这个数据,当你只是想绘制一个变量的时候会很有用。这个选项没有破坏性,任何被接收的数据都会继续被记录,只不过是不显示。

---------------
noo
和上面的选项一样,只不过是对‘O’(out)或者说第二个变量起作用。

---------------
nobanner
当使用rateup生成图像的时候,这个选项使得MRTG不再吧MRTG的banner添加到HTML页面中去。

---------------
nolegend
当使用rateup生成图像的时候,这个选项将使得mrtg停止在HTML页面底部生成图例说明。

---------------
printrouter
当使用rateup生成图像的时候,这个选项将在它生成的图像上添加路由器的名字。如果设置了PNGTitle,这个选项将会被覆盖。

---------------
pngdate
当使用rateup生成图像的时候,这个选项将在生成的图像上添加时间戳,如果设置了‘timezone’,还会包括时区。

---------------
logscale
这个选项使rateup在Y轴显示数据的时候使用对数。这将使得正常的流量占据垂直范围的大多数区域,然而峰值还会全部显示出来。
logscale将显示所有可用的数据并生成好看的图像。人们通常认为对数形式的图像不直观,并且因此不好看懂。

---------------
expscale
这个选项使得rateup在Y轴上使用指数形式显示数据。这样将会在图像的顶部突出显示小的变化;在图像的顶部如果因为小的数值引起波动的话,这会很有用,比如电压变化。

expscale作用重点和logscale相反。(这样理解的话,logscale重点突出中间区域,expscale重点是曲线顶部。)

---------------
secondmean
The secondmean option sets the maximum value on the graph to the mean of the data greater than the mean of all data(绕嘴,翻不出,也理解不了)。这个选项重点更多的强调典型数据

,而裁剪峰值数据。

这个选项将会给出更直观的线性数据,但是在极少的情况下可能会生成没有意义的或高或低的曲线(特别是当数据与实际平均值误差较大的时候。)

如果监控目标同时包括logscale和secondmean,secondmean将优先起作用。

例子:
Options[myrouter]: growright, bits

 

---------------8:53 2009-01-09---------------
kilo
使用这个选项来修改倍数值。默认是1000。这个选项主要是为了应对特殊的情况,比如:1kB=1024B,1MB=1024KB等等。
例子:
kilo[myrouter]: 1024
--------------
kMG
修改默认的乘数前缀(,k,M,G,T,P)。在标签ShortLegend中定义的只是基本的单位。格式:使用逗号分隔各个前缀。连续两个逗号或者在开始、末尾有逗号意味着在这里没有前缀。如果你不想使用前缀,
那么只放两个连续的逗号即可。如果你想跳过一个数量级,请使用‘-’。
例子:nm/s来作速度单位(纳米/s)但显示为nm/h。
ShortLegend[myrouter]: m/h
kMG[myrouter]: n,u,m,,k,M,G,T,P
options[myrouter]: perhour
(个人理解不太清楚,请对照原文理解。)
Colours
这个选项允许你覆盖默认的颜色搭配。注意:所需要的4个颜色都必须被指定。颜色的名字(下面的‘colourx’)就是范例中的形式,颜色使用RGB值指定,用于图像的绘制和页面显示。
格式: Col1#RRGGBB,Col2#RRGGBB,Col3#RRGGBB,Col4#RRGGBB
重要提示:如果你使用了dorelpercent选项,需要指定第五个颜色名称及其RGB值。
Colour1
第一个变量的颜色,正常情况下是输入流量。
Colour2
第二个变量的颜色,一般是输出流量。
Colour3
第一个变量最大值,输入流量。
Colour4
第二个变量最大值,输出流量。
RRGGBB
两个一组,分别表示红色,绿色,蓝色。
例子:
Colours[myrouter]: GREEN#00eb0c,BLUE#1000ff,DARK GREEN#006600,VIOLET#ff00ff
----------------------
BackGround
使用这个选项,你能配置生成的HTML页面的背景色。
例子:
Background[myrouter]: #a0a0a0a
------------------------
YLegend, ShortLegend, Legend[1234]
以下关键词可以允许你为图像和页面中的相应输出指定不同的颜色。
----------
YLegend
图像Y轴的名字。注意如果名字对于图像太长会被忽略。
----------
ShortLegend
图像中Max,Average和Current值使用的计量单位。
Legend[1234IO]
各个实例的名字。
例子:
   YLegend[myrouter]: Bits per Second
   ShortLegend[myrouter]: b/s
   Legend1[myrouter]: Incoming Traffic in Bits per Second
   Legend2[myrouter]: Outgoing Traffic in Bits per Second
   Legend3[myrouter]: Maximal 5 Minute Incoming Traffic
   Legend4[myrouter]: Maximal 5 Minute Outgoing Traffic
   LegendI[myrouter]:  In:
   LegendO[myrouter]:  Out:
注意:如果LegendI或者LegendO被设置为空:
LegendO[myrouter]:
图像下侧相应的内容将不会被输出。
-------------------
TimeZone
生活在一个国际化的世界中,你可能想生成不同的时区的图像。这个选项用来达到这个目的。在某些操作系统中,比如Solaris,会对localtime产生调用来获取相应的时区的时间。
例子:
Timezone[myrouter]: Japan
这个时区是标准的时区,比如:Japan, Hongkong, GMT, GMT+1 等等
----------------9:00 2009-02-02 Happy new year!-------------
Weekformat
默认情况下,mrtg(实际上是 rateup)使用strftime(3)'%V'选项来格式化在每月统计图中的星期几输出.在不同的系统中对于格式选项的解释可能会有不同.如果你发现对于星期格式的输出是错误的,并
且你的系统的strftime(3)支持的话,可以尝试另一种格式化选项.POSIX '%V'选项符合广泛使用的ISO 8601星期输出格式标准.星期格式使用一个字符来指定,W、V或者U。
unix版本的rateup使用的是libc版本的strftime。在windows中本地的strftime实现不支持%V。于是我们使用了另一个不同版本的strftime,它支持%V。
例子:
Weekformat[myrouter]: W
---------------------------
RRDRowCount
这将影响到新的rrd文件的创建。默认情况下,rrds保存一天的高解析度数据值。(加上保存一周的30分钟样本数据,两个月的2小时样本数据,两年的每天样本数据)。使用这个关键词,你能修改数据
样本的保存笔数,当新文件被创建的时候会起作用。注意你必须考虑采样的间隔。
例子:
RRDRowCount[myrouter]: 1600
------------------------------
RRDHWRRAs
正常情况下,mrtg 创建的RRDs只包含从每个监控目标收集的数据。使用这个选项,你可以启用基于Holt-Winters 的异常行为探测模块。RRDHWRRAs 选项指定了Holt-Winters的RRAs,这在rrdcreate的手
册页中有描述。
这一这个设置将仅仅影响新创建的RRDs(以监控目标为单位)。
例子:
RRDHWRRAs[myrouter]: RRA:HWPREDICT:1440:0.1:0.0035:288
-----------------------------
TimeStrPos
这定义了时间戳字符串在图像中的放置位置。可以用的值有RU、LU、RL、LL(分别代表右上角、左上角、右下角、左下角)还有NO(没有时间戳)。默认情况下,在图像上没有时间戳。
例子:
TimeStrPos[myrouter]: RU
-----------------------------
TimeStrFmt
使用这个选项可以指定放置到图像中的时间戳的格式(如果启用了TimeStrPos关键词)。指定的字符串将会被strftime()函数使用--参考strftime的相关文档来获取在你的系统中可以使用的定义格式。
默认格式为:%Y-%m-%d %H:%M
例子:
TimeStrFmt[myrouter]: %H:%M:%S

 

-------------------------------
阀值检查

通过此项功能,mrtg能检测到阀值相关的问题,并能调用外部的脚本来处理这些问题(比如发送邮件或

者一个页面给管理员。)

阀值检查是通过下面的参数进行配置的:

-----------------
ThreshDir(GLOBAL)

使用这个参数来指定一个可写的目录,当阀值被触及的时候,MRTG将发出警告。

例子:
ThreshDir: /var/mrtg/thresh

------------------
ThreshHyst(GLOBAL)

如果threshold 被打破,并且你也定义了threshdir,那么mrtg将发送email,但是我们需要避免一种情

况,就是broken和unbroken状态切换很快,造成接连发送,那么我们在离阀值一定范围内只发送一次

unbroken消息。使用ThreshHyst配置变量你将能够定义这个值。

比如定义为5%:
ThreshHyst: 0.05

--------------------
ThreshMailServer(GLOBAL)

SMTP服务器地址,用于接收阀值broken和unbroken状态变化的邮件。

-------------------
ThreshMailSender(GLOBAL)

阀值邮件中发送者的邮件地址。
例子:
ThreshMailSender:

--------------------
ThreshMailAddress (PER TARGET)

Threshhold相关的邮件地址。这将在mailserver被配置的情况下产生作用。

例子:
ThreshMailAddress[_]:
ThreshMailAddress[router]:

这将使得所有的监控对象在需要的时候发送邮件给指定的地址,但是下面名称为router的监控对象被定

义为不会发送。

---------------------
ThreshMinI(PER TARGET)

这是输入变量可接受的最小值。如果获取的值比这个指定的值小,那么在ThreshProgI中指定的程序就会

运行,并发送一封邮件到ThreshMailAddress(如果被指定了的话),如果这个值被使用%指定,那么指

的是相对于MaxBytes的值。

------------------------
ThreshMaxI(PER TARGET)
同上面的选项类似,但针对的情况是取得的值比ThreshMaxI高。

-----------------------
ThreshDesc(PER TARGET)
在下面设置的程序被调用前,这个选项的值将被赋予环境变量THRESH_DESC。运行的程序可以使用这个变

量来生成更友好的输出。

-----------------------
ThreshProgI (PER TARGET)
这个选项定义当ThreshMinI 或者 ThreshMaxI 被触发时需要运行的程序。MRTG传递了三个变量:

$router变量,触发阀值,当前的参数值。

------------------------
ThreshProgOKI(PER TARGET)

这定义了当参数的值处于OK状态下需要运行的程序(它的状态是相对ThreshMinI和ThreshMaxI而言的)

,但是如果前面的程序运行了,状态就是不OK的了--基于在ThreshDir中发现的文件来说的。MRTG传递3

个变量给它:$router,阀值处于unbroken状态的值,还有当前参数的值.

------------------------
ThreshMinO, ThreshMaxO, ThreshProgO, and ThreshProgOKO
这些选项和上面提到的一系列选项相同,只不过是针对输出变量的.

-------------------------------------------

 

--------------------10:15 2009-02-03-------------------
SetEnv

当在你的配置文件中调用阀值相关脚本时,你可能需要传递一些数据给脚本。这可以使用SetEnv配置选项来实现。注意引号是强制使用的。这不能用于外部的脚本。它也不能为

每个监控对象设置环境变量。

例子:
Example:
SetEnv[myrouter]: EMAIL=""
                    HOST=""

-----------------
HW系列阀值检查选项
当你使用基于HW RRAs日志的rrd时。你就能为阀值报警使用内置于FAILURES RRA的 confidence bounds violations 。

前面的所有的threshold选项都有对应的Hold-Winters选项:

ThreshMailAddress -> HWThreshMailAddress
ThreshMinI        -> HWThreshMinI
...

用于threshold检查的全局变量都是共享的,除了:
ThreshHyst        -> HWThreshHyst

HWThreshDesc设置HWTHRESH_DESC变量。

 

----------------------------------------------------------
监控对象的默认值

--------------------
前缀和后缀

你可以定义一个监控对象名称为'^'.你为这个监控对象定义的每个关键词也都会为下面的每个监控对象预先自动生成。同样的也可以定义一个名字为'$'的监控对象,不过它的文

字是附加性质的.

注意,在预先添加的文本和关键词的值之间插入了一个空格,对于附加的文本也一样.如果关键词的值是文本,这可以很好的工作,但是对于其他类型的关键词就不是很有用了.请看

下面"default"监控对象的描述.

在这个例子中,此配置文件中定义的每个监控对象,MRTG都会为它们的页面生成相同的头部和联系人信息.

例子:
PageTop[^]:

NoWhere Unis Traffic Stats



PageTop[$]: Contact Peter Norton if you have any questions

如果想要移除这些预先添加和附加的值,可以指定一个空值:

PageTop[^]:
PageTop[$]:

--------------------
NoSpaceChar

对于预加和附加的值,正常情况下与本地的值之间会有一个空格.有的时候这是不必要的.你可以使用全局选项NoSpaceChar定义一个字符,当你在定义'^','$'监控对象的时候,在末

尾加上这个字符,就可以不再生成空格.

例子:
NoSpaceChar: ~
Target[^]: 1.3.6.1.4.1.482.50.2.4.20.0&1.3.6.1.4.1.482.50.2.4.21.0:get@~
Target[a]: a.tolna.net
Target[b]: b.tolna.net
Target[c]: c.tolna.net
Target[d]: d.tolna.net

上面定义的特殊字符是" ~ ".


-----------------------
默认值
如果指定的监控对象的名字是"_",那么就为关键词指定了默认值.如果缺少明确指定的关键词值,那么预加和附加的关键词的值就会使用默认值.

例子:
YSize[_]: 150
Options[_]: growright,bits,nopercent
WithPeak[_]: ymw
Suppress[_]: y
MaxBytes[_]: 1250000

移除默认值,返回"程序默认值",定义一个空值即可:

YLegend[_]:

在配置文件中default/prepend/append的值可能会有这样几种情况出现.最新的设置会替代前面的设置,从而影响配置文件中后面的部分.对关键词/监控对象起作用的

default/prepend/append的值,是在监控对象第一次出现时开始起作用的.

例子:
MaxBytes[_]: 1250000
Target[myrouter.somplace.edu.2]: 2:public@myrouter.somplace.edu
MaxBytes[_]: 8000
Title[myrouter.somplace.edu.2]: Traffic Analysis for myrouter.somplace.edu IF 2

上面的例子中对于myrouter.someplace.edu.2这个监控对象来说,MaxBytes的默认值是1250000,从监控对象第一次出现开始起作用.

(上面这些选项我很少用,翻译的可能会有很多问题,请大家结合原手册对照看,谢谢!)

 

---------------------------------------------------------
命令行选项

--user username and --group groupname
以给定的用户组/用户名运行.(只对Unix起作用)

--lock-file filename
使用一个指定的锁定文件名(默认使用"配置文件名_l").

--confcache-file filename
使用一个指定的配置缓存文件名(默认使用"配置文件名.ok")

--logging filename|eventlog
如果设置了一个可写的文件名,那么所有的mrtg的输出(警告,debug信息,报错)都会写入指定的文件.如果你使用的是win32平台,你可以指定eventlog而不是一个文件名,这样所有

的信息都会写入windows日志.

注意:mrtg没有自己带"message DLL".这将对windows的事件日志产生副作用,日志中的每条相关记录都将提示mrtg没有message dll.如果你去mrtg的下载区,你会发现一个mrtg-

message-dll.zip,日志中提到的message dll就在里面.

--daemon
将mrtg放入后台运行.这和配置文件中的同样选项作用相同,但是这个参数要进行权限设置(因为/var/run只对root可写.)

--fhs
配置所有的mrtg路径符合FHS规定;(参考)

--check
只检查配置文件的错误,不做其它操作.

--pid-file=s
为mrtg作为daemon运行定义pid文件的名字和路径.

--debug=s
启用debug模式的选项.由逗号分隔的debug变量值组成:

cfg - watch the config file reading
dir - directory mangeling
base - basic program flow
tarp - target parser
snpo - snmp polling
coca - confcache operations
fork - forking view
time - some timing info
log - logging of data via rateup or rrdtool
eval - print eval strings before evaluting them
prof - add hires timing info the rrd calls

例子:
--debug="cfg,snpo"


------------------------------------------------------
程序退出返回码

返回码0表示所有的监控对象都处理成功.通常来说,比0大的返回值都意味着不可恢复的问题出现.一个例外是返回码91,它表示至少有一个监控对象处理成功.部分返回码如下:

0: 所有的监控对象处理成功(All targets sucessful)

2: 配置错误--配置文件不能读取,或者致命错误,等等 (Config error --can't read, fatal error in config, etc)
17: 其它的MRTG进程正在处理配置文件--(Another MRTG process is processing config)

91: 至少一个监控对象处理成功--At least one target sucessful
92: 没有监控对象处理成功--No targets were sucessful

--------------------------------------------------------

例子:

----------------------
最小配置文件mrtg.cfg

WorkDir: /usr/tardis/pub/www/stats/mrtg
Target[r1]: 2:public@myrouter.somplace.edu
MaxBytes[r1]: 8000
Title[r1]: Traffic Analysis ISDN
PageTop[r1]:

Stats for our ISDN Line

----------------------
有几个路由器的配置文件

WorkDir: /usr/tardis/pub/www/stats/mrtg
Title[^]: Traffic Analysis for
PageTop[^]:

Stats for
PageTop[$]: Contact The Chief if you notice anybody

MaxBytes[_]: 8000
Options[_]: growright

Title[isdn]: our ISDN Line
PageTop[isdn]: our ISDN Line


Target[isdn]: 2:public@router.somplace.edu

Title[backb]: our Campus Backbone
PageTop[backb]: our Campus Backbone
Target[backb]: 1:public@router.somplace.edu
MaxBytes[backb]: 1250000

# the following line removes the default prepend value
# defined above

Title[^]:

Title[isdn2]: Traffic for the Backup ISDN Line
PageTop[isdn2]: our ISDN Line
Target[isdn2]: 3:public@router.somplace.edu

阅读(12969) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~