2016-11-13 71 views
0

我在Ubuntu 16.04上測試MRTG 2.17.4。我將其配置爲使用rrdtool來記錄數據。我的/etc/mrtg.cfg中有「Interval:1」。我編輯在/etc/cron.d/mrtg cron任務是:MRTG和/或rrdtool - 一分鐘間隔不工作

*/1 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ] && [ -d "$(grep '^[[:space:]]*[^#]*[[:space:]]*WorkDir' /etc/mrtg.cfg | awk '{ print $NF }')" ]; then mkdir -p /var/log/mrtg ; env LANG=C /usr/bin/mrtg /etc/mrtg.cfg --debug="time,log" 2>&1 | tee -a /var/log/mrtg/mrtg.log ; fi 

請注意,我添加調試選項「時,登錄」,以幫助排除故障。在我的/var/log/mrtg/mrtg.log中,我發現數據按預期每隔一分鐘記錄一次,但不會每分鐘計算一次吞吐量。相反,它每5分鐘做一次。對於其他時間,它只是說「有???/???」

--time: prog start Sat Nov 12 21:54:01 2016 
--time: loop start Sat Nov 12 21:54:01 2016 
--time: snmp read start Sat Nov 12 21:54:01 2016 
--time: target loop start Sat Nov 12 21:54:01 2016 
--log: RRDs::tune(/var/mrtg/192.168.1.40_24.rrd -a ds0:125000000 -a ds1:125000000 -d ds0:COUNTER -d ds1:COUNTER) 
--log: RRDs::update(/var/mrtg/192.168.1.40_24.rrd, '1479012841:171337092:172912456') 
--log: got: ???/??? 
--time: prog start Sat Nov 12 21:55:01 2016 
--time: loop start Sat Nov 12 21:55:01 2016 
--time: snmp read start Sat Nov 12 21:55:01 2016 
--time: target loop start Sat Nov 12 21:55:01 2016 
--log: RRDs::tune(/var/mrtg/192.168.1.40_24.rrd -a ds0:125000000 -a ds1:125000000 -d ds0:COUNTER -d ds1:COUNTER) 
--log: RRDs::update(/var/mrtg/192.168.1.40_24.rrd, '1479012901:171686542:173262414') 
--log: got: 5804.75277777778/5813.21944444444 
--time: prog start Sat Nov 12 21:56:02 2016 
--time: loop start Sat Nov 12 21:56:02 2016 
--time: snmp read start Sat Nov 12 21:56:02 2016 
--time: target loop start Sat Nov 12 21:56:02 2016 
--log: RRDs::tune(/var/mrtg/192.168.1.40_24.rrd -a ds0:125000000 -a ds1:125000000 -d ds0:COUNTER -d ds1:COUNTER) 
--log: RRDs::update(/var/mrtg/192.168.1.40_24.rrd, '1479012962:172034542:173610922') 
--log: got: ???/??? 
--time: prog start Sat Nov 12 21:57:01 2016 
--time: loop start Sat Nov 12 21:57:01 2016 
--time: snmp read start Sat Nov 12 21:57:01 2016 
--time: target loop start Sat Nov 12 21:57:01 2016 
--log: RRDs::tune(/var/mrtg/192.168.1.40_24.rrd -a ds0:125000000 -a ds1:125000000 -d ds0:COUNTER -d ds1:COUNTER) 
--log: RRDs::update(/var/mrtg/192.168.1.40_24.rrd, '1479013021:172376742:173953630') 
--log: got: ???/??? 
--time: prog start Sat Nov 12 21:58:01 2016 
--time: loop start Sat Nov 12 21:58:01 2016 
--time: snmp read start Sat Nov 12 21:58:01 2016 
--time: target loop start Sat Nov 12 21:58:01 2016 
--log: RRDs::tune(/var/mrtg/192.168.1.40_24.rrd -a ds0:125000000 -a ds1:125000000 -d ds0:COUNTER -d ds1:COUNTER) 
--log: RRDs::update(/var/mrtg/192.168.1.40_24.rrd, '1479013081:172724742:174302138') 
--log: got: ???/??? 
--time: prog start Sat Nov 12 21:59:01 2016 
--time: loop start Sat Nov 12 21:59:01 2016 
--time: snmp read start Sat Nov 12 21:59:01 2016 
--time: target loop start Sat Nov 12 21:59:01 2016 
--log: RRDs::tune(/var/mrtg/192.168.1.40_24.rrd -a ds0:125000000 -a ds1:125000000 -d ds0:COUNTER -d ds1:COUNTER) 
--log: RRDs::update(/var/mrtg/192.168.1.40_24.rrd, '1479013141:173077092:174654996') 
--log: got: ???/??? 
--time: prog start Sat Nov 12 22:00:02 2016 
--time: loop start Sat Nov 12 22:00:02 2016 
--time: snmp read start Sat Nov 12 22:00:02 2016 
--time: target loop start Sat Nov 12 22:00:02 2016 
--log: RRDs::tune(/var/mrtg/192.168.1.40_24.rrd -a ds0:125000000 -a ds1:125000000 -d ds0:COUNTER -d ds1:COUNTER) 
--log: RRDs::update(/var/mrtg/192.168.1.40_24.rrd, '1479013202:173426542:175004954') 
--log: got: 5781.22263205829/5789.66200182149 
--time: prog start Sat Nov 12 22:01:01 2016 
--time: loop start Sat Nov 12 22:01:01 2016 
--time: snmp read start Sat Nov 12 22:01:01 2016 
--time: target loop start Sat Nov 12 22:01:01 2016 
--log: RRDs::tune(/var/mrtg/192.168.1.40_24.rrd -a ds0:125000000 -a ds1:125000000 -d ds0:COUNTER -d ds1:COUNTER) 
--log: RRDs::update(/var/mrtg/192.168.1.40_24.rrd, '1479013261:173768742:175347662') 
--log: got: ???/??? 

