首頁 > Hyper-V/R2, vSphere/VI3 > 【長篇教學】監視Linux主機的系統效能:MRTG

【長篇教學】監視Linux主機的系統效能:MRTG

2010年2月2日 發表評論 閱讀評論

mrtg01
嘉許的客戶常常問,我要如何知道自己Linux主機的效能瓶頸在哪呢?如果你還是用top來看CPU使用率的話,那可能就……..還是多花點時間安裝個專門監視效能的軟體好了。在Linux下,MRTG雖然已經落伍,但還是最常用的。如果你只想知道CPU/RAM/IO/NIC的話,MRTG已經足夠了。我們在就這篇有圖文的長篇教學中把MRTG安裝起來吧!


前言


在Linux下要監測伺服器各項性能指標有太多選擇了,大家最常聽到的大概就是mrtg了。本文的目的不是深入研究mrtg,因為大家都知道,在Linux下的任何一個應用的功能都強大的不知怎麼辦,要了解每一個功能是不太可能的,因此我們只要了解到和虛擬機相關的部分就行。

Mrtg沒什麼特別的,就是用圖表的方式顯示主機上一些指標的效能,主要是可以透過Apache或Tomcat,用網頁的圖表方式來查看。雖然mrtg在一開始是用來查看網路流量的,但可以使用不同的定義檔來產生數據,並且將這些數據顯現在mrtg的圖表上。我們在這個系統的一開始,就先來看看mrtg的安裝,至於CPU、RAM、DISK等方面,留到這個教學以後的系列。

Mrtg原來的用處就是看網路的流量,因此在Linux下,會以預設的網路卡(eth0)來作為顯示流量,也就是說,在本教學所有的步驟都完成後,你的mrtg就直接可以查看eth0的流量了。

mrtg02


難易程度:


IT人員: ★★☆☆☆
使用者:★★★★☆


使用平台:


Ubuntu Server Linux 9.10無X Window環境


安裝前的準備工作


1、 首先確定你對Linux有基本的認識,如安裝binary套件、權限、檔案等觀念。
2、 會使用vi編輯器。
3、 Linux已安裝LAMP環境。
4、 Linux的網路卡可正常使用,取得IP可和外網連接。
5、 能從網上或光碟機更新套件。


安裝mrtg步驟提要


1、 安裝snmpd服務以及snmp工具列程式。
2、 設定snmpd參數。
3、 測試snmpd參數。
4、 安裝mrtg套件。
5、 設定mrtg的執行環境。
6、 建立mrtg的設定檔。
7、 以設定檔中的參數來執行mrtg。
8、 建立Apache下的mrtg目錄。
9、 建立Apache下的index.html檔案
10、 從網頁查看mrtg的圖表。


安裝snmpd服務以及snmp工具列程式


Snmp是標準的網路監控協議,在Linux和Windows下都有支援。在安裝了snmp協議之後,就可以監視主機的資料了。Linux下使用的 snmpd這個服務,但在安裝Ubuntu時是沒有安裝的,因此我們要手動安裝。進入Linux的命令提示列下,並且輸入

「sudo apt-get install snmpd snmp」

輸入使用者密碼之會出現安裝的畫面,安裝時系統會要求輸入「y」,表示同意安裝,之後就會進行一些說明畫面,並且在安裝完畢時回到命令列提示下。

mrtg03

當安裝完畢時,snmpd就會啟動,我們可以用下面的指令查看是否有啟動:

ps aux | grep snmpd

可以看到在執行服務中有snmpd這個服務,表示Linux主機上的snmpd安裝並且成功啟動了。

mrtg04


設定snmpd參數


接下來要設定snmpd參數,以求snmpd在Linux下能正常運行。在Ubuntu下,snmpd的參設定檔放在/etc/snmp/snmpd.conf下,我們就直接編輯這個檔案即可。輸入

「sudo vim /etc/snmp/snmpd.conf」。

進入之後,找到圖中的地方,改成我們要的樣子。

mrtg05

mrtg06

之後找到下一個圖的地方,這邊是一些辨識用的資料,也更改成我們要的樣子。

mrtg07
mrtg08

更改完之後,存檔離開vi,並且重新啟動snmpd服務,還是輸入

「sudo /etc/init.d/snmpd restart」

出現圖中的畫面表示重新啟動成功了。

mrtg09


測試snmp參數


剛才安裝了snmp套件,就是要用其中的snmpwalk的指令來測試snmpd是否成功。我們輸入

「snmpwalk –v 1 –c public localhost system」

