請問有關於MRTG & SNMP的問題 [論壇 - 新手村]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



請問有關於MRTG & SNMP的問題
會員一級
註冊日期:
2009/7/2 16:48
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 11
MP : 2 / 407
EXP: 47
離線
各位前輩大家好,小弟最近想利用 MRTG監控遠端主機的cpu負載,
我參考其他大大的說明中針對 Redhat8.0所寫的mrtg.cfg
WorkDir:/var/www/html/mrtg
Interval: 5
WriteExpires: Yes
Options[_]: gauge,absolute,growright,nopercent
Language: big5
Refresh: 300
Target[snmp_cpu]:.1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:public@IP
MaxBytes[snmp_cpu]: 100
Directory[snmp_cpu]: cpu
YLegend[snmp_cpu]: Load Average (%)
ShortLegend[snmp_cpu]: %
Unscaled[snmp_cpu]: dwmy
LegendO[snmp_cpu]:   CPU 每1分鐘負載平均值;
LegendI[snmp_cpu]:   CPU 每5分鐘負載平均值;
Title[snmp_cpu]: Mosquito伺服器 CPU 負載率
PageTop[snmp_cpu]:

Mosquito伺服器 CPU 負載率


Legend1[snmp_cpu]: CPU 每1分鐘負載平均值
Legend2[snmp_cpu]: CPU 每5分鐘負載平均值

可是執行後卻無法得到正確的cpu負載率,查看log裡面的值都是0,這樣是因為 MIB值不正確還是其他原因呢?如果是MIB值不正確,那我應該如何查詢到正確的 MIB值?

2009/11/17 11:25
應用擴展 工具箱
回覆: 請問有關於MRTG & SNMP的問題
會員一級
註冊日期:
2009/7/2 16:48
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 11
MP : 2 / 407
EXP: 47
離線
小弟我其實用MRTG是為了要它產生的log,後來小弟我想到了直接用shell script +SNMP指令也能達到小弟預期的效果.

#!/bin/bash
echo `/usr/bin/snmpget -v 1 -c "public" ip .1.3.6.1.4.1.2021.10.1.3.1 >> test.log`

這樣就會產生一個test.log的檔案

其中.1.3.6.1.4.1.2021.10.1.3.1是cpu每分鐘的平均loading
其他linux上的OID可以參考
http://blog.ntut.idv.tw/2008/09/los-centos-install-and-setting-snmp.html
再來應該是到/etc/crontab下新增:

*/1 * * * * root /test/cpu.sh > /dev/null 2>&1

上面應該是設定每分鐘去執行 /test/cpu.sh這支script,不過我的都沒有動作....囧rz
有人能解答一下嘛?@@
另外...有人那邊有windows下面的cpu OID可以提供嘛?或是查詢方式.
我用某論壇中 ooxx大提到的
1.3.6.1.4.1.311.1.1.3.1.1.33.9.0
1.3.6.1.4.1.311.1.1.3.1.1.23.9.0
去做snmpget 都是得到 No such device的回應..

2009/11/18 2:07
應用擴展 工具箱
訪客
回覆: 請問有關於MRTG & SNMP的問題
Anon:訪客
其實 MRTG 是一個 繪表+自動產生網頁 的軟體
只要餵給 mrtg 四組數據就可以產生網頁
四組數據分別是:
----------------------------
1.填滿顏色的線條
2.不填色的線條
3.開機時間(設備啟動時間)
4.設備名稱

其中只要有 1.2 數據就可以繪表
3.4 是參考用的,隨便亂輸入或省略也可以。

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

除了網路流量是靠 SNMP 提供資料

其餘偵測 CPU、RAM、硬碟使用量.....等等
都需要自行撰寫 shell script 或寫程式
輸出那「四組數據」餵給 MRTG
與 SNMP 無關係

範例:
#!/bin/sh

# mrtg 偵測 CPU 使用率模組,執行後匯出四個數據
# 此外掛需要 sa 指令,請檢查系統中是否有安裝 sysstat 套件

# 第一數據:CPU User 使用率
# 第二數據:CPU System 使用率

# 使用 sar 來監測 CPU 的 user 及 System 負載率
cpuusr=`/usr/bin/sar 1 | grep Average | awk '{print $3}'`
cpusys=`/usr/bin/sar 1 | grep Average | awk '{print $5}'`

# 讀取系統總開機時間
up_time=`/etc/mrtg/sys-uptime.sh`

# 輸出四個數據(前兩個為數字),給 MRTG 做處理,最後一個為設備名稱
echo $cpuusr
echo $cpusys
echo $up_time
echo "AMD 2500+"


