主機監控 開源碼 RRD資料庫 Log Apache

只需Apache啟用mod_status支援 數百外掛整合各種監控

開源Munin監測系統網路 輕鬆掌握Apache運行

2024-09-25
Munin是開放原始碼社群中一套有名的監控工具,主要用於監測主機系統和網路服務的性能。其最大的優點在於提供一個強大的第三方程式框架(Plugin)架構,方便整合第三方程式開發者所開發的監控程式,本文中將說明如何以Munin來監控Apache網站運作的情況。

由Perl語言撰寫而成的Munin(官方網站為https://munin-monitoring.org/)是開放原始碼社群中一套有名的監控工具,主要用於監測主機系統和網路服務(如網站伺服器)的性能。其最大的優點在於提供一個強大的第三方程式框架(Plugin)架構,可以方便整合第三方程式開發者所開發的監控程式,例如監控CPU使用率、記憶體使用情況、磁碟空間、網路流量等資源,目前已有多達數百支的Plugin(https://gallery.munin-monitoring.org/)可供使用者下載來使用。藉以提升Munin的監控能力。其運作架構為主從式架構分為:

‧Munin節點(Node,以下簡稱Munin Node):運行在需要監控的主機上,定期收集被監控主機之資源和應用程式的運作數據。

‧Munin伺服器(Server,以下簡稱Munin Server):負責收集Munin Node所獲得的資訊,並提供圖形化的網頁來呈現相關資訊。使用者使用網頁瀏覽器即可查看所有相關的資訊。

在本文中,將說明如何以Munin來監控Apache網站運作的情況,所使用的作業系統為CentOS Stream 9。

開始安裝Munin

首先安裝Munin Server,但由於Munin伺服器使用RRD(Round Robin Database)資料庫來儲存所收集到的監控資訊,因此必須先安裝RRD。RRD是一種專門用來儲存具有時間序列特性資訊的資料庫。所謂的時間序列資訊,表示該資料會與時間有高度的相關,例如系統上的Log記錄即會隨著時間不斷地記錄,而本文中所記錄的監控資訊,也是具有相同的特性。使用如下指令來安裝rrd:

dnf --enablerepo=crb install rrdtool-devel

接著,以如下指令安裝所需要的Perl程式庫:

dnf --enablerepo=crb install perl-DateTime dnf --enablerepo=crb install  perl-Params-Validate dnf --enablerepo=crb install  perl-File-Copy-Recursive dnf --enablerepo=crb install perl-Taint-Runtime dnf --enablerepo=crb install  perl-Log-Dispatch

安裝完相關的程式庫後,接著安裝所需的Perl套件(Packages):

cpan install Time::HiRes cpan install Storable cpan install Digest::MD5 cpan install HTML::Template cpan install Text::Balanced cpan install Params::Validate cpan install TimeDate cpan install Net::SSLeay cpan install Getopt::Long cpan install File::Copy:: Recursive cpan install CGI::Fast cpan install IO::Socket::INET6 cpan install Log::Log4perl   cpan install IPC::Shareable cpan install Log::Dispatch cpan install Log::Dispatch: :FileRotate cpan install MIME::Lite cpan install Mail::Sender cpan install Mail::Sendmail cpan install MailTools #如下為Munin Node所需要的Perl套件 cpan install Net::Server cpan install Net::Server::Fork cpan install Time::HiRes cpan install Net::SNMP cpan install Crypt::DES cpan install Digest::SHA1, cpan install Digest::HMAC,

在相關所需的軟體均安裝成功後,即可安裝Munin相關主程式,執行以下指令:

dnf install munin -y         #安裝Munin Server dnf install munin-node  -y   #安裝Munin Node dnf install munin-plugins -y   #安裝Munin第三方監控程式

Munin Server主程式簡介

在安裝完成後,先說明Munin Server所提供的執行檔功能。

munin-update

此程式主要是用來收集Munin Node的數據,可設定定期執行的頻率(例如每5分鐘收集一次),向被監控的主機資源(例如CPU、記憶體、磁碟、網路)取得相關監控資訊,並將相關資訊更新至RRD資料庫中。

munin-cron

此程式主要是用來負責定時呼叫munin-update以更新監控資訊。

munin-check

此程式可檢查Munin相關檔案與目錄的權限問題。

munin-graph

此程式負責將所收集到的監控資訊,產生成各種監控圖表,以便使用者能夠方便地以圖形化的方式來掌握系統的運作情況。

munin-html

此程式主要負責將munin-graph所產生的相關圖檔,動態地生成相關網頁介面,讓使用者能夠以瀏覽器來掌握系統的運作情況。

munin-limits

除了收集及顯示系統運作資訊的功能外,Munin也有提供主動警告(Alarm)機制,一旦發現系統運作狀態符合所設定警告門檻值(例如CPU運作達90%以上),便會發出警報來通知管理者,此程式即是用來檢查是否有超過門檻值的情況。

munin-node-configure

主要用來檢查Munin Node上,啟用的Plugin的情形。

Munin Server常用組態介紹

在簡單說明過相關主程式的功能後,接著介紹Munin Server常用的組態設定,組態檔為「/etc/munin/munin.conf」,如表1所示。

Munin Node常用組態說明

在簡單說明過Munin Server常用的組態後,接下來介紹Munin Node常用的組態設定,組態檔為「/etc/munin/munin-node.conf」,如表2所示。

了解Munin Server與Munin Node相關程式與組態後,接著就實作一個利用Munin來監控Apache網站伺服器運作情況的監控系統。為了簡化說明起見,這裡會將Munin Server與Munin Node運作在同一台主機上,並且使用定時(cron)取得監控資訊以及產生相關監控網頁的方式來執行。由於Munin Node是藉由Apache的mod_status模組功能來取得相關運作資訊,因此必須先啟用Apache的mod_status模組。

啟用mod_status模組

為了能夠即時取得Apache伺服器系統上運作的相關資訊數據,Apache提供了mod_status模組來取得相關的執行狀態資訊,並以文字型式輸出,而許多網站監控軟體,通常會利用此模組輸出的資訊來取得Apache運作狀態。本文中所使用Munin的Apache監控Plugin也是利用mod_status模組所輸出的文字資訊來繪製相關運作狀態圖,因此必須安裝並且啟用mod_status模組。

一般來說,Apache會預設安裝mod_status模組,只是基於安全的考量(因為其提供了大量如系統資源使用情況或運作的進程Process與線程Thread等等運作相關敏感資訊),因此在大部分的情況下,預設會關閉此模組,所以只要正確地調整Apache伺服器的組態檔(httpd.conf),使其重新啟用mod_status模組即可。如下步驟,首先確認是否有載入mod_status模組:

LoadModule status_module modules/ mod_status.so

接著,設定啟用mod_status模組,如下設定(其中#為註解):

  SetHandler server-status     Require host localhost     #設定僅有本機可使用

由於mod_status模組會輸出詳細的運作狀態,因此必須要有相關的控管機制,例如使用帳號密碼或採限定來源連線,在此將限定僅有本機可取得mod_status所輸出的資訊。

在設定完成後並重新啟動Apache伺服器後,使用瀏覽器即可連結網址「http://localhost/server-status」來取得相關資訊,如圖1所示。

圖1  連線「http://localhost/server-status」網址來取得相關資訊。

除了手動取得mod_status模組的輸出資訊之外,該模組也提供自動化的輸出資訊。如果想要自動定時地取得輸出資訊,可以使用refresh參數(單位為秒),如下例即表示每隔10秒就自動取得資訊:

http:// <網站伺服器>/server-status? refresh=10

由於預設的輸出樣式太過複雜,不易讓第三方程式(如本文的Munin)進行解析,因此該模組另外提供了auto參數(http:// <網站伺服器>/server-status?auto),可將輸出資訊改以更簡潔的文字輸出形式呈現,如圖2所示。

圖2  將輸出資訊改以更簡潔的文字輸出形式呈現。

監控Apache網站運作

在確認Apache已正常啟用mod_status模組功能後,接下來必須啟用Munin所提供用來監控Apache的Plugin。啟用步驟很簡單,只須在Munin的plugin目錄(/usr/share/munin/plugins/apache_accesses/)中建立相關連結即可,指令內容如下:

ln -s /usr/share/munin/plugins/ apache_accesses   /etc/munin /plugins/apache_accesses ln -s /usr/share/munin/plugins/ apache_processes   /etc/munin/ plugins/apache_processes ln -s /usr/share/munin/plugins/ apache_volume /etc/munin/plugins /apache_volume

接著,利用「munin-node-configure | grep apache」來確認是否已啟用相關Plugin,如圖3所示。

圖3  確認是否已啟用相關Plugin。

然後,設定Munin Server的組態檔,主要是設定下列組態,表示要以定時的方式產生監控網頁,並設定監控網頁所在目錄:

graph_strategy cron html_strategy cron htmldir /var/www/html/munin

然後設定系統上的cron資訊,譬如每3分鐘以使用者munin的身分執行munin-cron(即每3分鐘更新一次監控網頁):

 */3 * * * * sudo -u munin /usr/ bin/munin-cron

而後,再分別啟動Munin Node及Munin Server:

systemctl start munin-node systemctl start munin

如果一切正常,應可在htmldir目錄(/var/www/html/munin)產生如圖4所示的監控網頁。至此,以Munin監控Apache的系統即告完成。

圖4  查看監控網頁。

<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!