如果出現了一大堆參數,表示snmpd設定已經成功了。如果出現timeout或是no response之類的訊息,表示snmpd沒有安裝好。這時要檢查網路卡是否有啟動,檢查snmpd是否在服務中啟動等等。一般來說,snmpd不太會出問題,所以如果你用這個參數有問題,要多看看其它網路啊、IP、服務等問題。

mrtg10


安裝mrtg套件


安裝mrtg就像安裝任何Ubuntu下的套件一樣,用apt-get就行。只要輸入

「sudo apt-get install mrtg」

安裝時,系統會詢問是否要用mrtg的使用者方式來執行。只要按下「y」即可。這麼做的目的就是為了系統安全。

mrtg11
mrtg12

在安裝完畢之後,系統會在Linux下建立一個mrtg的cronjob,每五分鐘會執行一次mrtg工作來更新監視的項目,預設值就是eth0網路卡的流量。這個步驟完成後,表示mrtg監視安裝完畢了,但mrtg的監視結果還不知道,我們必須建立能從Apache上觀察的mrtg網頁和設定檔才行。

mrtg13


設定mrtg的執行環境


接下來需要建立mrtg的執行環境。下面就是完整的步驟。

1、 首先我們以root的身份來執行,因為mrtg的設定檔是放在/etc下,而/etc一般是以root的身份執行以及管理的。

輸入「sudo -sH」,

自此以後都以root的身份來執行指令。

mrtg14

2、 進入之後,先建立mrtg的目錄。在Ubuntu下,Apache2的文件目錄是安裝在/var/www中,因此我們要建立一個/var/www/mrtg。

輸入「mkdir /var/www/mrtg」。

mrtg15

3、 接下來建立一個mrtg.cfg的設定檔。在Linux中,mrtg的執行都是讀取這個設定檔的內容,因此以後不管是CPU、RAM或是其它的監視項目,都是以這個檔案為主。因此我們先建立,

輸入「cfgmaker public@localhost > /etc/mrtg.cfg」

mrtg16

4、 接下來就要執行mrtg這個程式了。

輸入「env LANG=C mrtg /etc/mrtg.cfg」

這個指令的目的是讓mrtg讀取/etc/mrtg.cfg這個檔案。
mrtg17

5、 執行之後會有很多警告訊息,多執行三、四次直到所有的警告訊息都沒有即可,在Linux下按上箭頭就會重複執行上一個指令。

mrtg18

6、 接下來就是建立index.html檔案。也是

輸入「indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html」。

mrtg19

7、 我們可以到mrtg的目錄下看到已經建立的圖型及html檔案。

mrtg20


從瀏覽器中觀察mrtg的圖表


我們從能存取該Linux主機上的電腦的瀏覽器進入,本例為「http://192.168.1.223/mrtg」。就可以進入。進入後只有一個圖表,我們可以按下去,可以看到更詳細的圖表。

到此,我們的mrtg已經安裝好了,如果我們想要監視其它的項目,只要更改「/etc/mrtg.cfg」,並且重新執行mrtg,並且重新產生index.html,就可以加入新的mrtg監視項目,只要將這邊mrtg的功能安裝好之後,以後就方便了。

mrtg01

mrtg02

Categories: Hyper-V/R2, vSphere/VI3 Tags: ,
  1. liu
    2010年2月5日09:28 | #1

    好资料,赞一个!

    • 嘉許
      2010年2月5日14:59 | #2

      後面還有呢,呵呵!希望能對你有幫助。

  2. 哈利
    2010年2月8日10:16 | #3

    你測試用的伺服器是 FreeBSD ??

    • 嘉許
      2010年2月8日12:14 | #4

      是Ubuntu 9.10 Server

  3. 2010年2月27日10:05 | #5

    在這麼多MRTG教學文中這個一試就成功了,給初學者很大的信心喔!

    若有兩張網卡如何做細部的參數設定呢

  4. 嘉許
    2010年4月29日09:45 | #6

    @zinklink

    您好,我怎麼會漏回了呢?

    兩片網卡也不難,把MRTG設定檔中的eth0換成eth1再跑一次MRTG即可。就好像將CPU和DISK加入的感覺一樣,只是加的是ETH1

  5. aj
    2010年8月20日08:28 | #7

    您好:
    mrtg架好之後,已可以監看本機的網路流量,但如何利用mrtg在同網域下,監控其他使用者電腦的網路流量、指令如何下呢?
    初學者敬上

    • 嘉許
      2010年8月22日15:46 | #8

      您好,

      最簡單的方法,就是用同樣的軟體安裝在你要查看的電腦上,然後從你的電腦打該電腦的IP即可。

  1. 目前尚無任何 trackbacks 和 pingbacks。