全球主机交流论坛

标题: Linux 进程自动监控shell脚本 [打印本页]

作者: wangyan    时间: 2011-8-8 00:01
标题: Linux 进程自动监控shell脚本
主要用于监控 linux 服务器负载及内存占用,如 MySQl、php-fpm,当负载或内存占用达到设置值后,便自动重启该进程以避免宕机。

一、使用方法

下载、解压、运行


  1. wget https://wangyan.org/download/script/pid_auto_reboot.tar.gz
  2. tar -zxf pid_auto_reboot.tar.gz
  3. vim pid_auto_reboot.sh #修改预设阀值
复制代码


设置每分钟检查一次


  1. crontab -e
  2. * * * * * /bin/bash /root/cut_nginx_logs.sh
复制代码


二、原理解释


  1. # 设置最大内存占用百分比
  2. PID_MEM_MAX="85"

  3. # 设置最大系统负载
  4. SYS_LOAD_MAX="3"

  5. # 设置需要监控的服务名称
  6. NAME_LIST="php-fpm mysql"

  7. for NAME in $NAME_LIST
  8. do
  9.     # 初始化内存统计
  10.     PID_MEM_SUM=0

  11.     # 获取该程序总进程数
  12.     PID_NUM_SUM=`ps aux | grep $NAME | wc -l`

  13.     # 列出每个进程内存占用百分比
  14.     PID_MEM_LIST=`ps aux | grep $NAME | awk '{print $4}'`

  15.     # 计算所有进程总内存占用
  16.     for PID_MEM in $PID_MEM_LIST
  17.     do
  18.         PID_MEM_SUM=`echo $PID_MEM_SUM + $PID_MEM | bc`
  19.     done

  20.     # 获取最近一分钟系统负载
  21.     SYS_LOAD=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`

  22.     # 比较内存占用和系统负载是否超过阀值
  23.     MEM_VULE=`awk 'BEGIN{print('"$PID_MEM_SUM"'>='"$PID_MEM_MAX"'?"1":"0")}'`
  24.     LOAD_VULE=`awk 'BEGIN{print('"$SYS_LOAD"'>='"$SYS_LOAD_MAX"'?"1":"0")}'`

  25.     # 如果系统内存占用和系统负载超过阀值,则进行下面操作。
  26.     if [ $MEM_VULE = 1 ] || [ $LOAD_VULE = 1 ] ;then
  27.         #  写入日志
  28.         echo $(date +"%y-%m-%d %H:%M:%S") "killall $NAME" "(MEMPID_MEM_SUM,LOADSYS_LOAD)">> /var/log/autoreboot.log
  29.         # 正常停止服务
  30.         /etc/init.d/$NAME stop
  31.         sleep 3
  32.         # 强制关闭
  33.         pkill $NAME

  34.        #  重启
  35.         /etc/init.d/$NAME start
  36.        #写入日志
  37.         echo $(date +"%y-%m-%d %H:%M:%S") "start $NAME" "(MEMPID_MEM_SUM,LOADSYS_LOAD)" >> /var/log/autoreboot.log
  38.     else
  39.         echo "$NAME very health!(MEMPID_MEM_SUM,LOADSYS_LOAD)" > /dev/null
  40.     fi
  41. done
复制代码


原文:https://wangyan.org/blog/pid-auto-reboot-shell-html.html
作者: 金关村村长    时间: 2011-8-8 00:04
看看了。。。。。。。。。。。。。
作者: 金关村村长    时间: 2011-8-8 00:05
lz你的博客很慢
作者: Poison    时间: 2011-8-8 00:07


强大

再加个CC判断就不错了
作者: wangyan    时间: 2011-8-8 00:08
原帖由 金关村村长 于 2011-8-8 00:05 发表
lz你的博客很慢


he.net的Fremont挂掉,才刚恢复呢。。。
作者: 美女图    时间: 2011-8-8 00:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: Poison    时间: 2011-8-8 00:09
我今天中午还在楼主的博客里面看文章
作者: 刹那芳华    时间: 2011-8-8 00:16
技术贴,顶。。。
作者: qxwo    时间: 2011-8-8 00:16
看了一阵楼主的博客
作者: 有个就好    时间: 2011-8-9 18:17
正文有错误,copy的?

另外脚本的一个缺点:没有限制单线程运行
作者: vip1    时间: 2011-8-9 18:18
收藏




欢迎光临 全球主机交流论坛 (https://ddzzz.eu.org/) Powered by Discuz! X3.4