Liunx運維監控_shark巨菜_基礎篇
一、監控重要性
單單從“監控”兩個字來談,範圍之廣可以涵蓋我們生活的方方面面,我們生活和工作中處處可見視訊監控的錄影機;機房中的電壓電流監控、幹濕計、溫度計;值班室的網絡監控,網站流量監控等等都是監控的範疇。
一個完備的監控系統能夠提供7x24小時的監控與報警功能。它能夠檢測網絡、網絡裝置、伺服器、資料庫、和各種應用系統的運作狀況;可以及時發現将要出現的問題,并通過短信、Email等方式通知、警告運維管理人員,以便運維管理人員能夠實時了解系統的運作情況,對故障進行及時的處理,進而避免造成重大損失。
二、監控的對象與分類
監控的對象就是想知道的狀态的一個集合,也可以說監控的對象就是那些能夠影響系統運作的穩定性、高效性的相關項目。
通常情況下,我們可以将監控對象這麼來分類:
1. 伺服器監控。主要監控伺服器如:CPU負載、記憶體使用率、磁盤使用率、登入使用者數、程序狀态、網卡狀态等。
2. 應用程式監控。主要監控該應用程式的服務狀态、吞吐量、響應時間等。不同的應用程式需要監控的項目也不盡相同,這裡無法一一列舉。
3. 資料庫監控。之是以把資料庫監控單獨列出來,是因為他的重要性。一般監控資料庫狀态,資料庫表或者表空間的使用情況,是否有死鎖,錯誤日志,性能資訊等等。
4. 網絡監控。主要監控目前的網絡狀況,網絡流量和連結狀态等。
三、監控的階段
我們根據系統監控的工作過程把監控分為:資料收集、資料處理、資料呈現三個階段(監控系統本身并沒有嚴格的分類标準)。
1. 資料收集。收集階段負責從作業系統裝載資料、獲得資料值,傳輸或存儲資料。
l 使用系統工具
系統中的監控工具沒有标準,輸出的資料格式各不相同。有的具備傳輸功能、有的能監控多個對象、有的功能單一、有的相對完善。
l 通過核心工具
通過核心子產品來擷取系統、核心工作狀況的資料,例如oprofile、systemtap。這個方法很有效,但是一般需要單獨安裝軟體包(例如kernel-debuginfo),而且每當核心更新的時候相關程式的更新和代碼一緻性問題也需要考慮。
l /proc虛拟檔案系統
通過/proc虛拟檔案系統是一個比較快速、高效的進行系統監控的方法。使用/proc的主要缺點是必須頻繁的進行通路、/proc裡面的資訊需要經過解釋才能被使用者讀懂,但是相對的比使用核心工具更友善
2. 資料處理
處理階段負責将來自多個資料源的資料結合在一起,這種方法減少了監控對作業系統的負擔提高了效率;決定資料值是否改變并過濾它們;還對資料進行必要的轉換和計算。這個階段概況的說就是對資料進行處理、計算,準備好需要呈現的數值、圖檔,或者需要發送的通知的内容。
3. 資料呈現
資料呈現就是把處理過後的資料通過系統的标準輸出(螢幕、遠端界面)、繪圖工具(如rrdtool)生成的圖檔、電子郵件、短信等方式,提供給系統管理人員,以便根據這些資訊及時的掌握系統的運作情況,發現潛在問題。
四、監控的分類
按照規模把監控系統分為:工具監控、監控系統(平台)監控。例如:free、top、sysstat、dstat等。
1. 工具監控
工具監控一般包括:作業系統自帶工具,其他組織提供的工具,根據自己的獨特需要自行編寫的監控腳本幾種。系統自帶工具一般隻能提供系統某一個方面的情況,通常輸出資訊不能做到通俗易懂。例如:uptime free iostat。第三方工具一般相對系統自帶工具在可讀性上有一定的提高,有的還能同時監控系統多方面的資訊。例如:htop dstat sysstat。
2. 監控系統(平台)監控
之是以叫系統(平台)是因為起功能相對強大,一套系統加上一些擴充工具就可以滿足我們所有的監控需求。這種系統一般都和SNMP協定,RRDtool工具結合,進行資訊采集和圖像繪制工作。常用的監控系統有:mrtg、ganglia、zabbix、cacti、nagios等。
按照監控方式,可以把監控系統分為:内部監控、外部監控。例如:系統指令和Nagios系統。
1. 内部監控
内部監控一般是通過監控工具、監控代理軟體或自制腳本對伺服器自身的運作狀态進行監控和報告,報告資訊可以直接顯示在終端螢幕上、記錄到日志中或者傳輸給監控系統集中處理。
2. 外部監控
外部監控一般常用來對伺服器的連通性、服務狀态、指定頁面等項目進行監控,因為這些項目都不需要受控伺服器安裝監控工具,都可以在監控系統上直接進行。
五、系統自帶工具
首先要介紹的是常用來檢視系統裡面記憶體使用率的工具free,free指令和-m參數一起使用,可以把輸出的資訊轉換成MB格式。如果想看到更多的資訊可以使用圖檔中的選項。
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164021449.jpg"></a>
free指令隻需要注意空閑記憶體不包括buffers+cached就可以了。其他諸如uptime、top等指令就不介紹了,太基礎了。看幾個不太常用但是也比較給力的吧。
dstat指令可以提供可讀性稍高的,多方面的系統資源資訊。指令附帶參數較多,在下面的例子裡面使用了“-tlcpmsn 5 5”這樣的參數,用來顯示系統的時間、系統負載、cpu使用率、程序、記憶體使用率、互動分區使用率、網絡傳輸資料庫的資訊,并且每5秒彙總一次,記錄5次之後停止。
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164126308.jpg"></a>
系統裡面的另一個自帶但是不會預設安裝的工具是iptraf。iptraf可以啟動一個類似#system-config-network-tui的TUI界面(Text User Interface 文本使用者界面),通過iptraf提供的這樣的界面可以簡化監控工具的使用難度。
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164217274.jpg"></a>
六、第三方工具
第三方的監控工具一般在界面友好度和使用簡易度上會比系統自帶的工具有一定的提高。下面我們看幾個第三方的工具。其中比較常用的一個是htop,可以用它來替換系統預設的top工具了,主要是因為htop工具在界面友好度和操縱簡便性上都較原始的top工具有了比較大的提高。
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164306279.jpg"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164341769.jpg"></a>
另一個比較常用的第三方工具是nload。nload工具可以把網絡流量轉換成比較已讀的柱狀圖的形式,并不需要啟動圖形界面,隻是使用各種特殊符号來繪制。這種方式可以讓我們直覺的了解到現在系統的網絡帶寬使用情況;在操縱簡便性上也比較好,可以使用鍵盤上的←→按鍵在不同的網絡接口中切換;也可以犧牲柱狀圖的功能把所有接口顯示在一個螢幕上。
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164422332.jpg"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164459967.jpg"></a>
第三方工具中最後介紹的也是功能最強大的nmon。nmon工具是IBM公司為AIX系統開發的性能監控工具,在2009年7月27日開源。從下面的截圖中我們不難看出nmon可以涵蓋需要監控的各個方面,從CPU資源到網絡,從磁盤IO到檔案系統使用。而且可讀性和易用性也很好。
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164543791.jpg"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164631285.jpg"></a>
七、自制腳本監控
除了系統自帶的和第三方提供的監控工具之外,我們還可以根據自己的需求,對這些工具提供的資訊進行篩選、過濾或者進一步的處理,從中得到我們需要的資訊。例如,我們隻需要知道磁盤的空間是否不足,但是我們并不需要經常的檢視磁盤的用量。又如,我們隻需要再某個程序意外終止的時候進行某種補救操作,而不需要每次都去檢視程序是否在運作等。
下面我們來看一個用來監控磁盤空間的腳本“monitor_diskusage.sh”:
#!/bin/bash
DIR="/home/shell"
DISKFUL=`LANG=C df -H $DIR|awk '{print $5}'|grep -v Use|cut -d"%" -f1`
while true;do
until [ $DISKFUL == 80 ];do
echo "Disk space normal" | mail -s "Disk space normal" root@localhost
DISKFUL=`LANG=C df -H $DIR|awk '{print $5}'|grep -v Use|cut -d"%" -f1`
sleep 86400
done
echo echo "Over 80%" | mail -s "Over 80%" root@localhost
DISKFUL=`LANG=C df -H $DIR|awk '{print $5}'|grep -v Use|cut -d"%" -f1`
sleep 86400
done
在腳本中使用了while和sleep,通過while與true進行腳本無限循環的執行,通過sleep控制執行次數;通過“&”這個方式達到此監控腳本一直在背景執行。再加上while和sleep可以讓腳本每天執行一次檢查報告的目的。在實際工作中我們可以把監控的目錄修改成網站的網頁存放目錄。
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164819723.jpg"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164857646.jpg"></a>
平時在工作中還有需要對系統的程序是否運作,或者服務是否正常進行監控。我們也可以利用上面這個腳本中使用的while true與“&”來實作一個簡單的監控功能。具體腳本如下“check_process.sh”。
process="httpd"
while true; do
result=`pstree | grep $process`
if [ $? -eq 1 ]; then
echo "$process not running." | mail -s "$process check" root@localhost
else
echo "$process is running." | mail -s "$process check" root@localhost
fi
sleep 600
<a target="_blank" href="http://blog.51cto.com/attachment/201106/164932252.jpg"></a>
八、sysstat
sysstat是Linux系統中常用的工具包,它主要的用途是觀察伺服器負載,比如CPU和記憶體的占用率、網絡使用率和磁盤寫入與讀取的速度等。sysstat功能上可以做到和其他監控工具一樣的即時檢視,也可以生成日志檔案記錄資源使用情況。
sysstat工具包中包括多個可執行程式:iostat(用于統計CPU和I/O裝置的資料);mpstat(用于統計CPU相關的資料);sadf(用于把資料轉換成友善導入資料庫的格式);sar(收集報告儲存系統活動資訊)。
<a target="_blank" href="http://blog.51cto.com/attachment/201106/165012155.jpg"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201106/165055771.jpg"></a>
sysstat工具包中還有三個比較重要的程式,他們的作用就是生成/var/log/sa/sa19這樣的日志檔案,用來存儲資訊。三個工具都在/usr/lib/sa/目錄中分别是:sa1(收集并存儲系統活動資訊寫入二進制檔案);sa2(收集每天的系統活動資訊寫入日志檔案);sadc(資訊收集工具)。
其實可以通過以下的簡單shell指令,把sysstat的資料轉換成csv格式的檔案。再到windows系統中經過excel軟體的加工就可以形成容易讀懂的柱狀圖了。
<a target="_blank" href="http://blog.51cto.com/attachment/201106/165130351.jpg"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201106/165209695.jpg"></a>
本文轉自 sharkyan 51CTO部落格,原文連結:http://blog.51cto.com/sharkyan/579750,如需轉載請自行聯系原作者