1. 程式人生 > >linux實戰(十一)----shell監控伺服器效能---綜合運用

linux實戰(十一)----shell監控伺服器效能---綜合運用

前面分別學習了一些監控指令碼和實用的功能指令碼,本章節是綜合篇,把前面學習的內容綜合起來,實現對伺服器效能的監控。

主要實現如下功能:

為了持續觀察伺服器每天的基本執行狀態,提供方便方便易讀的集中的日誌記錄資料,需要結合shell指令碼的任務計劃設定,定期記錄不同時間段伺服器的CPU負載、記憶體和交換空間、磁碟使用率等各種資訊。


1、每隔15分鐘記錄一次伺服器的基本執行狀況,包括:CPU負載、記憶體和交換空間、磁碟空間資訊
2、最近使用者等情況
3、記錄當時的時間資訊(以YYYY-mm-dd HH:MM:SS的格式輸出所有資訊追加到檔案/data/shell/running.log中)
4、每天晚上00:00分時備份running.log檔案;進行壓縮備份,儲存到/data/shell

目錄中;備份的檔名參考:runing.log-YYYYmmdd.tar.bz2;備份完成刪除當天的記錄檔案(running.log)

主要參考:

相關命令指令碼學習

獲取CPU負載資訊

function GetSysCPU   
{   
  CpuIdle=`vmstat 1 5 |sed -n '3,$p'|awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}'`  
  CpuNum=`echo "100-$CpuIdle" | bc`   
  echo $CpuNum   
}  
vmstat 用來顯示虛擬記憶體的資訊
delay:重新整理時間間隔。如果不指定,只顯示一條結果。
count:重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,這時重新整理次數為無窮。
vmstat   1   5   表示每1秒重新整理一次,取5次 
sed -n '3,$p '      -n表示只打印選中的行,地址是一個數字,則表示行號; “$"符號,表示最後一行。 '3,$'表示 第3行到最後一行,p是命令表示列印輸出。  awk '{x = x + $15} END {print x/5}' 
表示將每行的 第15列相加後 除以5求平均  awk -F. '{print $1}' 用.來分隔取第1列  也就是對平均數 取整的意思

CpuIdle=`vmstat 1 5 |sed -n '3,$p'|awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}'` 

意思是  在vmstat 中 計算出 5秒內的CPU空閒時間平均數

CpuNum=`echo "100-$CpuIdle" | bc`

用100減去空閒時間百分比平均數 則得到  CPU的使用情況。

也就是我們求的CPU負載資訊。

獲取記憶體資訊


function GetSysMem 
{   
  Mem=`free -m | grep Mem | awk '{print $4}'`  
  echo $Mem  
} 
使用free命令檢視linux系統記憶體使用情況:(以M為單位)

# free -m  
             total       used       free     shared    buffers     cached
Mem:          3952       3414        538          0        168        484
-/+ buffers/cache:       2760       1191
Swap:         8191         86       8105



free -m | grep Mem | awk '{print $4} 獲取剩餘記憶體

grep Mem: 選出含有Mem的行

awk '{print $4}'   以空白作分隔,取第四列,這裡對應到 free,也就是獲取剩餘記憶體。

獲取交換空間資訊

function GetSysSwap
{   
  swap_free=`free -m | grep Swap | awk '{print  $4}'`  
  echo $swap_free  
} 

free -m | grep Swap | awk '{print  $4} 獲取剩餘當前剩餘的交換分割槽free大小  

grep Swap : 選出含有Swap 的行

awk '{print $4}'   以空白作分隔,取第四列,這裡對應到 free,也就是獲取剩餘Swap 。

獲取磁碟空間資訊

function GetSysSpace
{   
 
  SPACE=`df| grep -v  Use  | gawk  '{x = x + $5} END {print x}' | sed  's/%//'` 
  echo $SPACE 
} 


df| grep -v  Use  | gawk  '{x = x + $5} END {print x}' | sed  's/%//'

df是查詢磁碟使用情況的命令

grep -v Use 去掉含有Use字串的這一行

sed  's/%//'    s就是替換符,這裡表示匹配到後面含有%號的字串取%號前面的值(也就是s位置的值)

gawk  '{x = x + $5} END {print x}'      用空白分隔後取每一行的第5列 相加 得到最後值

也就是 磁碟空間的總使用百分比。

獲取最近使用者情況

使用last命令


獲取當前時間

YYYY-mm-dd HH:MM:SS的格式

date +"%Y-%m-%d %H:%M:%S"


備份檔案刪除原件

time=`date +"%Y%m%d"`   
  
tar cvf  - /data/shell/running.log  > runing.log-${time}.tar.bz2  
  
