常用的主机监控Shell脚本

最近时不时有朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。

下面是我常用的几个主机监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助。

1、查看主机网卡流量


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18


#!/bin/bash

#!/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-‘

sleep2

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"

sleep2

done

done

2、系统状况监控


1

2

3

4

5

6

7

8

9

10

11

12

13


#!/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来发警告


1

2

3

4

5

6

7


#!/bin/bash

#monitor available disk space

SPACE=‘df | sed -n ‘/ \ / $ / p‘ | gawk ‘{print $5}‘ | sed ‘s/%//

if[ $SPACE -ge90 ]

then

[email protected]

fi

4、 监控CPU和内存的使用情况


1

2

3

4

5

6

7

8

9

10

11

12


#!/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、全方位监控主机


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28


#!/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

exportTERM=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里每小时自动执行:


1

0 * * * * /home/check_xu.sh

这样会在/home/oslog/host_yyyymmdd/hh目录下生成各小时cpu、内存、网络,IO的统计数据。

如果某个时间段产生问题了,就可以去看对应的日志信息,看看当时的主机性能如何。

时间: 2024-10-17 20:09:04

常用的主机监控Shell脚本的相关文章

Linux常用的系统监控shell脚本

http://www.linuxqd.com下面是我常用的几个Linux系统监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助.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

Lvs别样的自动部署监控shell脚本

Lvs别样的自动部署监控shell脚本   l 脚本功能: l 实验环境图: l 具体脚本: l 结果验证: l 参考资料: 先申明,本文现在已经在我公司的测试环境和生产测试环境使用.正式环境请用keepalived+lvs. 安装ipvsadm不多说了,先说说脚本的功能,脚本分为redirect server 端和realserver 端,脚本分别为 lvs_redirector.sh 和realserver.sh脚本.另外加一个监控脚本lvs_monitor.sh(此脚本来源网友,做了一点修

MySQL主从复制监控shell脚本

########本脚本应用在生产环境中,是运用mysql主从的基础上######## vi mysqlm-s.sh   #!/bin/bash  ip=`ifconfig eth0|sed -n 2p|awk  '{ print $2 }'|awk -F : '{ print $2 }'`  port=`netstat -anl|grep 3306 |sed -n '1p' |awk '{print $4}'|awk -F: '{ print $2}'`  array=($(mysql -uUS

自动化部署java maven项目到多个目标主机的Shell脚本

本篇是<Linux Shell脚本之远程自动化部署java maven项目>的姊妹篇,但包含了bug.issue修正和添加了更多的支持特性,可以从GitHub上获取最新脚本内容:https://github.com/DingGuodong/AutomaticDeployJavaMavenProject . 自动化部署java maven项目到多个主机的环境条件假设: 1.java maven项目至多有一个依赖项目 2.多个目标主机上的部署目录是相同的 支持特性: 1.在部署主机上将java m

linux服务器系统负载监控-shell脚本

一.监控服务器系统负载情况: 1.用uptime命令查看当前负载情况(1分钟,5分钟,15分钟平均负载情况) # uptime   15:43:59 up 186 days, 20:04,  1 user,  load average:  0.01,    0.02,   0.00 系统负荷的经验法则:(详情参考:http://blog.csdn.net/skyline_loafer/article/details/26940539)(1) 主要观察"15分钟系统负荷",将它作为电脑正

开放系统监控shell脚本

开发系统监控脚本 1.需求描述?编写名为sysmon.sh的Shell监控脚本监控内容包括CPU使用率.内存使用率.根分区的磁盘占用率百分比只需精确到个位,如7%.12%.23%等出现以下任一情况时告警:磁盘占用率超过90%.CPU使用率超过80%.内存使用率超过90%,告警邮件通过mail命令发送到指定邮箱结合crond服务,每半小时执行一次监控脚本? 2.思路与命令测试?分析:监控内容包括CPU使用率.内存使用率.根分区的磁盘占用率df?命令awk??命令mpstat??命令(需安装syss

企业内部网段检测有多少主机存活——shell脚本传参(二)

企业内部网段检测有多少主机存活 前言:这个脚本初衷来自于之前看了网络班苟国齐的空间发布的脚本,今天改版了一下,感觉挺方便的. 环境简介: IP地址段 外网 内网 10.0.0.0 Yes No 172.16.1.0 No Yes 1).编写脚本 [[email protected] oldboy20160103]# cat check_hosts.sh  #!/bin/bash #no.1 Check functions  [ ! -f /etc/ini.d/functions ] && 

企业内部网段检测有多少主机存活——shell脚本

企业内部网段检测有多少主机存活 1)通过ping命令来实现 ping -c 1 -w 1 ip -c: 表示次数,1 为1次 -w: 表示deadline, time out的时间,单位为秒,1为1秒. 注: a)       如果一个一个的去ping等待的时间很长,所以用到了多线程在后台执行 b)      如果不用多线程的话有一个问题就是在跑for循环的时候ctrl +c只能停止当前循环的那个,停止之后会到下一个for循环,退不出来,还得再开一个终端把脚本的进程kill掉,不方便,这可以用t

nagios监控linux主机监控内存脚本

说明 工作包括两部分监控端(一二三)和被监控端(四) 一.nrpe.cfg中添加脚本 nrpe.cfg中添加命令索引 command[check_used_mem]=/usr/local/nagios/libexec/check_used_mem.sh 80 90 说明:实际内存使用量超过80%警告:超过90%严重警告 二.添加具体脚本 参考脚本check_used_mem.sh warn=$1 critical=$2 all=`free | sed -n '2p' | awk '{print