這支 shell script,名字叫做 mrtg-cpu.sh
執行後,它會輸出四個數字(用 echo 就可以了)
第1.2 數據,是指令 sar 取得的cpu使用率
第3數據,是呼叫另一支 script 用來產生總開機時間
第4數據,沒什麼意義,就是一串文字而已


然後在 mrtg.cfg 那邊:(這只是其中一小段)
###########################
#        CPU 負載         #
###########################

Target[cpu]:       `/etc/mrtg/mrtg-cpu.sh`

Options[cpu]:      growright, gauge, integer, nopercent
MaxBytes[cpu]:     100
YLegend[cpu]:      % of CPU used
ShortLegend[cpu]:  %
LegendI[cpu]:        User:
LegendO[cpu]:        System:
Legend1[cpu]:      User utilization
Legend2[cpu]:      System utilization
Colours[cpu]:      ORANGE#ff6128,GREEN#066928,DARK GREEN#006600,VIOLET#ff00ff

Title[cpu]:        CPU Loading
PageTop[cpu]:      <H1>CPU Loading</H1>




關於 mrtg.cfg 格式的說明:(有興趣深入可參考)
#####################################################
#                                                   #
#                 MRTG 偵測器 設定                  #
#                                                   #
#####################################################

# 格式說明:
# Target[偵測器名稱]:       資訊提供來源,可為 shell script。
# Options[偵測器名稱]:      圖表繪製方式選項。
# MaxBytes[偵測器名稱]:     圖表數值上限。
# YLegend[偵測器名稱]:      表格的Y軸要顯示什麼單位文字。(不支援中文)
# ShortLegend[偵測器名稱]:  同上,單位文字的簡稱。
# LegendI[偵測器名稱]:      第1數據,代表的意義。(預設綠色線條)
# LegendO[偵測器名稱]:      第2數據,代表的意義。(預設藍色線條)
# Legend1[偵測器名稱]:      第1數據,網頁下方的說明文字。
# Legend2[偵測器名稱]:      第2數據,網頁下方的說明文字。
# Colours[偵測器名稱]:      繪製顏色。(可省略)
# Title[偵測器名稱]:        網頁的 Title,瀏覽器中標題列的名稱。
# PageTop[偵測器名稱]:      <h1>網頁上面顯示的標題</h1>

# 關於 Options[偵測器名稱] 參數說明:
# growright  =   圖表從右方畫起。
# bits       =   最小單位 bits。
# gauge      =   圖表上標尺的數字,維持在平均值,不會因短暫的尖峰爆衝而提高。
# nopercent  =   不顯示百分比(與 MaxBytes 的%),預設是會顯示的。
# integer    =   只顯示整數,捨去小數點,預設會帶有小數點。

# 關於 Colours[偵測器名稱] 的說明:
# 參數總共要4筆 GREEN#rrggbb,BLUE#rrggbb,DARK GREEN#rrggbb,MAGENTA#rrggbb
# 可重新定義原先四種顏色的 RGB 16進位碼。
# 網頁下方的顏色名稱也可改掉,例如 MAGENTA#(洋紅)改成 VIOLET#(紫羅蘭)。

# 附註:
# 1.在網頁上顯示的東西,支援 html 碼,例如   代表空格,<h1> 代表標題。
# 2.網頁 Index 自動產生後,偵測器排列順序,同以下偵測器的排列順序。
# 3.網卡的「偵測器名稱」和「Target」比較特殊,需用 SNMP 程式取得。
# 4.每台電腦(或每次重灌),網卡的「偵測器名稱」資料可能改變,請注意修改。

# 偵測器固定輸出 4 筆數據給 MRTG,各數據的意義:
# 1.綠色線條。(明顯的塗色)
# 2.藍色線條。(僅有單線)
# 3.設備開機時間。
# 4.設備名稱。


我有完整的程式碼,包含:cpu 偵測,web流量偵測、硬碟剩餘空間偵測、cpu溫度偵測(要靠某個溫度偵測套件)..等等。再加上完美的 mrtg.cfg 中文化 (自認啦)XD

若有興趣,我再放網路硬碟分享..
前提是有興趣,且需懂基本 shell script
因為那個必須修改才能使用,無法直接套用

2009/11/18 3:24 | 7ab5d 1b103 42c8a 3099a
應用擴展 工具箱
回覆: 請問有關於MRTG & SNMP的問題
會員一級
註冊日期:
2009/7/2 16:48
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 11
MP : 2 / 407
EXP: 47
離線
大家好...小弟我又來了...0.0
windows中OID可以用
snmpwalk -c public -v 1 目標ip
這個指令去爬出所有該主機上的OID..
然後再去找出你想要的元件就可以了.