rm running.log 
新建一個running.log在/data/shell目錄下

然後執行命令




解壓可用

 tar -xvf runing.log-20160229.tar.bz2

綜合指令碼

我們在相關命令中已經學習了實現監控伺服器效能的所有命令。

我們現在就把它們組合起來。

分別組合成 

checkSys.sh 負責把所有監控資訊寫入running.log檔案

backup.sh   負責備份刪除原檔案

checkSys.sh

function GetSysCPU   
{   
  CpuIdle=`vmstat 1 5 |sed -n '3,$p'|awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}'`  
  CpuNum=`echo "100-$CpuIdle" | bc`   
  echo $CpuNum   
}  






echo CPU have used  `GetSysCPU`%  >> running.log




function GetSysMem 
{   
  Mem=`free -m | grep Mem | awk '{print $4}'`  
  echo $Mem  
} 




echo free Mem is  `GetSysMem`M >> running.log




function GetSysSwap
{   
  swap_free=`free -m | grep Swap | awk '{print  $4}'`  
  echo $swap_free  
} 


echo free Swap is `GetSysSwap` M >> running.log




function GetSysSpace
{   
 
  SPACE=`df| grep -v  Use  | gawk  '{x = x + $5} END {print x}' | sed  's/%//'` 
  echo $SPACE 
} 




echo  Space have used  `GetSysSpace`%  >> running.log




last >> running.log




date +"%Y-%m-%d %H:%M:%S"  >> running.log




vim checkSys.sh 後寫入指令碼

執行 

chmod +x /data/shell/checkSys.sh

./checkSys.sh



結果:


backup.sh

time=`date +"%Y%m%d"`   
  
tar cvf  - /data/shell/running.log  > runing.log-${time}.tar.bz2  
  
rm running.log

vim backup.sh 後寫入指令碼

執行 

chmod +x /data/shell/backup.sh

./backup.sh


備份成功並刪除了原檔案


定時執行指令碼

現在兩個指令碼都可以正常運行了。

我們把checkSys設定成 每15分鐘執行一次

把backup.sh設定成每天00:00:00執行一次

crontab  -e 

進入定時執行配置
加入以下定時執行計劃即可。

*/15 * * * *  /data/shell/checkSys.sh  
0 0 * * * /data/shell/backup.sh  



到這裡我們整個監控伺服器效能的例子就完成了。

相關推薦

linux實戰()----shell監控伺服器效能---綜合運用

前面分別學習了一些監控指令碼和實用的功能指令碼,本章節是綜合篇,把前面學習的內容綜合起來,實現對伺服器效能的監控。 主要實現如下功能: 為了持續觀察伺服器每天的基本執行狀態,提供方便方便易讀的集

linux實戰()----shell監控tomcat服務是否正常----綜合運用

前面一章我們 嘗試了 批量的監控伺服器是否存活, 這一章我們來學習監控tomcat服務是否正常。 指令碼程式碼 指令碼程式碼如下: #!/bin/sh # func:自動監控tomcat並

Linux運維學習筆記之三監控利器Nagios實戰

第四十二章 監控利器Nagios實戰一、Nagios介紹1、哪些內容需要監控呢?(1)本地資源a、負載:uptime;b、CPU:top,sar,cpu溫度;c、磁碟:df;d、記憶體:free;e、IO:iostat;f、RAIDg、passwd檔案的變化(本地所有檔案指紋

Linux學習之二-shell編程基礎

用法 htm 如果 重定向 -a 創建 過去 .html 編寫代碼 Shell編程基礎 Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設計語言。Shell 是指一種應用程序,這個應用程序提供了一個界面,

Linux常用監控伺服器效能命令

列舉比較常用的幾種監控伺服器效能的Linux命令。其實,在我看來,目前針對Linux系統記憶體、硬碟、TCP/IP等等相關的指標,Linux本身自帶的或者是一些開源專案等基本上都能達到這個獲取伺服器效能資訊的目的。看著這麼多,讀者也許會眼花繚亂,個人給個建議,建議弄明白Linux自帶的top、free及其相關

linux雜談():LDAP伺服器的搭建

1.LDAP簡介      今天我們來介紹LDAP伺服器的搭建和客戶端的訪問,但是主要的問題在前者。首先我們要知道什麼是LDAP。      在日常交談中,你可能會聽到有些人這麼說:"我們要把那些東西存在LDAP中嗎?",或者"從LDAP資料庫中取出那些資料!",又或者"我

Linux周微職位

linux第十一周微職位系統的INPUT和OUTPUT默認策略為DROP;1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機;]# iptables -A INPUT -p tcp --dpo

linux)之初始化文件

