1. 程式人生 > >linux下效能監控shell指令碼實現系列一(伺服器整體效能監控)

linux下效能監控shell指令碼實現系列一(伺服器整體效能監控)

在實現監控指令碼前,我們先了解下一些已經成型的監控程式,比如大名鼎鼎的nmon。

nmon官網 http://nmon.sourceforge.net/pmwiki.php

nmon使用簡單說明 http://www.ibm.com/developerworks/cn/aix/library/nmon_analyser/

        nmon實現了兩部分功能,第一部分功能為cpu、記憶體、io、、、、等等的監控,第二部分,nmon提供了對監控結果的圖形轉化功能,如下圖

        

有了這麼好的工具,我們還需要自己造輪子麼? 兩種情況,如果有複雜的監控需求,而且願意花時間學習,我們可以使用nmon;但如果監控需求特殊比如說還要監控單個程序的情況,這時候就需要自己動手實現了。自己動手實現的好處就是靈活。。

效能監控包含哪些內容呢?對於伺服器整體效能,應該涵蓋整體的cpu、記憶體、磁碟io、網路流量;對於單程序效能,同樣有cpu、記憶體,這裡需要注意的一個指標就是單程序的控制代碼數,關於控制代碼的說明,具體可以去谷歌;很多程式存在記憶體洩漏的問題就是由於控制代碼數不斷上漲導致的

下面我們就來介紹具體的監控怎麼實現

  • 伺服器整體cpu監控

cpu指標監控在linux中有很多實現方式,比如mpstat、top、包括vmstat中也有cpu的指標,但是哪個指標用來監控實時cpu利用率最合適呢?

答案是top,為什麼呢,因為mpstat監測的是一段時間內的平均值,如果需要監測cpu均值的,可以採用這個指標,如果是瞬時值,top最合適

如何在top中擷取呢,答案如下

cpuuse=`top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }'`

為什麼這麼複雜呢,因為直接top|grep的話,可以發現每次截取出來的都一樣,是有問題的,上面是最終的解決方案

  • 伺服器整體記憶體監控

記憶體監控怎麼做呢?很多人會說 free -m,怎麼能夠換算成百分比,而且去除cache的影響呢

mem=`free -m|grep Mem|awk '{print ($3-$6-$7)/$2}'`

  • 伺服器整體磁碟io監控

磁碟一般用iostat,筆者監控磁碟利用率一般使用iostat -x中的util指標

單程序監控詳見系列二吧。。。

相關推薦

linux效能監控shell指令碼實現系列伺服器整體效能監控

在實現監控指令碼前,我們先了解下一些已經成型的監控程式,比如大名鼎鼎的nmon。 nmon官網 http://nmon.sourceforge.net/pmwiki.php nmon使用簡單說明 http://www.ibm.com/developerworks/cn/ai

關於linux定時任務與shell指令碼——實現遠端資料庫備份

一、常用的命令如下:1、編輯一個新的crontab任務    crontab -e2、檢視編寫後的crontab任務    crontab -l3、重啟contab任務服務    service crond restart4、檢視contab任務狀態    service c

linux RMAN備份shell指令碼

       RMAN備份對於Oracle資料庫的備份與恢復簡單易用,成本低廉。對於使用非catalog方式而言,將RMAN指令碼嵌入到shell指令碼,然後再通過crontab來實現中小型資料庫資料庫備份無疑是首選。本文提供了一個簡單易用的基於linux shell下的RM

linux如何編寫shell指令碼_2012-12-21

           因為我的同事cwl有事情請假兩天,所以需要我直接和lenovo進行交涉,我需要些一個簡單的測試程式,這裡用到了編寫shell指令碼,實現兩個c程式的編譯。我對shell指令碼的認識,除了執行過同事寫的shell 指令碼外,其他一無所知,為了讓自己強大

LINUX如何寫SHELL指令碼

至於SHELL的概念,什麼是SHELL我就不多說了,網上很多,我倒覺得具體怎麼寫,我沒發現,我把我寫的過程告訴大家:  1:建立一個檔案 touch wt 2:編輯檔案內容,寫入程式碼 #!/bin/sh echo "hello world!" 備註: 第一行是必須的,制定執

Shell指令碼實現軟體鍵安裝和自動重啟()

前言 在LINUX開發過程中,往往需要對已經開發好的軟體進行打包,一鍵安裝後程序能自動後臺啟動,當程序意外關閉後能自動重啟,本篇來介紹實現過程。 業務分析 對功能進行拆分 1、實現程式後臺執行,掛掉重啟的監聽器指令碼 2、將監聽器指令碼放入開機啟動項 3、實現軟體