HOST-RESOURCES-MIB::hrProcessorLoad.2 = INTEGER: 0
HOST-RESOURCES-MIB::hrProcessorLoad.3 = INTEGER: 0
上面這兩個是我爬出來的cpu的load??..其實我也不確定..他的值都是0阿....

HOST-RESOURCES-MIB::hrSWRunName.3628 = STRING: "spoolsv.exe"
這組是紀錄系統上正在執行的程式名稱,我列出一條而已.
可以用
snmpwalk -v 1 -c "public" IP hrSWRunName
去爬出所有正在執行的程序

HOST-RESOURCES-MIB::hrSWRunPerfMem.1888 = INTEGER: 3556 KBytes
這組則是該程序的ram使用量,我找不到整體的使用量...ㄒ_ㄒ
使用
snmpwalk -v 1 -c "public" 192.168.1.14 hrSWRunPerfMem
可以爬出所有程序的ram使用量.

不過我crontab還是不會自己跑script阿....(哭哭..)

2009/11/18 3:30
應用擴展 工具箱
回覆: 請問有關於MRTG & SNMP的問題
會員一級
註冊日期:
2009/7/2 16:48
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 11
MP : 2 / 407
EXP: 47
離線
樓上的訪客大大感恩耶!!好詳細...
那如果我是想要監控遠端的系統資訊(CPU負載,RAM使用量..等),也能用MRTG嗎?
這樣是不是就得在遠端的主機上寫好shell script or程式,在把收到的資訊傳回 MRTG server?

