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