shell脚本——linux主机监控

写着玩儿的,在init 5级别,运行后会主动生成两个窗口,对系统以及系统上的主要服务进行监控,并及时刷新,抛砖引玉,分享一下。

一共有三个脚本:1个主脚本,2个分属监控脚本

主脚本启动:

#!/bin/sh
#writer:gaolixu
path=`pwd`
gnome-terminal --geometry=63x16 -e $path/jk1_xn.sh
gnome-terminal --geometry=63x16+0+350 -e $path/jk2_fw.sh

系统监控脚本:

#!/bin/sh
#writer:gaolixu
cpu(){
   cpuld_15=`uptime |awk -F"[,|:]" ‘{print $NF}‘`
   cpuld_5=`uptime |awk -F"[,|:]" ‘{n=NF-1;print $n}‘`
   cpuld_1=`uptime |awk -F"[,|:]" ‘{n=NF-2;print $n}‘`
   cpu_used=`ps aux |awk ‘BEGIN{sum=0}{sum=$3+sum}END{print sum}‘`
   echo -e `tput bold`"Cpu load\t1min\t5min\t15min\tCpu Used(%)"
   echo -e `tput sgr0;tput el`"cpu(s):$cpus\t$cpuld_1\t$cpuld_5\t$cpuld_15\t$cpu_used" %
   tput sgr0
}
mem(){
   m_total=`free -m|awk ‘/^Mem:/{print $2}‘`
   m_free=`free -m|awk ‘/^Mem:/{print $4}‘`
   m_used=`free -m|awk ‘/^Mem:/{print $3}‘`
   m_usedd=`echo "$m_used*100/$m_total"|bc`
   echo -e `tput bold`"Title(Mem)\tTotal\tUsed(%)\t\tFree "
   echo -e `tput sgr0`"Memery\t\t$m_total"M"\t$m_used"M"($m_usedd%)\t$m_free"M
}
swap(){
   swap_total=`free -m |awk ‘/Swap:/{print $2}‘`
   swap_free=`free -m |awk ‘/Swap:/{print $4}‘`
   swap_used=`free -m |awk ‘/Swap:/{print $3}‘`
   swap_usedd=`echo "$swap_used*100/$swap_total"|bc`
   echo -e "Swap\t\t$swap_total"M"\t$swap_used"M"($swap_usedd%)\t\t$swap_free"M
}
disk(){
   echo -e `tput bold`"Disk Name\tTotal\tUsed(%)\t\tFree\tType "
   tput sgr0
   df -Th|awk ‘$NF=="/"{print $NF"\t\t"$3"\t"$4"("$6")""\t"$5"\t"$2}‘   
   df -Th|awk ‘$NF=="/boot"{print $NF"\t\t"$3"\t"$4"("$6")""\t"$5"\t"$2}‘
}
tput clear
tput sgr0
tput civis
cpus=`lscpu |awk ‘/^CPU\(s\):/{print $2}‘`
echo
while true
do
n_users=`uptime | awk -F, ‘{print $2}‘`
tput cup 1 0
echo -e `tput setaf 1;tput bold`"服务器性能监控,登录用户:$n_users\t"`date "+%m月%d日  %T"`
echo `tput sgr0`"========================================================="
cpu
echo "========================================================="
mem
swap
echo "========================================================="
disk
echo "========================================================="
sleep 1
done

服务监控脚本:

#!/bin/sh
#writer:gaolixu
apache_d(){
echo -n -e `tput sgr0`"apache\t\t"
if service httpd status &>/dev/null ;then
  echo `tput el`"Apache 正常运行中..."
  tput sgr0
else
  echo `tput el;tput setaf 1;tput bold` "严重警告:apache服务已停止..."
  tput sgr0
fi
}
mysql_d(){
echo -n -e `tput sgr0`"mysql\t\t"
if service mysqld status &>/dev/null ;then
  echo `tput el`"数据库mysql 正常运行中..."
  tput sgr0
else
  echo `tput el;tput setaf 1;tput bold` "严重警告:mysql服务已停止..."
  tput sgr0
fi
}
vsftp_d(){
echo -n -e `tput sgr0`"vsftp\t\t"
if service vsftpd status &>/dev/null ;then
  echo `tput el`"vsftp 服务正常运行中..."
  tput sgr0
else
  echo `tput el;tput setaf 1;tput bold` "严重警告:vsftp服务已停止..."
  tput sgr0
fi
}
rsyslog_d(){
echo -n -e `tput sgr0`"rsyslog\t\t"
if service rsyslog status &>/dev/null ;then
  echo `tput el`"系统日志rsyslog正常运行中..."
  tput sgr0
else
  echo `tput el;tput setaf 1;tput bold` "严重警告:rsyslog日志服务已停止..."
  tput sgr0
fi
}
iptables_d(){
echo -n -e `tput sgr0`"iptables\t"
if service iptables status &>/dev/null ;then
  echo `tput el`"防火墙iptables服务正常运行中..."
  tput sgr0
else
  echo `tput el;tput setaf 1;tput bold` "严重警告:iptables防火墙服务已停止..."
  tput sgr0
fi
}
selinux_d(){
echo -n -e `tput sgr0`"selinux\t\t"
local s=`getenforce`
if [ "$s" = "Enforcing" ] ;then
  echo `tput el`"Selinux正常工作中..."
  tput sgr0
else
  echo `tput el;tput setaf 1;tput bold` "警告:selinux服务已停止..."
  tput sgr0
fi
}
tput clear
tput sgr0
tput civis
while true
do
tput cup 1 0
echo -e `tput setaf 1;tput bold`"重要服务监控\t\t\t" `date "+%m月%d日  %T"`
echo `tput sgr0`"========================================================"
apache_d
echo "--------------------------------------------------------"
mysql_d
echo "--------------------------------------------------------"
vsftp_d
echo "--------------------------------------------------------"
iptables_d
echo "--------------------------------------------------------"
rsyslog_d
echo "--------------------------------------------------------"
selinux_d
echo "========================================================"
sleep 1
done
时间: 2024-07-29 19:06:37