其實小弟我的初衷只是想要得到遠端系統的一些資訊,就從SNMP開始然後一路咕狗出 MRTG,然後發現 MRTG的功能頗為強大,而且又能將數據圖表化,真的是滿方便的,可是...我到現在還是不太懂 MRTG的運作流程(雖然有畫了幾張圖出來)...囧rz
大大能跟您伸一下完整的套圖(誤..
是完整的MRTG說明嘛~~!! @0@
感恩阿~~

2009/11/18 3:44
應用擴展 工具箱
回覆: 請問有關於MRTG & SNMP的問題
Anon:
自己google一下 SNMP跟MRTG吧
這是很大的一個題目,不太可能在論壇中回覆給你
SNMP:Simple Network Management Protocol
雖然它名為Simple....可是其實很複雜
這個Protocol就是專門用來吐系統資訊的(包括loading,流量,disk space,等等)
MRTG :Multi Router Traffic Grapher
這是拿來向SNMP要資料然後畫圖的

所以你要在每一台要搜集資料的server都安裝snmpd
然後在一台你選定的主機上裝MRTG,由這台主機定時去跟每一台server的snmpd要資訊並畫圖

另外,建議你google cacti,這做起來會比較簡單一點

2009/11/18 11:27
應用擴展 工具箱
回覆: 請問有關於MRTG & SNMP的問題
版主
註冊日期:
2008/7/14 0:03
來自 螢幕的另一端
所屬群組:
網站管理員
已註冊使用者
討論區管理群
等級: 32
HP : 0 / 798
MP : 497 / 29920
EXP: 95
離線
嗯, cacti 做起來會比較簡單,而且功能要比 mrtg 好多了。

你要做 cacti 的話,你可以參考我的筆記
http://dominic16y.world.edoors.com/CLzB5eOK6iQU
雖是在 debain 的環境下做的筆記,但我想 ubuntu 底下應該也適用

2009/11/18 12:59
應用擴展 工具箱
訪客
回覆: 請問有關於MRTG & SNMP的問題
Anon:訪客
因為我有研究過 MRTG,所以寫篇簡易的心得教學好了
不單僅是為了解答本篇,也方便網路上搜尋資料,提昇 MRTG 教學的豐富度 ^^b


先大略講解一下 MRTG 是什麼東西,方便有個概念:

MRTG 並不強大,事實上它的功能很弱也很簡單,但是它的彈性非常好,可自訂程度非常高,然而這邊所謂的「可自訂程度」幾乎都是要靠自己寫 shell scipt(或其它程式語言,只要能輸出數據就行)才能達到,所以 MRTG 只適合有些基礎程式底子的人使用。

MRTG 的用處:一個「自動繪表」+「自動產生網頁」的工具軟體。網頁上面顯示的圖表,其資料來源完全與 MRTG 無關,例如網路流量偵測,流量資料都是靠 SNMP 程式提供的,MRTG 只負責繪表。也就是說 MRTG 其實只是一個繪表工具軟體,不是偵測軟體。

換言之,在 MRTG 上不管要偵測什麼東西,就必須附帶一隻程式(可為 shell script),來提供 MRTG 四個數據,這樣子 MRTG 才有辦法繪表。網路上有些教學會稱這種為 MRTG 量身打造的附帶程式叫做「MRTG 的外掛」。比方說:想偵測CPU使用率,就要有一支偵測CPU負載的外掛程式,想偵測RAM使用量,就要有一支偵測RAM使用量的外掛。MRTG 官方並不提供這些外掛程式(也許有,我不曉得,都是英文的懶的看),使用者必須自行撰寫,或者在網路上找第三方提供的。

那既然如此,一定有人會問:什麼都要自己寫程式,那還要 MRTG 幹嘛?

原因是:單純輸出四個數據的程式(shell script 即可)非常容易撰寫,是幼稚園程度的。但是繪表的程式,需要高深的功力,是大學程度的。一般的 MIS 也許會寫些簡單的 shell script,但不一定會寫繪表那麼複雜的程式,所以 MRTG 廣受喜愛的原因就在這裡,它是自訂性非常高的自動繪表工具軟體,只要會寫簡單的 shell script 輸出四個數據,搭配 MRTG 即能自動繪出精美的網頁(精不精緻見人見智,不過有圖表總比純文字強 XD)。

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

MRTG 的運作方式概觀
☆ 以使用 yum 或 apt-get 安裝套件為主,自行編譯的可能目錄會不同。

1.檔案與目錄結構

MRTG 設定檔主要目錄:/etc/mrtg (可將 mrtg 外掛程式都放在此目錄,方便管理)

主要設定檔:/etc/mrtg/mrtg.cfg

繪表圖片與網頁的存放目錄:/var/www/mrtg
-------------------------------------------------
在這個目錄下,可以看到很多 *-day.png、*-week.png、*-year.png 圖表的圖片
分別代表「某種偵測器」日、週、年的圖表
index.html 是首頁,上面的圖表就是各偵測器 *.day.png
其餘的 *.html 是各偵測器詳細的週、年圖表
-------------------------------------------------


2.MRTG 與 apache 的關係

眾所皆知,/var/www 是 apache 的預設網頁目錄 (公眾目錄位於 /var/www/html)
也就是說: MRTG 只是自動產生網頁,瀏覽器上能看到 MRTG 圖表,是靠 apache 網頁伺伺服器的

因為這種特性,所以能利用 apache 本身內建的防火牆功能,來給 MRTG 網頁設定權限

設定檔 /etc/httpd/conf.d/mrtg.conf (若無此檔,自行建立)

範例一:封鎖全部,僅特定 ip 可以連入觀看
Alias /mrtg /var/www/mrtg

<Location /mrtg>
    Order deny,allow
    Deny from all
    Allow from 192.168.0.0/24
    Allow from 127.0.0.1
</Location>



範例二:開放全部,但是觀看之前會問帳號、密碼,通過才能觀看。

第一步驟: /etc/httpd/conf.d/mrtg.conf
Alias /mrtg /var/www/mrtg

<Location /mrtg>
    Order deny,allow
    # Deny from all
    # Allow from 192.168.0.0/24
    # Allow from 127.0.0.1
    Allow from all
</Location>


<Directory /var/www/mrtg>
        AllowOverride All
</Directory>


第二步驟:終端機打以下指令(需 sudo 請自己加)
# cd /var/www/mrtg
# htpasswd -c .htpasswd admin (admin 是驗證時,使用者名稱,自由取名)

第三步驟:
vi .htaccess (建立此檔,在 /var/www/mrtg 底下建立)
AuthUserFile /var/www/mrtg/.htpasswd
AuthName "MRTG"
AuthType Basic
require valid-user


註:以上設定,重新啟動 httpd 才會生效。


3.MRTG 服務的運作型態

事實上,MRTG 並不被視作一種 servervice 服務 或 deamaon 行程
也就是說:它不是常駐的

那為什麼 MRTG 會自動執行呢?
因為安裝 MRTG 套件的時候,安裝程式會自動寫入「排程」

# mrtg 套件安裝時,就會自動排程每 5 分鐘執行一次
具體可查詢 /etc/cron.d/mrtg (這個檔就是安裝程式自動創建的)
想改執行間隔時間,可以在這邊改,還有 mrtg.cfg 全域變數中的刷新速度

註:但如果你的 MRTG 是自行編譯的,當然的「排程」就要自己寫囉,因為沒有安裝程式幫你寫。

附註:/etc/crontab 和 /etc/cron.d/* 的關係:
/etc/crontab 屬於管理者 root 個人或較雜亂的排程
/etc/cron.d/ 目錄裡頭,則是擺放一些系統程式的排程
實際上兩者沒有分別,都是會執行,只是方便管理和查找而已。

修改「排程」後,要重新啟動 crond 才會生效!


4.設定好 /etc/mrtg/mrtg.cfg 後,接下來要如何初始化 MRTG,讓它運作?

# 產生 MRTG 報表
env LANG=C mrtg /etc/mrtg/mrtg.cfg

# ( 執行三次,直到沒有出現錯誤訊息為止,若三次後還有錯誤訊息,就是 mrtg.cfg 設定有誤)

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

# 產生 index.htm 索引首頁
indexmaker /etc/mrtg/mrtg.cfg --output=/var/www/mrtg/index.htm

以上動作只有在修改 /etc/mrtg/mrtg.cfg 後,才需要做,做一次即可
往後如果要美化 index.html 首頁,直接去編輯 /var/www/mrtg/index.html 即可


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

關於樓主說的:想要監控遠端的系統資訊(CPU負載,RAM使用量..等)

MRTG 只是 自動繪表+產生網頁 的工具軟體,本身無法辦到
但是「山不轉路轉,路不轉人轉」
unix 的操作思維:靠一大堆小工具,以最簡單的方式,創造大功能。


具體方法思路:(僅供參考,或許你可以改良)
-----------------------------------------
1.遠端的主機,每一台都給它裝 MRTG,偵測 CPU負載、RAM使用量。並啟動 htttp 網頁伺服器。

2.如前所述 /var/www/mrtg 底下,會有 *-day.png 這樣的圖片(日分析圖表),這個圖表是 MRTG 自動產生的,預設是每 5分鐘更新一次(圖片每5分鐘會換新)。

網頁有種東西叫做「貼圖」,貼圖可以貼遠端主機的圖片...

所以只要本地主機,/var/www/mrtg/index.html
編輯一下網頁,把遠端主機的 *-day.png 通通貼上去,並註明主機名稱、設備名稱
那麼就有一份:完整的遠端主機偵測報表了 XD

3.但是每一台遠端主機都開放 httpd 或者 MRTG 網頁,這樣會有安全性風險

如前所述,MRTG 是靠 httpd 顯示網頁,而 httpd 本身內建就有簡易的防火牆
可以設定 /var/www/mrtg 網頁目錄,僅有特定 IP 可以觀看,其餘 deny
這個特定 IP,當然就是要收集全部遠端主機 MRTG 圖表的本地主機

此外如果遠端主機,本來不是 web 伺服器
也可以在 ipables 防火牆中,設定僅允許特定 IP 才能通過 port 80
如此一來,雖然遠端主機開放 httpd,但有防火牆嚴密阻擋,還是很安全。


範例:index.html 部份 html 碼
<td><DIV><B>CPU 負載率 - 主機:www.xxxxxx.com </B></DIV>
<DIV><IMG BORDER=1 ALT="cpu Traffic Graph" SRC="http://www.xxxxxx.com/cpu-day.png"></A><BR></DIV>


貼圖就是 <IMG SRC="圖片來源">
圖片來源可以是遠端 web 主機

關於 html 碼,請自行看書或找網路教學,這邊不再敖述。
或者 index.html 裡面本來就有了,複製-貼上,依樣畫葫蘆即可。

覺得 index.html 首頁太單調,也可以上底圖美化什麼的
若想要點了圖片可以進入偵測細節
可以用「超連結」的方式,連結到遠端的 MRTG 目錄的 (*偵測器).html。


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

附件:mrtg.cfg 中文化檔 & 各種外掛

註:這些檔案都要經過修改才能使用
修改各種外掛程式,需具備基礎的 shell script 能力,都是非常簡單的語法,改改字串即可。

下載:(box.net)
http://www.box.net/shared/24i4e4m6bs

2009/11/18 14:36 | 7ab5d 1b103 42c8a 3099a
應用擴展 工具箱
回覆: 請問有關於MRTG & SNMP的問題
會員一級
註冊日期:
2009/7/2 16:48
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 11
MP : 2 / 407
EXP: 47
離線
感謝 acman,夢見草,訪客三位大大阿~
尤其訪客大大提供的 MRTG相關資訊真的是太銷魂了...a_a

2009/11/19 17:43
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.