我並不特別擔心它不會每分鐘計算一次速度,但是我需要將數據存儲在rrd數據庫中。但是當我嘗試使用rrdtool獲取時,它仍然顯示5分鐘的數據..我在哪裏做錯了?

rrdtool fetch 192.168.1.40_24.rrd AVERAGE -a -s -1h -r 1m -a 
          ds0     ds1 

1479010500: 1.0150000000e+04 1.0158466667e+04 
1479010800: 1.0150000000e+04 1.0158466667e+04 
1479011100: 1.0145166667e+04 1.0153661556e+04 
1479011400: 1.0021447006e+04 1.0029884972e+04 
1479011700: 5.8127796610e+03 5.8212468060e+03 
1479012000: 5.7859754098e+03 5.7944147796e+03 
1479: 5.8089454941e+03 5.8174389793e+03 
1479012600: 5.8006990960e+03 5.8091662411e+03 
1479012900: 5.8047527778e+03 5.8132194444e+03 
1479013200: 5.7812226321e+03 5.7896620018e+03 
1479013500: 5.7946912568e+03 5.8031847421e+03 
1479013800: 5.8049794444e+03 5.8134465895e+03 
1479014100: -nan -nan 

謝謝! Difan

+0

點擊正確答案下的複選框! – Questionmark

回答

1

它可能有助於查看RRT文件中的MRTG配置文件和rrdtool info的輸出。

但是,可能的原因是您最初以5分鐘的時間間隔創建RRD文件,然後稍後更改爲1分鐘的時間間隔。如果你這樣做,那麼MRTG將不會重新創建RRD文件,儘管它會改變爲每1分鐘收集一次數據。 Mrtg只能在創建後修改RRD的MaxBytes;其他設置(RRDRowCount,Interval)只能在初始創建時使用,並且隨後在MRTG cfg文件中更改它們不會導致RRD文件更改。

如果您在RRD文件上使用rrdtool info,則可能會看到它具有5分鐘(300s)的步長。改變這種情況的唯一方法是刪除RRD文件(丟失歷史數據)並允許MRTG以cfg文件中指定的60秒間隔重新創建它。請注意,如果您必須保留5分鐘RRD文件中的許多有價值的歷史數據,則可以使用第三方實用程序將其轉儲爲XML並重新創建新的RRD,但該任務是有點複雜。尋找rrdmigraterrdmerge。最新的RRDtool在這方面也有一些能力。

+0

你是天才。謝謝! –

+0

@DifanZhao - 如果這是正確的答案,請將其標記爲正確,並給我一個+1(我得到更多的代表點,方式和答案可以幫助其他人) –

+0

對於遲到的迴應抱歉..我是新來的堆棧溢出。我給你答案後,我確實給了+1,但是因爲我是新用戶沒有足夠的帖子,我的upvote不計數...對於誰沒有更好的聲譽看帖子的人,請upvote,因爲這絕對解決了我的問題!謝謝! –