shell脚本——linux主机监控的相关文章

Linux基础之-利用shell脚本实现自动监控系统服务

目的:监控集群内nginx及nfs服务运行是否正常,如任一服务异常,则发送邮件通知用户 条件:1. 主机及子机IP地址,hostname已确定: 2. 主机与子机能够免密通讯,即基于密匙通讯(相关命令:ssh-keygen;ssh-copy-id -i web1); 需要的文件:    1. python邮件发送工具: 2. nfc.sh监控脚本,监控nginx及nfs服务状态,并调用mail发送工具通知用户: 3. nfc-install.sh监控部署脚本,运行在主机,为子机配置文件,执行命令

linux shell脚本守护进程监控svn服务

最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在则启动. 创建监控脚本svnmonit.sh #! /bin/sh #进程名字可修改 PRO_NAME=svnserve PORT=58652 REP_DIR=/www/svndata while true ; do #用ps获取$PRO_NAME进程数量 NUM=`ps aux | grep ${

shell脚本实现LLD监控

要实现Zabbix LLD监控,通常需要两个脚本,一个自定义发现check脚本,并输出成Json格式,另一个才是获取监控项valus的脚本. 自定义发现checks脚本输出结果为以下形式: {     "data": [         {             "{#APP_NAME}": "AppCMDB"         },          {             "{#APP_NAME}": "Ap

Nagios配置—添加linux主机监控

nagios安装请参看:Nginx平台安装Nagios监控服务 下面是我添加linux监控机的过程,如有错误或者不当的地方请指出: 测试环境: 监控主机:nagios+nagios插件+nrpe+网站平台 192.168.1.210 被监控机:nagios插件+nrpe   192.168.1.211 1.首先在监控主机上安装nrpe,nagios只能监控一些外部的信息,例如:ftp端口有没有开放,ssh端口有没有开放,ping值如何之类的,如果想监控linux主机一些本地的信息如:硬盘使用情况

zabbix中通过shell脚本进行微信监控告警

由于研究过php和java的微信告警发送,后来发现目前的微信告警需求相对不复杂,通过shell脚本可以满足目前的zabbix微信告警需求. 本文讲解的是通过shell脚本进行zabbix告警通过微信发送. 一.在zabbix的发送告警的的目录下新建sendWeChat.sh cd  /usr/lib/zabbix/alertscripts vim  sendWeChat.sh 二.脚本内容(需要企业号的CropID和Secret) #!/bin/bash # Filename:    sendW

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

Shell 脚本来自动监控 Linux 系统的内存

# vim /scripts/swap-warning.sh #!/bin/bash #提取本服务器的IP地址信息 IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` #系统分配的交换分区总量 swap_total=`free -m | grep Swap | awk '{print $2}'` #当前剩余的交换分区free大小 swap_free=`

shell脚本获取zabbix监控图

因为领导提出需要每天看几次服务器的流量图,今天早上9点上班开始截图,十多台服务器.指定时间12小时流量图,截完图反复对照好几遍,一是怕选错主机,二是怕搞错时间段.使用zabbix时间不长,一直感觉很别扭,容易出错.加上中间还做了一点其他东西的统计,最后等邮件发出的时候都已经是10点以后了. 这样下去,恐怕是影响仕途啊.若再加上有什么其他的事情,估计领导可以一边吃午饭一边看报表了,我只能选择吃土了... 网上教程比较多,python写的,perl写的,应为暂时没这方面基础,照搬过来运行报错就无解了

linux主机监控信息显示

存储信息显示: 总体空间和空闲空间显示 [[email protected] ~]# df -h 文件系统              容量  已用 可用 已用% 挂载点 /dev/mapper/VolGroup00-LogVol00 37G   15G   20G  43% / /dev/sda1              99M   23M   71M  25% /boot tmpfs                 3.0G     0  3.0G   0% /dev/shm Disk信息显