Shell指令碼實現氣泡排序帶註釋

用shell語句實現氣泡排序(附註釋): #輸入提示 echo "input several number:" #-a將輸入的值讀取到陣列array裡 read -a array #將陣列的長度單獨拿

linux添加邏輯分區並掛載手動和自動方式

mount -a 自動掛載 tom rpc nosuid contains fst gid 成功 一、查看新磁盤[root@desktop61 Desktop]# fdisk -cul /dev/sdcDisk /dev/sdc: 21.5 GB, 21474836480

shell 指令碼各種執行方式source ./*.sh, . ./*.sh, ./*.sh的區別

原文出處:http://blog.csdn.net/dance_rise/article/details/8573560 結論一: ./*.sh的執行方式等價於sh ./*.sh或者bash ./*.sh,此三種執行指令碼的方式都是重新啟動一個子shell,在子shell中

linux 為firefox 和 chrome 瀏覽器安裝外掛以jre為例

step1:下載jre包jre-7u21-linux-i586.tar.gz step2:cp jre-7u21-linux-i586.tar.gz    /usr               tar xvzf jre-7u21-linux-i586.tar.gz s

linux使用者程式同核心通訊例項netlink

linux下使用者程式同核心通訊的方式一般有ioctl, proc檔案系統,剩下一個就是Netlink套接字了。 這裡先介紹下netlink。 先抄一段前輩對這幾種通訊方式的比較: Netlink 是一種在核心與使用者應用間進行雙向資料傳輸的非常好的方式,使用者態應

Docker 系列概念原理和安裝

一、概念原理     Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。—— 百度百科     之前一直有一個誤區,老聽

hive 學習系列資料型別的定義

數字型別(Numeric Types) 整型 TINYINT(取值範圍:-128 – 127) SMALLINT(取值範圍:-32,768 to 32,767) INT/INTEGER(取值範圍: -2,147,483,648 to 2,147,48

shell指令碼實現linux系統監控

一、系統監控要監控什麼? 硬體 CPU: [[email protected] ~]# top | sed -n '3p' 記憶體: 檢視系統記憶體的使用情況: 硬碟: 檢視磁碟的使用情況 系統 負載: 系統執行時間: 檢視作業系統的版

LinuxShell指令碼實現批量重新命名資料夾,批量重新命名檔案讓原本繁重的工作變得簡單

最近接了個專案,具體做什麼都不說了,其中有個工作就是批量更改資料夾,然後批量更改資料夾下的檔名字,一會兒先貼程式碼,再詳細解釋步驟。 下面是我的簡化版的目錄結構,實際上有上百個。 project dir1 dir1.py dir2

Shell指令碼實現Linux系統和程序資源監控

在伺服器運維過程中,經常需要對伺服器的各種資源進行監控,例如:CPU的負載監控,磁碟的使用率監控,程序數目監控等等,以在系統出現異常時及時報警,通知系統管理員。本文介紹在Linux系統下幾種常見的監控需求及其shell指令碼的編寫。 文章目錄: 1.Linux使用 She

LinuxJmeter+nmon+nmon analyser實現效能監控及結果分析

一、概述   前段時間講述了Jmeter利用外掛PerfMon Metrics Collector來監控壓測過程中伺服器資源的消耗,一個偶然機會,我發現nmon這個 工具挺不錯,和Jmeter外掛比起來,nmon記錄的資訊更加全面一些。   nmon,一款開源效能監控工具,用於監控linux系統的資源消耗資訊

Linux的簡易shell實現

Linux系統的shell作為作業系統的外殼,為使用者提供使用作業系統的介面。 它是命令語言、命令解釋程式及程式設計語言的統稱。 相當於bash的一個子程序,父程序等待,子程序進行程式替換。 shell充當一個橋樑:將使用者的命令翻譯給核心(kernel)處理;同時,將核心的

Shell指令碼實現監控rsync資料是否傳輸完

今天有臺伺服器a要把網站程式全部傳輸到另外一臺伺服器b上去,但離下班時間就只有1個小時了,為了準時下班,簡單寫了個shell指令碼來監控是否有傳輸完,我先在伺服器a上看了下網站程式總大小為12G,用du -sm檢視也就是11517,伺服器也不會有人再傳東西上去了,所以我可以放

Linux系統監控shell指令碼

開源專案 #! /bin/bash # unset any variable which system may be using unset tecreset os architecture kernelrelease internalip external