linux 服務器常規巡檢並生成報表(一)


背景

最近接到一個需求要求每天巡檢各台業務設備,並導出報表,但一想到設備有N台,一台台每天巡檢這樣的重復勞作實在是太傷神了,因此決定寫一個腳本來搞定這件事。

 

首先,第一個要解決的問題是批量服務器執行命令的問題。

   之前嘗試用過pssh來進行批量服務器上執行腳本,限制較少,效果不錯,各位有興趣的可以試一下,本次為了跟上互聯公司的腳步,打算用ansible對服務器進行批量操控。

   至於ansible的手冊介紹可以百度下,當然使用ansible的前提是你被控服務器的python 版本2.4以上,控制機的版本要在2.6以上。

ansible的安裝

   安裝ez_setup 並執行 安裝命令

wget -q http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
esay_install ansible

    接下來需要配置下ansible的host文件作為測試。在/etc下創建一個ansible目錄。

mkdir /etc/ansible
vi /etc/ansible/hosts

# hosts
[local]
127.0.0.1

   然后運行下命令看看是否成功執行。

ansible  all -a "who"

   如果發現是密碼驗證方式錯誤則設置一下免密登陸。

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub root@127.0.0.1

  再測試一下該命令發現運行成功了。

image

至此,該問題解決。

 image

然后,開始考慮各項服務器上的檢測

   

需求一、檢測服務器的瞬時CPU使用率

   參考博文:http://blog.csdn.net/marising/article/details/5182771

                  http://blog.chinaunix.net/uid-14825809-id-2943235.html

   linux基本的cpu的展示屬性總共有7種

    1.idle,表示CPU閑置並等待工作分配.
    2.user,表示CPU在運行用戶的進程
    3.system,表示CPU在執行kernel工作
    4.nice,表示CPU花費在被nice改變過優先級的process上的時間
    5.iowait,表示CPU等待IO操作完成的時間
    6.irq,表示CPU開銷在響應硬中斷上的時間
    7.softirq,表示CPU開銷在響應軟中斷上的時間

    屬性較多,都很有用(load average也十分有意義),但基於報表展示精簡考慮,只摘取idle所占用的時間,然后1-idle%即可求出當前cpu屬性。

    通過vmstat命令則可以直接查看當前的cpu,內存以及io的屬性信息。

image

    然后可以通過vmstat 1 10 來顯示10s內的cpu屬性值。可以簡單寫出腳本,一條代碼搞定。

vmstat 1 10 | awk 'BEGIN{i=0}NR>2{i+=$15}END{printf("%.1f%\t",100-i/10)}'

 

 

需求二、檢測服務器的瞬時內存使用率

   查看當前服務器內存使用率有許多方法可以看,比如top、cat /pro/meminfo、vmstat、free或者一些圖形化的工具,在此選擇最簡單的free來操作。

   image

  由於linux為將buffers和cached充分利用,能緩存的內容都會盡量往磁盤上緩存,所以服務器的內存使用率=free+buffers+cached

  最后“-/+ buffers/cache:”這一行的內容即為當前實際的內存使用率。

  統計10s內的內存數值可得如下代碼。

for i in `seq 1 10`
   do
    free | fgrep "buffers/cache"
    sleep 1
   done | awk 'BEGIN{a=0;b=0}{a+=$3;b+=$3+$4}END{printf("%.1f%\t",a/b*100)}'

image

  至此完成該需求。

 

需求三、監測服務器的瞬時硬盤使用率

image

   習慣性地用df 來查看當前硬盤使用率,如圖,直接查看df --total可以堪當當前硬盤的使用率

df --total | fgrep total|awk '{printf("%s\t",$5)}'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM