1. 程式人生 > >幾個常用的Linux監控指令碼

幾個常用的Linux監控指令碼

最近時不時有網際網路的朋友問我關於伺服器監控方面的問題,問常用的伺服器監控除了用開源軟體,比如:cacti,nagios監控外是否可以自己寫shell指令碼呢?根據自己的需求寫出的shell指令碼更能滿足需求,更能細化主機監控的全面性。

下面是我常用的幾個主機監控的指令碼,大家可以根據自己的情況再進行修改,希望能給大家一點幫助。

1、檢視主機網絡卡流量

#!/bin/bash
#network
#Mike.Xu
while : ; do
      time='date +%m"-"%d" "%k":"%M'
      day='date +%m"-"%d'
      rx_before='ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-'
      tx_before='ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-'
      sleep 2
      rx_after='ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-'
      tx_after='ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-'
      rx_result=$[(rx_after-rx_before)/256]
      tx_result=$[(tx_after-tx_before)/256]
      echo "$time Now_In_Speed: "$rx_result"kbps Now_OUt_Speed: "$tx_result"kbps"
      sleep 2
done

2、系統狀況監控

#!/bin/sh
#systemstat.sh
#Mike.Xu
IP=192.168.1.227
top -n 2| grep "Cpu" >>./temp/cpu.txt
free -m | grep "Mem" >> ./temp/mem.txt
df -k | grep "sda1" >> ./temp/drive_sda1.txt
#df -k | grep sda2 >> ./temp/drive_sda2.txt
df -k | grep "/mnt/storage_0" >> ./temp/mnt_storage_0.txt
df -k | grep "/mnt/storage_pic" >> ./temp/mnt_storage_pic.txt
time=`date +%m"."%d" "%k":"%M`
connect=`netstat -na | grep "219.238.148.30:80" | wc -l`
echo "$time  $connect" >> ./temp/connect_count.txt

3、監控主機的磁碟空間,當使用空間超過90%就通過發mail來發警告

#!/bin/bash
#monitor available disk space
SPACE='df | sed -n '/ \ / $ / p' | gawk '{print $5}' | sed  's/%//'
if [ $SPACE -ge 90 ]
then
[email protected]
fi

4、 監控CPU和記憶體的使用情況

#!/bin/bash
#script  to capture system statistics
OUTFILE=/home/xu/capstats.csv
DATE='date +%m/%d/%Y'
TIME='date +%k:%m:%s'
TIMEOUT='uptime'
VMOUT='vmstat 1 2'
 USERS='echo $TIMEOUT | gawk '{print $4}' '
LOAD='echo $TIMEOUT | gawk '{print $9}' | sed "s/,//' '
FREE='echo $VMOUT | sed -n '/[0-9]/p' | sed -n '2p' | gawk '{print $4} ' '
IDLE='echo  $VMOUT | sed -n '/[0-9]/p' | sed -n '2p' |gawk '{print $15}' '
echo "$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE" >> $OUTFILE

5、全方位監控主機

#!/bin/bash
# check_xu.sh
# 0 * * * * /home/check_xu.sh
 
DAT="`date +%Y%m%d`"
HOUR="`date +%H`"
DIR="/home/oslog/host_${DAT}/${HOUR}"
DELAY=60
COUNT=60
# whether the responsible directory exist
if ! test -d ${DIR}
then
        /bin/mkdir -p ${DIR}
fi
# general check
export TERM=linux
/usr/bin/top -b -d ${DELAY} -n ${COUNT} > ${DIR}/top_${DAT}.log 2>&1 &
# cpu check
/usr/bin/sar -u ${DELAY} ${COUNT} > ${DIR}/cpu_${DAT}.log 2>&1 &
#/usr/bin/mpstat -P 0 ${DELAY} ${COUNT} > ${DIR}/cpu_0_${DAT}.log 2>&1 &
#/usr/bin/mpstat -P 1 ${DELAY} ${COUNT} > ${DIR}/cpu_1_${DAT}.log 2>&1 &
# memory check
/usr/bin/vmstat ${DELAY} ${COUNT} > ${DIR}/vmstat_${DAT}.log 2>&1 &
# I/O check
/usr/bin/iostat ${DELAY} ${COUNT} > ${DIR}/iostat_${DAT}.log 2>&1 &
# network check
/usr/bin/sar -n DEV ${DELAY} ${COUNT} > ${DIR}/net_${DAT}.log 2>&1 &
#/usr/bin/sar -n EDEV ${DELAY} ${COUNT} > ${DIR}/net_edev_${DAT}.log 2>&1 &

放在crontab裡每小時自動執行:

0 * * * * /home/check_xu.sh

這樣會在/home/oslog/host_yyyymmdd/hh目錄下生成各小時cpu、記憶體、網路,IO的統計資料。

如果某個時間段產生問題了,就可以去看對應的日誌資訊,看看當時的主機效能如何。

相關推薦

常用Linux監控指令碼

最近時不時有網際網路的朋友問我關於伺服器監控方面的問題,問常用的伺服器監控除了用開源軟體,比如:cacti,nagios監控外是否可以自己寫shell指令碼呢?根據自己的需求寫出的shell指令碼更能滿足需求,更能細化主機監控的全面性。 下面是我常用的幾個主機監控的指令碼,

常用網絡/服務器監控開源軟件

memcached 托管 不能 不足 div ios系統 正在 linux下 tle 想要更清晰的了解你的網絡嗎?沒有比這幾個免費的工具更好用的了。 網絡和系統監控是一個很寬的範疇。有監控服務器、網絡設備、應用正常工作的方案,也有跟蹤這些系統和設備性能,提供趨勢性能分

Linux先知和常用命令細講

ubun bubuko 選擇 用戶 庫文件 重命名 options 共享 手冊 Linux先知:   Linux歷史:     關於這個我就不再多說了,其實是一個很有意思的故事串,網上找下一大堆。   類Unix系統目錄結構:     ubuntu沒有盤符這個概念,只有一個

列舉常用linux命令以及說明?

在這裡,為大家整理了一些經常用到的Linux命令,及常用引數,希望大家有用!如有偏頗,請指正! LS命令 -作用:顯示目錄內容,類似DOS下的DIR -格式:LS【options】【filename】 -常用引數:   >-a:all,不隱藏任何以"."字元開始的檔案  

linux: 常用makefile模板

不才,總結個人常用makefile模板,以備後用。 1、編譯動態庫 ############################################################# # Makefile for shared library. # 編譯動態連結庫

linux下的網路流量監控工具使用

1、nethogs 1)NetHogs是一款開源、免費的,終端下的網路流量監控工具,它可監控Linux的程序或應用程式的網路流量。NetHogs只能實時監控程序的網路頻寬佔用情況。NetHogs支援IPv4和IPv6協議,支援本地網絡卡以及PPP連結 2)debian下安裝

Linux常用的快捷鍵

1. [tab] 鍵 在linux所有的shell中,[tab]是最常用的也是linux的bash shell中最棒的功能;它具有命令補全和檔案補全的功能。如果不使用[tab]鍵,那就別說自己懂linux! 舉例,命令補全 我想將磁碟格式化成ext3 ,但是不知道命令是什麼了

PHP執行系統命令的有常用的函數

exe 自動 文件操作 nal 外部命令 中間 ring 打開 lcm PHP執行系統命令的有幾個常用的函數,如有:system函數、exec函數、popen函數,passthru,shell_exec函數他們都可以執行系統命令,不過前提時必須系統給了權限了哦。 syste

miniui常用知識點匯總

簡單 去除 spa 自帶 超過 表格 繪制 val wro 1.在表格中去除系統自帶的序列號,請看代碼: function allAndBrief(id) { if(id==1){ grid.set({

hadoop的常用命令

hadoop官方文檔:http://hadoop.apache.org/docs/r1.2.1/file_system_shell.html1、登錄主節點,切換到hdfs用戶[[email protected]/* */~]#su - hdfs2、列出當前目錄有哪些子目錄,有哪些文件[[email

封裝對象,包含常用方法

nts opp 操作 阻止事件冒泡 3.1 坐標 stop pre 處理 這兩天復習了DOM事件綁定,記錄一下,便於復習學習。 1 事件處理程序  1.1 HTML事件處理程序:直接寫在html中,和html不解耦,修改麻煩  1.2 DOM0級事件處理程序:不寫在html

Python:print()函數的常用參數

com file open 默認 strong 其他 end 空格 文件的 1.參數sep:設置輸出字符產之間的字符串。默認是空格 1 name=‘Tomwenxing‘ 2 age=‘23‘ 3 job=‘student‘ 4 print(name,age,job) 5

請求網頁常用庫的用法:

完成 data report 第三方庫 () .get 參數說明 進度 函數 1、urllib urlopen()方法urllib.urlopen(url[, data[, proxies]]) :創建一個表示遠程url的類文件對象,然後像本地文件一樣操作這個類文件對

Python的常用模塊

comm line 時間 sdi make 常用模塊 常用 一級目錄 就會 一、sys 用於提供對Python解釋器相關的操作: sys.argv 命令行參數List,第一個元素是程序本身路徑 sys.exit(n) 退出程序,正常退

常用規則引擎的簡單介紹和演示

規則引擎 drools ilog odm Ilog JRules 是最有名的商用BRMS;Drools 是最活躍的開源規則引擎;Jess 是Clips的java實現,就如JRuby之於Ruby,是AI系的代表;Visual Rules(旗正規則引擎)國內商業規則引擎品牌。今天對比了一下這四個頗

Eclipse的常用快捷鍵

單行 處理 所在 格式化 個常用快捷鍵 變量名 pan 單行註釋 自己 鍵盤操作             功能 Alt + /              語句或變量名自動補全 Ctrl + Shift + F          語句格式化 Ctrl + /      

XPATH的常用函數

寫法 www. ins 如果 情況 true id屬性 text 常用 1.contains (): //div[contains(@id,‘in‘)] ,表示選擇id中包含有’in’的div節點2.text():由於一個節點的文本值不屬於屬性,比如

wget命令的常用選項和示例

一個 上下 由於 cnblogs 覆蓋 tmp pos ica 文件名 wget命令用來從指定的URL下載文件。wget非常穩定,它在帶寬很窄的情況下和不穩定網絡中有很強的適應性,如果是由於網絡的原因下載失敗,wget會不斷的嘗試,直到整個文件下載完畢。如果是服務器打斷下載

python通過一個語句分析常用函數和概念

完全 1.4 優點 難解 實現 word 開篇 iter 執行 前言 過年也沒完全閑著,每天用一點點時間學點東西,本文為大家介紹幾個python操作的細節,包含all、any、for in等操作,以及介紹我解決問題的思路。 一、開篇 先從我看到的一個簡單的語句開始。 tex

PHP常用的概率算法

pre 最終 iss 通過 col pretty rand AC each 算法一 /** * 全概率計算 * * @param array $p array(‘a‘=>0.5,‘b‘=>0.2,‘c‘=>0.4) * @return string 返回上