- 論壇徽章:
- 0
|
本帖最后由 ioerr 于 2015-01-16 15:27 編輯
原文在我的博客里面http://hi.baidu.com/ioerr/blog/item/0000ee24c5332a064c088d86.html.(博客已經(jīng)沒(méi)了,被百度廢了2015.1.16)
難免錯(cuò)誤,估計(jì)還不少,大家共同訂正吧.
本來(lái)打算年前搞定,一直沒(méi)有抽出時(shí)間,剛上班,還沒(méi)有忙起來(lái),趕緊弄完,就算給大家送份遲到的新年禮物吧。
雖然mrtg功能簡(jiǎn)單些,但是還是那句話,對(duì)于要求不高的用戶足夠了,配置簡(jiǎn)單,不像cacti,感覺(jué)配置比較復(fù)雜了。只要你好好看看手冊(cè),很多的功能mrtg也是有的,就是先天原因吧,有的實(shí)現(xiàn)起來(lái)似乎麻煩點(diǎn)。
最后給大家拜個(gè)晚年。
MRTG2.16.2配置參考手冊(cè)
MRTG運(yùn)行時(shí)的行為是由一個(gè)配置文件控制的。這個(gè)配置文件可以用cfgmaker生成。(請(qǐng)參考cfgmaker的手冊(cè))。但是更加詳細(xì)精巧的配置還是需要手工進(jìn)行的。
這篇文檔介紹了mrtg使用的所有配置選項(xiàng)。
語(yǔ)法
MRTG配置文件語(yǔ)法遵循一些簡(jiǎn)單的規(guī)則:
l 管檢測(cè)必須在一行的開(kāi)頭。
l 在一個(gè)關(guān)鍵詞行之后的以空格開(kāi)頭的每一行都是關(guān)鍵詞行的后繼行。
l 空行被忽略。
l 以#開(kāi)頭的行是注釋行。
l 你可以使用Include: file的形式把其它的文件導(dǎo)入配置文件。
例子:include: base-option.inc
如果被包含的文件被相對(duì)路徑指定,包括當(dāng)前目錄和包含主配置文件的目錄都會(huì)被搜索。
全局配置關(guān)鍵詞
WorkDir
WorkDir 指定日志文件和網(wǎng)頁(yè)文件的生成文件。
例子:
WorkDir: /usr/tardis/pub/www/stats/mrtg
可選全局關(guān)鍵詞
HtmlDir
HtmlDir指定html(或者shtml,這個(gè)會(huì)在以后被支持)生成的位置。
注意:WorkDir會(huì)覆蓋htmldir和imagedir、logdir的設(shè)置。
例子:
Htmldir:/www/mrtg/
ImageDir
ImageDir 指定存放生成的圖片的文件夾。這個(gè)文件夾應(yīng)該設(shè)置在html文件夾內(nèi)。
例子:
Imagedir:/www/mrtg/images
LogDir
LogDir 指定存放日志的文件夾.這不必放在htmldir文件夾內(nèi).
例子:
Logdir:/www/mrtg/logs
Forks( UNIX only)
在支持Fork的系統(tǒng)之中(例如UNIX),當(dāng)mrtg需要通過(guò)snmp獲取數(shù)據(jù)的時(shí)候,它能fork自己成為多個(gè)實(shí)例。
在高延遲或者存在大量設(shè)備的情況下,這能極大的提高效率。如果你的那臺(tái)交換機(jī)就在隔壁,那它可能不會(huì)提高你的查詢速度。
據(jù)我所知,NT不能fork,所以這項(xiàng)功能在NT中不能使用。
例子:
forks:4
EnableIPv6
當(dāng)把值設(shè)置為yes時(shí),如果相應(yīng)的庫(kù)文件存在(請(qǐng)參考mrtg-ipv6手冊(cè)頁(yè)),那么IPv6就可以啟用
了。這樣IPv6功能就啟用了,mrtg就能夠和基于IPv6的路由器及其它對(duì)象的snmp進(jìn)行通訊,它們
可能使用了IPv6來(lái)指定地址。
如果IPv6被啟用并且對(duì)象是一個(gè)主機(jī)名,mrtg將嘗試解析主機(jī)名為IPv6地址,并且如果失敗了,
再解析為IPv4地址。注意如果指定了IPv4地址或者設(shè)置了主機(jī)名,但是沒(méi)有設(shè)置IPv6地址,mrtg
將僅使用IPv4;mrtg如果使用IPv6通訊失敗,將不會(huì)使用IPv4。這是設(shè)計(jì)中實(shí)現(xiàn)的。
注意現(xiàn)在許多的路由器沒(méi)有支持基于IPv6的SNMP。這些路由器將使用IPv4Only選項(xiàng)。
IPv6默認(rèn)是關(guān)閉的。
例子:
EnableIpv6:yes
------------------------
EnableSnmpV3
當(dāng)這一項(xiàng)參數(shù)化設(shè)置為yes的時(shí)候,將使用Net::SNMP模塊替代SNMP_SESSION模塊來(lái)生成snmp請(qǐng)求
。如果snmpv3參數(shù)被設(shè)置了,這將允許使用SNMPv3。
SNMPv3默認(rèn)是關(guān)閉的。
例子:
EnableSnmpV3:yes
--------------------------
Refresh
瀏覽器應(yīng)該多長(zhǎng)時(shí)間重新加載頁(yè)面?如果沒(méi)有指定的話,默認(rèn)使300秒(5分鐘)。
例子:
Refresh:600
---------------------------
Interval
你多長(zhǎng)時(shí)間調(diào)用一次mrtg呢?默認(rèn)是5分鐘。如果頻率比較低的話,你應(yīng)該在這里指定。這將完成
兩個(gè)任務(wù):
生成的HTML頁(yè)面包含正確的關(guān)于間隔的信息...
在生成的HTML頁(yè)面中包含正確的META設(shè)置...
下面的例子我們讓mrtg每10分鐘運(yùn)行一次。如果你讓mrtg每5分鐘運(yùn)行一次,你可以注釋掉這一行。
例子:
Interval:10
注意:除非你使用rrdtool,你不要把間隔設(shè)置的小于5分鐘。如果你使用rrdtool,你可以用這樣
的格式來(lái)設(shè)置時(shí)間間隔
Interval:MM[SS]
甚至可以設(shè)置間隔為1秒。然而還是要注意,間隔的設(shè)置會(huì)影響rrdtool和mrtg對(duì)于數(shù)據(jù)庫(kù)的初始
化。如果以后你改變了間隔的設(shè)置,所有已經(jīng)存在的數(shù)據(jù)庫(kù)將保持初始化時(shí)候的解析度。也要注
意你的mrtg-rrd的 web前端是否支持這種設(shè)置。
------------------------------
MaxAge
MRTG非常的以來(lái)計(jì)算機(jī)的時(shí)間。如果時(shí)間設(shè)置有錯(cuò)誤,特別是比當(dāng)前時(shí)間快很多,會(huì)引起mrtg把日志文件中的數(shù)據(jù)當(dāng)成過(guò)期數(shù)據(jù)來(lái)處理。
為了避免這樣的情況發(fā)生,你可以對(duì)日志文件指定最大容忍時(shí)間來(lái)進(jìn)行“合理性檢查”,如果文件看上去很老了,mrtg先不會(huì)操作這個(gè)文件,而是發(fā)出抱怨(警告),給你一個(gè)機(jī)會(huì)來(lái)檢查原因。
例子:
MaxAge:7200
上面的例子中mrtg將不會(huì)更新過(guò)期兩小時(shí)的數(shù)據(jù)(7200秒)。
-----------------------------
WriteExpires
這個(gè)選項(xiàng)將使得mrtg為CERN和Apache(其中包含Expirations標(biāo)簽的)生成.meta文件。這些*.meta文件將會(huì)在與其它文件相同的目錄里面創(chuàng)建,為了能夠保證它正常運(yùn)行,你將需要在Apache.conf或者.htaccess文件設(shè)置“MetaDir.”和“MetaFiles on”。
注意:如果你運(yùn)行的是Apache-1.2或者更新版本,你能夠使用mod_expire來(lái)達(dá)到同樣的效果...請(qǐng)參考htaccess.txt。
例子:
WriteExpires:yes
-----------------------
NoMib2
正常情況下我們會(huì)查詢?cè)O(shè)備的“sysUptime”(運(yùn)行時(shí)間)和“sysName”(系統(tǒng)名稱)。但是一些設(shè)備沒(méi)有這些信息。如果你想避免mrtg生成相關(guān)警告,請(qǐng)?jiān)O(shè)置nomib2選項(xiàng)。
一個(gè)不提供基本的mib2屬性信息的例子是 Computer Associates - Unicenter TNG 代理。CA 除了使用它自己的代理外還依賴OS的SNMP代理來(lái)提供系統(tǒng)管理功能。
例子:
NoMib:yes
-----------------------
SingleRequest
一些SNMP實(shí)現(xiàn)不能支持一次查詢多個(gè)snmp變量。設(shè)置這個(gè)參數(shù)可以強(qiáng)迫mrtg每次只查詢一個(gè)變量。
例子:
SingleRequest:yes
----------------------
SnmpOptions
除了每個(gè)監(jiān)控對(duì)象的超時(shí)選項(xiàng)可設(shè)置外,你還能夠更詳細(xì)的配置snmpget操作。目前支持以下的選項(xiàng):
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
選項(xiàng)后面的值是默認(rèn)值。注意這些設(shè)置會(huì)覆蓋每個(gè)監(jiān)控對(duì)象的超時(shí)設(shè)置。
每個(gè)監(jiān)控對(duì)象的SnmpOptions[]將會(huì)覆蓋全局設(shè)置.這個(gè)關(guān)鍵詞主要是為了在SNMPv3中使用.
16bit的請(qǐng)求id是對(duì)SMC堡壘路由器進(jìn)行請(qǐng)求查詢的唯一方法.
例子:
SnmpOptions: retries => 2, only_ip_address_matching => 0
注意AS/400的snmp似乎不太配合mrtg,除非這樣設(shè)置:
SnmpOptions: lenient_source_port_matching => 1
--------------------
IconDir
如果你想把mrtg的圖標(biāo)保存在某個(gè)文件夾中,既不是工作目錄,也不是imageDir,那么使用這個(gè)選項(xiàng)來(lái)定義icon的目錄.
例子:
IconDir: /mrtgicons/
--------------------
LoadMIBs
加載指定的MIB文件并讓其中的OID可以用字符名字引用.為了獲得更好的效率,mrtg在WorkDir中維護(hù)一個(gè)MIB緩存.
例子:
LoadMIBs: /dept/net/mibs/netapp.mib,/usr/local/lib/ft100m.mib
------------------------
Language
使用這個(gè)選項(xiàng)來(lái)產(chǎn)生指定語(yǔ)言的結(jié)果(檢查翻譯目錄來(lái)查看你的mrtg支持多少種語(yǔ)言.在這個(gè)目錄中你還能找到一些說(shuō)明
,關(guān)于怎樣支持新的語(yǔ)言.)
目前支持下面幾種語(yǔ)言:
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
設(shè)置這個(gè)選項(xiàng)的值為rrdtool就啟用了rrdtool模式.在這種模式中,mrtg依靠rrdtool來(lái)做日志.請(qǐng)參考mrtg-rrd.
例子:
LogFormat:rrdtool
----------------------------
LibAdd
如果你使用了rrdtool模式并且你的rrdtool的perl模塊(RRDs.pm)不能被perl自身找到,你可以使用這個(gè)選項(xiàng)來(lái)提供相應(yīng)
的路徑.
例子:
LibAdd: /usr/local/rrdtool/lib/perl/
-----------------------------
PathAdd
如果rrdtool的可執(zhí)行部分在正常的" ATH"中不能被找到,你可以使用這個(gè)關(guān)鍵詞來(lái)給你的PATH增加一個(gè)適合的目錄.
例子:
PathAdd: /usr/local/rrdtool/bin/
-----------------------
RunAsDaemon
這個(gè)參數(shù)啟用daemon模式來(lái)運(yùn)行mrtg。守護(hù)模式就是指MRTG只運(yùn)行一次,而不是反復(fù)的運(yùn)行(因?yàn)樗鞘褂胏ron運(yùn)行的
。)這會(huì)節(jié)省計(jì)算資源的,因?yàn)橹辉陂_(kāi)始的時(shí)候?qū)ε渲梦募M(jìn)行一次加載和分析。
使用daemon模式,MRTG自己對(duì)時(shí)間間隔進(jìn)行控制。因此為“interval”選項(xiàng)設(shè)置一個(gè)合適的值是很重要的。
如果你想讓mrtg以某個(gè)特定的用戶和組來(lái)運(yùn)行(不推薦使用root身份運(yùn)行mrtg),那么在命令行運(yùn)行mrtg時(shí)請(qǐng)使用--
user和--group參數(shù)。
例子:
mrtg --user=mrtg_user --group=mrtg_group mrtg.cfg
也要注意:在daemon模式中,當(dāng)配置文件改變時(shí),為了使改變生效,重啟進(jìn)程是必要的。
在UNIX中,Daemon參數(shù)讓mrtg在檢查過(guò)配置文件后就進(jìn)入后臺(tái)運(yùn)行。在WindowsNT中,MRTG進(jìn)程將脫離控制臺(tái)運(yùn)行,但是
因?yàn)镹T/2000的shel會(huì)等待子進(jìn)程結(jié)束,所以你需要使用下面的命令來(lái)運(yùn)行:
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不脫離終端運(yùn)行.
------------------
ConversionCode
一些設(shè)備可能會(huì)生成非數(shù)字的值,但這些值如果能被轉(zhuǎn)換成數(shù)字,對(duì)于MRTG的圖像生成還是有用的.這個(gè)關(guān)鍵字指定了一個(gè)進(jìn)行轉(zhuǎn)換操作的Perl文件的路徑.在這個(gè)文件中包含一個(gè)或者多個(gè)Perl的子程序.每個(gè)子程序都必須接收一個(gè)single string變量并返回一個(gè)single numeric值.當(dāng)使用RRDtool的時(shí)候,會(huì)返回一個(gè)decemal值.當(dāng)某一個(gè)子程序的名字在后面的監(jiān)控目標(biāo)中指定的時(shí)候(參看后面內(nèi)容),MRTG將會(huì)為這個(gè)監(jiān)控目標(biāo)調(diào)用它兩次,一次是轉(zhuǎn)換輸入值,一次轉(zhuǎn)換輸出值.當(dāng)轉(zhuǎn)換失敗的時(shí)候,子程序必須返回一個(gè)undefine值.如果出現(xiàn)失敗,在MRTG的日志文件中將會(huì)用Perl的警告函數(shù)寫入一個(gè)警告.MRTG將會(huì)把子程序?qū)胍粋(gè)隔離的名稱空間(package MRTGConversion),這樣用戶就不必?fù)?dān)心會(huì)影響到MRTG的全局名字空間了。MRTG automatically prepends this package declaration to the user-supplied code.
例子:
假設(shè)某個(gè)OID返回一個(gè)字符串,它的長(zhǎng)度對(duì)于被監(jiān)控的值來(lái)說(shuō)是適當(dāng)?shù)摹榱税炎址D(zhuǎn)換成一個(gè)數(shù)字,MRTG可以用來(lái)繪制圖形,我們創(chuàng)建一個(gè)文件“MyConversions.pl”,內(nèi)容如下:
# Return the length of the string argument
sub Length2Int {
my $value = shift;
return length( $value );
}
然后在MRTG的配置文件中加入下面的內(nèi)容(假設(shè)轉(zhuǎn)換代碼的文件在MRTG/bin目錄中):
ConversionCode: MyConversions.pl
這將使得MRTG把我們定義的Length2Int子程序包含進(jìn)自己的執(zhí)行環(huán)境中。Length2Int將能夠被在任何監(jiān)控目標(biāo)上被調(diào)用,只是需要像下面一樣把“|Length2Int”加到監(jiān)控目標(biāo)定義中:
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”來(lái)獲取完整的關(guān)于定義“監(jiān)控目標(biāo)”的語(yǔ)法信息。
-----------------
2008.12.24
-----------------
Target
使用這個(gè)關(guān)鍵詞你高速mrtg監(jiān)控的目標(biāo)是什么。它能夠以很多種形式進(jìn)行定義。
------------------
基本形式(Basic)
最基本的格式為“port:community@router”,這將為主機(jī)‘router’(dns名稱或者IP地址)的‘port’接口生成一個(gè)通訊
流量圖,并且使用‘community’作為snmp查詢的口令。
例子:
Target[myrouter]: 2:public@wellfleet-fddi.domain
如果你的community包含[email=‘@’]‘@’[/email]或者空格,這些字符必須被使用‘\’進(jìn)行轉(zhuǎn)義.
例子:
Target[bla]: 2:stu\ pi\@d@router
-----------------------
SNMPv2c
如果你使用一個(gè)高速的路由器你可能想要使用ifHC*計(jì)數(shù)器.這個(gè)特性由SNMPv2c參數(shù)啟用.然而不幸的是,并非所有的設(shè)備都支
持SNMPV2C.這個(gè)參數(shù)將使得你的計(jì)數(shù)器不會(huì)在5分鐘內(nèi)就被重置,因?yàn)槲覀兪褂昧?4位計(jì)數(shù)器代替了原來(lái)的32位計(jì)數(shù)器.
例子:
Target[myrouter]: 2:public@router1:::::2
------------------------
SNMPv3
作為SNMPV2C的替代,SNMPv3提供了對(duì)ifHC*計(jì)數(shù)器的訪問(wèn)功能,并具備了加密功能.不是所有的設(shè)備都支持SNMPv3,你還需要
perl的Net::SNMP庫(kù)來(lái)支持SNMPv3.涉及SNMPv3的配置建議使用cfgmaker,因?yàn)樗鼤?huì)檢查Net::SNMP庫(kù)文件是否被加載,并且在不
能使用v3的時(shí)候會(huì)使用SNMPv2c.
--------------------------
SNMP v3 需要使用認(rèn)證參數(shù),使用SnmpOptions[]來(lái)傳遞.
Example: Target[myrouter]: 2:router1:::::3 SnmpOptions[myrouter]: username=>'user1'
--------------------------
noHC
不是所有支持SNMPv2和SNMPv3的路由器在每個(gè)接口上都提供ifHC*計(jì)數(shù)器.noHC 關(guān)鍵詞表明需要使用低速的計(jì)數(shù)器ifInOctets
和ifOutOctets,而不是高速的ifHC*計(jì)數(shù)器.如果SNMPv2和SNMPv3被指定使用但是ifHC*計(jì)數(shù)器不可用,cfgmaker將會(huì)自動(dòng)的插
入這個(gè)關(guān)鍵詞.
Example: Target[myrouter]: #Bri0:router1:::::3 SnmpOptions[myrouter]: username=>'user1' noHC[myrouter]: yes
-----------------------
reversing
有時(shí)候你處于鏈路錯(cuò)誤的一側(cè),你也想mrtg把流入流量報(bào)告成流出流量等等.這個(gè)關(guān)鍵詞能做到這一點(diǎn),你只是需要把"Target"
的描述中加上一個(gè)'-'.它就能把流入和流出流量交換.
例子:
Target[ezci]: -1:public@ezci-ether.domain
-------------------------
Explicit OIDs
你也可以使用‘OID_1&OID_2:community@router’明確的指定想要查詢的OID.下面的例子在接口1上檢索輸入和輸出流量的錯(cuò)誤
計(jì)數(shù).MRTG需要為兩個(gè)變量繪制圖形,這樣你需要指定兩個(gè)OID,比如溫度和濕度或者錯(cuò)誤的輸入和錯(cuò)誤的輸出.
例子:
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變量.請(qǐng)參看主頁(yè)上的mibhelp.txt查看這些名字的列表.一個(gè)例子就是ifInErrors和ifOutErrors.
這意味著你可以這樣定義上面的例子:
例子:
Target[myrouter]: ifInErrors.1&ifOutErrors.1:public@myrouter
--------------------------
SnmpWalk
也許你會(huì)監(jiān)控一個(gè)只有使用'walk'才能訪問(wèn)的snmp 對(duì)象.你可以讓mrtg進(jìn)行walk操作,這需要在OID前面加上WaLK.或者你想訪問(wèn)
walk操作返回的某個(gè)特定條目,那么你可以使用WaLKx,x是一個(gè)從"0"開(kāi)始的數(shù)字.
例子:
Target[myrouter]: WaLKstrangeOid.1&WaLKstrangeOid.2:public@myrouter
Target[myrouter]: WaLK3strangeOid.1&WaLK4strangeOid.2:public@myrouter
---------------------------
SnmpGetNext
也有特殊的例子,那就是snmpgetnext能返回正確的值,但是walk不能.這中情況在使用snmpv2 or v3的時(shí)候會(huì)發(fā)生,因?yàn)樵谶@些版
本中使用了snmpgetbulk方法.你可以在OID的前面加上字符串"GeTNEXT",以讓getnext操作來(lái)代替getbulk.
例子:
Target[myrouter]: GeTNEXTstrangeOid&GeTNEXTstrangeOid:public@myrouter
-----------------------------
SNMP Walk 相關(guān)計(jì)算
在一些情況下,snmpwalk 需要計(jì)算行數(shù),而實(shí)際的數(shù)據(jù)并沒(méi)有意義。例如,計(jì)算CAM表中的MAC地址數(shù)目,或者同時(shí)進(jìn)行撥號(hào)的
會(huì)話數(shù)目。你可以在OID前面加上CnTWaLK來(lái)讓MRTG進(jìn)行計(jì)算。下面將對(duì)同時(shí)通過(guò)VOIP進(jìn)行撥號(hào)的數(shù)目進(jìn)行計(jì)算:
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來(lái)指定接口
有時(shí)候SNMP接口的索引號(hào)可能會(huì)變化,比如添加新接口或者移除某個(gè)接口。這可能會(huì)讓你的配置文件產(chǎn)生偏差,引起MRTG工作
出現(xiàn)錯(cuò)誤等等。MRTG支持使用IP地址而不僅使用接口索引號(hào)來(lái)定義監(jiān)控對(duì)象。
確保使用的IP地址確實(shí)在同一個(gè)路由器上,特別是當(dāng)繪制兩個(gè)不同OID的時(shí)侯;并確保使用‘&’分隔開(kāi)接口。
你可以使用選項(xiàng) “--ifref=ip”來(lái)讓cfgmaker生成相應(yīng)的配置文件。
例子:
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
-------------------------------
[ 本帖最后由 ioerr 于 2009-2-3 16:14 編輯 ] |
評(píng)分
-
查看全部評(píng)分
|