fun ps1 史記 intern header 例如 internet $path 名稱 前面寫了很多linux的知識,其實很多都是命令的,所以要去多多的練習才能學的更好,加油為了好工作。 要麽現在懶惰,未來討飯。要麽現在努力,未來愜意。 一、初始化文件概述   1

Linux) 文件目錄權限 chmod umask chown

mar chan 擁有 term 套接字 分享圖片 文件類型 直接 bae 一 文件目錄權限定義 首先我們先認識一下文件目錄的權限定義,請看下面ls -l的結果我們發現一個文件或者目錄的前面有10位的信息,第一位表示文件類型,大概有一下幾種類型:d 表示目錄 - 普通文件

效能測試時使用nmon進行監控伺服器效能

在使用Jmeter進行效能測試,可以使用nmon進行伺服器的監控。   一、nmon說明 nmon分為工具包和分析包(nmonanalyser) nmon安裝很簡單,根據伺服器版本,下載相應的版本後,進行安裝即可。   二、nmon監聽 1、實時監聽 在nmon安裝目錄下,使用./nmon啟動nm

嵌入式Linux開發——()u-boot原始碼分析

1、U-Boot的特性:     ①開放原始碼     ②支援多種嵌入式作業系統核心:Linux、NetBSD、VxWorks、QNx、RTEMS、ARTOS、 LynxOS     ③支援多種架構的CPU:Power

kubernetes實戰():k8s使用openLDAP統一認證

rip ast ops port nmp 更改 create 密碼 lin 1、基本概念   為了方便管理和集成jenkins,k8s、harbor、jenkins均使用openLDAP統一認證。 2、部署openLDAP   根據之前的文檔,openLDAP使用GFS

Widows自帶系統監控工具——24小時監控伺服器效能

操作步驟 1、執行程式perfmon.exe 2、選擇【使用者自定義】-【新建】-【資料收集器集】 3、自定義名稱“test”,選擇【手動建立】,然後【下一步】 4、選擇“效能計數器”,【下一步】 5、使用者可以根據具體情況,選擇多長時間記錄一次,然後點選

機器學習筆記(九):TensorFlow實戰(多執行緒輸入資料)

1 - 引言 為了加速模型訓練的時間,TensorFlow提供了一套多執行緒處理輸入資料的框架。 下面我們來詳細的介紹如何使用多執行緒來加速我們的模型訓練速度 2 - 佇列與多執行緒 在TensorFlow中,佇列和變數類似,我們可以修改它們的狀態。下面給出一個示例來展示如

學習Linux天;

今天主要學習Apache      --httpd 虛擬主機功能一、基於IP地址1、建立儲存網站資料3個目錄mkdir -P /home/wwwroot/10mkdir -P /home/wwwroot/20mkdir -P /home/wwwroot/30echo "192.

[TensorFlow深度學習入門]實戰·用雙向BiRNN(LSTM)做手寫數字識別準確率99%+

[TensorFlow深度學習入門]實戰十一·用雙向BiRNN(LSTM)做手寫數字識別準確率99%+ 此博文是我們在完成實戰五·用RNN(LSTM)做手寫數字識別的基礎上使用BiRNN(LSTM)結構,進一步提升模型的準確率,1000steps準確率達到99%。 首先我們先

Linuxshell指令碼

一、shell定義: 使用者直接面對的不是計算機硬體而是shell。使用者將指令告訴shell,然後shell傳輸給系統核心。接著核心支配計算機硬體。 我們在Linux中輸入命令的介面就成為shell。 二、shell指令碼知識 2.1、開頭#!/bin/sh

如何搭建視覺化應用監控伺服器效能(ubuntu下安裝influxdb+telegraf+grafana)

看完本文,你就可以部署一個監控伺服器的視覺化應用,並且可以自己匯入資料來源進行展示。 參考:https://blog.csdn.net/TTchengcheng/article/details/79742574 參考:https://docs.influxdata.com/

Node.js實戰()之Buffer

JavaScript 語言自身只有字串資料型別,沒有二進位制資料型別。 但在處理像TCP流或檔案流時,必須使用到二進位制資料。因此在 Node.js中,定義了一個 Buffer 類,該類用來建立一個專門存放二進位制資料的快取區。 在 Node.js 中,Buffer 類是隨 Node 核心一起釋出的核心庫

Linux系列 - 賬戶管理

一、使用者賬號 ssh登入系統處理過程 1、查詢賬戶在/etc/passwd 中是否存在,不存在跳出,存在則讀出UID與GID(從/etc/group) 2、讀取/etc/shadow找出對應的賬戶與UID,核對密碼 3、校驗通過,登入成功 /etc/passwd檔案結構 ro