Liunx運維監控_shark巨菜_基礎篇

 

Liunx運維監控_shark巨菜_基礎篇

 

一、監控重要性

單單從“監控”兩個字來談,範圍之廣可以涵蓋我們生活的方方面面,我們生活和工作中處處可見視頻監控的攝像機;機房中的電壓電流監控、乾溼計、溫度計;值班室的網絡監控,網站流量監控等等都是監控的範疇。

一個完備的監控系統能夠提供7x24小時的監控與報警功能。它能夠檢測網絡、網絡設備、服務器、數據庫、和各種應用系統的運行狀況;可以及時發現將要出現的問題,並通過短信、Email等方式通知、警告運維管理人員,以便運維管理人員能夠實時瞭解系統的運行情況,對故障進行及時的處理,從而避免造成重大損失。

二、監控的對象與分類

監控的對象就是想知道的狀態的一個集合,也可以說監控的對象就是那些能夠影響系統運行的穩定性、高效性的相關項目。

通常情況下,我們可以將監控對象這麼來分類:

1.   服務器監控。主要監控服務器如:CPU負載、內存使用率、磁盤使用率、登錄用戶數、進程狀態、網卡狀態等。

2.   應用程序監控。主要監控該應用程序的服務狀態、吞吐量、響應時間等。不同的應用程序需要監控的項目也不盡相同,這裏無法一一列舉。

3.   數據庫監控。之所以把數據庫監控單獨列出來,是因爲他的重要性。一般監控數據庫狀態,數據庫表或者表空間的使用情況,是否有死鎖,錯誤日誌,性能信息等等。

4.   網絡監控。主要監控當前的網絡狀況,網絡流量和鏈接狀態等。

三、監控的階段

我們根據系統監控的工作過程把監控分爲:數據收集、數據處理、數據呈現三個階段(監控系統本身並沒有嚴格的分類標準)。

1.   數據收集。收集階段負責從操作系統裝載數據、獲得數據值,傳輸或存儲數據。

l  使用系統工具

系統中的監控工具沒有標準,輸出的數據格式各不相同。有的具備傳輸功能、有的能監控多個對象、有的功能單一、有的相對完善。

l  通過內核工具

通過內核模塊來獲取系統、內核工作狀況的數據,例如oprofilesystemtap。這個方法很有效,但是一般需要單獨安裝軟件包(例如kernel-debuginfo),而且每當內核升級的時候相關程序的升級和代碼一致性問題也需要考慮。

l  /proc虛擬文件系統

通過/proc虛擬文件系統是一個比較快速、高效的進行系統監控的方法。使用/proc的主要缺點是必須頻繁的進行訪問、/proc裏面的信息需要經過解釋才能被用戶讀懂,但是相對的比使用內核工具更方便

2.   數據處理

處理階段負責將來自多個數據源的數據結合在一起,這種方法減少了監控對操作系統的負擔提高了效率;決定數據值是否改變並過濾它們;還對數據進行必要的轉換和計算。這個階段概況的說就是對數據進行處理、計算,準備好需要呈現的數值、圖片,或者需要發送的通知的內容。

3.   數據呈現

數據呈現就是把處理過後的數據通過系統的標準輸出(屏幕、遠程界面)、繪圖工具(如rrdtool)生成的圖片、電子郵件、短信等方式,提供給系統管理人員,以便根據這些信息及時的掌握系統的運行情況,發現潛在問題。

四、監控的分類

按照規模把監控系統分爲:工具監控、監控系統(平臺)監控。例如:freetopsysstatdstat等。

1.   工具監控

工具監控一般包括:操作系統自帶工具,其他組織提供的工具,根據自己的獨特需要自行編寫的監控腳本幾種。系統自帶工具一般只能提供系統某一個方面的情況,通常輸出信息不能做到通俗易懂。例如:uptime free iostat。第三方工具一般相對系統自帶工具在可讀性上有一定的提高,有的還能同時監控系統多方面的信息。例如:htop dstat sysstat

2.   監控系統(平臺)監控

之所以叫系統(平臺)是因爲起功能相對強大,一套系統加上一些擴展工具就可以滿足我們所有的監控需求。這種系統一般都和SNMP協議,RRDtool工具結合,進行信息採集和圖像繪製工作。常用的監控系統有:mrtggangliazabbixcactinagios等。

按照監控方式,可以把監控系統分爲:內部監控、外部監控。例如:系統命令和Nagios系統。

1.   內部監控

內部監控一般是通過監控工具、監控代理軟件或自制腳本對服務器自身的運行狀態進行監控和報告,報告信息可以直接顯示在終端屏幕上、記錄到日誌中或者傳輸給監控系統集中處理。

2.   外部監控

外部監控一般常用來對服務器的連通性、服務狀態、指定頁面等項目進行監控,因爲這些項目都不需要受控服務器安裝監控工具,都可以在監控系統上直接進行。

五、系統自帶工具

首先要介紹的是常用來查看系統裏面內存使用率的工具freefree命令和-m參數一起使用,可以把輸出的信息轉換成MB格式。如果想看到更多的信息可以使用圖片中的選項。

free


free命令只需要注意空閒內存不包括buffers+cached就可以了。其他諸如uptimetop等命令就不介紹了,太基礎了。看幾個不太常用但是也比較給力的吧。

dstat命令可以提供可讀性稍高的,多方面的系統資源信息。命令附帶參數較多,在下面的例子裏面使用了“-tlcpmsn  5 5”這樣的參數,用來顯示系統的時間、系統負載、cpu使用率、進程、內存使用率、交互分區使用率、網絡傳輸數據庫的信息,並且每5秒彙總一次,記錄5次之後停止。


dstat

系統裏面的另一個自帶但是不會默認安裝的工具是iptrafiptraf可以啓動一個類似#system-config-network-tuiTUI界面(Text User Interface 文本用戶界面),通過iptraf提供的這樣的界面可以簡化監控工具的使用難度。


iptraf

六、第三方工具

第三方的監控工具一般在界面友好度和使用簡易度上會比系統自帶的工具有一定的提高。下面我們看幾個第三方的工具。其中比較常用的一個是htop,可以用它來替換系統默認的top工具了,主要是因爲htop工具在界面友好度和操縱簡便性上都較原始的top工具有了比較大的提高。


htop1


htop2

另一個比較常用的第三方工具是nloadnload工具可以把網絡流量轉換成比較已讀的柱狀圖的形式,並不需要啓動圖形界面,只是使用各種特殊符號來繪製。這種方式可以讓我們直觀的瞭解到現在系統的網絡帶寬使用情況;在操縱簡便性上也比較好,可以使用鍵盤上的←→按鍵在不同的網絡接口中切換;也可以犧牲柱狀圖的功能把所有接口顯示在一個屏幕上。


nload1


nload2

第三方工具中最後介紹的也是功能最強大的nmonnmon工具是IBM公司爲AIX系統開發的性能監控工具,在2009727日開源。從下面的截圖中我們不難看出nmon可以涵蓋需要監控的各個方面,從CPU資源到網絡,從磁盤IO到文件系統使用。而且可讀性和易用性也很好。


nmon1


nmon2

七、自制腳本監控

除了系統自帶的和第三方提供的監控工具之外,我們還可以根據自己的需求,對這些工具提供的信息進行篩選、過濾或者進一步的處理,從中得到我們需要的信息。例如,我們只需要知道磁盤的空間是否不足,但是我們並不需要經常的查看磁盤的用量。又如,我們只需要再某個進程意外終止的時候進行某種補救操作,而不需要每次都去查看進程是否在運行等。

下面我們來看一個用來監控磁盤空間的腳本“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

在腳本中使用了whilesleep,通過whiletrue進行腳本無限循環的執行,通過sleep控制執行次數;通過“&”這個方式達到此監控腳本一直在後臺執行。再加上whilesleep可以讓腳本每天執行一次檢查報告的目的。在實際工作中我們可以把監控的目錄修改成網站的網頁存放目錄。


shell1


shell2

平時在工作中還有需要對系統的進程是否運行,或者服務是否正常進行監控。我們也可以利用上面這個腳本中使用的while true與“&”來實現一個簡單的監控功能。具體腳本如下“check_process.sh”。

#!/bin/bash

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

done


shell3

八、sysstat

sysstatLinux系統中常用的工具包,它主要的用途是觀察服務器負載,比如CPU和內存的佔用率、網絡使用率和磁盤寫入與讀取的速度等。sysstat功能上可以做到和其他監控工具一樣的即時查看,也可以生成日誌文件記錄資源使用情況。

sysstat工具包中包括多個可執行程序:iostat(用於統計CPUI/O設備的數據);mpstat(用於統計CPU相關的數據);sadf(用於把數據轉換成方便導入數據庫的格式);sar(收集報告保存系統活動信息)。


sysstat1


sysstat2

sysstat工具包中還有三個比較重要的程序,他們的作用就是生成/var/log/sa/sa19這樣的日誌文件,用來存儲信息。三個工具都在/usr/lib/sa/目錄中分別是:sa1(收集並存儲系統活動信息寫入二進制文件);sa2(收集每天的系統活動信息寫入日誌文件);sadc(信息收集工具)。

其實可以通過以下的簡單shell命令,把sysstat的數據轉換成csv格式的文件。再到windows系統中經過excel軟件的加工就可以形成容易讀懂的柱狀圖了。


sysstat3


sysstat4

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章