即時監控主機系統資源,對IT管理人員來說是每日的工作項目。為此,本文將介紹一套安裝十分簡易的開源碼即時監控主機系統資源軟體Monitorix,講解如何利用Monitorix以圖形的方式來即時呈現系統資源使用狀況,並監控Apache網站伺服器的運作情形。
一般而言,如果講到監控主機系統資源的軟體,相信很多人首先想到的應該會是MRTG(Multi Router Traffic Grapher),這是一套開源碼社群中頗富盛名的資源監控軟體,可即時擷取系統相關資源(如網路流量、記憶體使用率)的運作情形並以圖形的方式來呈現,讓管理者可更加方便地取得系統上資源使用的情況。但是,此類軟體安裝程序較為複雜安裝。因此,本文將介紹另外一套類似但安裝較為簡易的開源碼軟體Monitorix(官方網址是https://www.monitorix.org/),在此將以CentOS 8為例,說明如何利用Monitorix來監控系統資源及網站伺服器(Apache)的運作情形。
安裝Monitorix
Monitorix是一套以Perl語言所撰寫而成的資源監控軟體,主要是以圖形的方式來監控系統上的資源及網路服務的運作情形,除了提供主要的監控程式外,另外還提供一個小型的網站伺服器,讓使用者能夠更便利地使用網頁管理的方式來取得相關資訊。
在安裝Monitorix之前,首先要安裝所需的相關系統套件(Package),可執行以下的指令:
yum install https://dl.fedoraproject. org/pub/epel/epel-release-latest-8. noarch.rpm
接著,透過執行下列指令來安裝相關所需的套件:
yum install rrdtool rrdtool-perl yum install perl-libwww-perl perl-MailTools yum install perl-CGI perl-DBI yum install perl-XML-Simple perl- Config-General yum install perl-IO-Socket-SSL perl-HTTP-Server-Simple
在安裝相關所需的套件後,即可使用下列指令來安裝Monitorix:
yum install monitorix
常見組態設定
在安裝過程中,就會自動將主要執行檔(/usr/bin/monitorix)及執行時所參考的組態檔(/etc/monitorix/monitorix.conf)安裝至系統,接著說明monitorix.conf常見的組態設定,共分為「總體組態值設定」和「區段組態設定」兩種形式。
總體組態值設定
如圖1所示,此類組態設定會影響Monitorix運作時的動作,其格式如下:
組態名稱:組態值
其中,常見的總體組態說明如下:
此類設定主要是設定系統上相關日誌檔案的位置,由於不同的作業系統,可能會設定不一樣的日誌檔案,因此必須依自身的環境來設定。Monitorix就是利用解析此類檔案的內容資訊來取得相關的報表資訊,設定如圖2所示。
接著,簡單地說明幾個常用的日誌設定組態:
log_file:設定儲存Monitorix運作時所產生的日誌資料的檔案位置,可藉由此檔案的內容來掌握Monitorix運作情況。如果有更新組態設定的情形,建議在重新啟動後,也可利用查看此檔案的內容來確認相關更改的組態已正常地運作。
secure_log:設定系統上儲存認證資訊(例如登入服務成功或失敗)的檔案位置(此檔案可能會因作業系統不同而有所不同),Monitorix即可依據此檔案的內容來取得SSH、POP3、FTP、Telnet等網路服務登入成功的資訊,以產生相關的報表。
mail_log:設定系統上儲存郵件伺服器(SMTP)日誌資料的檔案位置。Monitorix將依據此檔案的內容來取得郵件伺服器的相關運作的資料(例如電子郵件的寄發狀態等資訊),目前Monitorix可解析著名的Sendmail、Postfix等郵件伺服器所產生的日誌格式。
imap_log:設定系統上儲存收信伺服器(POP3或IMAP)日誌資料的檔案。Monitorix將依據此檔案的內容來取得收信伺服器的相關資料(如登入成功等資訊),目前Monitorix可解析Dovecot、UW-IMAP等收信伺服器所產生的日誌格式。
ftp_log:設定系統上儲存FTP伺服器日誌資料的檔案。Monitorix將從此檔案取得FTP伺服器的相關資料(如登入成功、存取流量等資訊)。目前Monitorix可解析ProFTPD、vsftpd等FTP伺服器所產生的日誌格式。
區段組態設定
此類設定主要在設定個別服務運作的組態設定,其格式如下:
如圖3所示為Monitorix所提供httpd_builtin服務(其為網站伺服器,讓使用者能夠利用網頁管理的方式來取得相關資訊)的設定。
httpd_builtin常用的組態設定,如下所示:
enabled:設定是否啟動網站伺服器,支援使用者以網頁介面進行管理。y為啟用,n為不啟用。
port:設定網站伺服器運作的通訊埠。
user:設定網站伺服器運作所使用的使用者權限。
group:設定網站伺服器運作所使用的群組權限。
log_file:設定儲存httpd_builtin服務運作時所產生的日誌儲存位置。
hosts_allow:設定可連線此網站伺服器的來源IP,為了安全起見,建議使用者可利用此組態來限定可連線的來源IP資訊。
hosts_deny:與hosts_allow相反,此組態為設定不允許連線的來源IP資訊。
為了安全起見,httpd_builtin服務也支援HTTP基本認證(HTTP Basic Auth)功能,提供使用者以帳號及密碼的控管方式登入,設定如下(其中#為註解):
另外一個重要的區段組態是,設定欲監控系統內資源的種類。Monitorx提供了十餘種資源監控的方式,除了主機系統上常見的系統資源和網路資源功能外,還包括常見的MySQL、Apache、Bind等伺服器,使用者可在此區段中設定想要監控的資源,如圖4所示,相關設定格式如下:
Monitorx提供了為數不少的資源監控功能,例如System、Network、MySQL。在此簡單說明最常使用的系統(System)和網路(Network)資源監控功能:
System:主要用來監控主機系統資源使用情況,如CPU、記憶體、程序(Process)等資料,並以圖形化的方式來呈現,輸出如圖5所示,分成(A)、(B)、(C)、(D)四區做說明。
(A) 顯示系統目前負擔(Load)的情況
(B) 顯示系統上的記憶體配置使用情況
(C) 顯示系統上程序運作的狀況
(D) 顯示系統開機運作的時間長度
Network:主要用來監控系統上網路流量的相關資訊,如存取封包流量及發生錯誤的部分,如圖6所示。
除了一般的網路流量的監控外,還可根據封包的個別狀態(如SYN_SENT)進行統計,如圖7所示。
監控Apache運作
在簡單說明幾個常用的圖形監控功能後,接下來示範如何利用Monitorx來監控網站伺服器(Apache)的運作情形。
Monitorix利用取得Apache伺服器的mod_status模組輸出資料來繪製相關監控圖形,mod_status是一個Apache伺服器所提供的原生模組,主要用來即時監控Apache運作時的相關狀態,並以文字型式輸出相關的資訊。但因輸出的資訊會詳細地描述Apache的運作資訊,其中不乏為敏感的資訊,例如網站伺服器啟動或重新啟動的時間、已持續運作的時間等基本資訊、相關已運作的進程(Process)與線程(Thread)服務狀態、系統上資源的使用情況(如使用CPU使用百分比等資訊)等等,所以為了安全的考量,預設會關閉此模組。因此,這裡必須先啟用mod_status模組功能。
首先,利用下列指令來確認是否有提供mod_status模組:
httpd -M | grep status
如果輸出如下列的字樣,就表示有支援mod_status模組:
status_module (shared)
接著,即可設定httpd.conf(Apache組態檔)來啟用,相關設定如下:
當設定完成並重新啟動Apache後,可透過「http://<伺服器IP>/server-status」來連結,而在httpd.conf中調整組態後,便能啟用mod_status模組的功能。
最後,重新啟動Apache,並連結「http://<伺服器IP>/server-status」,就可以取得Apache目前的運作狀態,其輸出如圖8所示。
如果要定時取得mod_status模組的輸出資訊,可使用refresh參數來定時更新(如多少秒數重新取得資料),URL如下:
http://<伺服器IP>/server- status?refresh=秒數
完成Apache的設定後,接著繼續其他設定。可透過monitorx.conf中的來啟動Apache監控,設定如下:
接著,執行下列指令重啟Monitorix:
systemctl start monitorix
就能夠取得Apache執行時的相關系統資源情況,如CPU使用率等等,如圖9所示。
至此,一套簡單監控系統資源和Apache網站伺服器運作情形的監控解決方案即告完成!
<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>