linux监控特定进程资源消耗,Linux各应用进程资源监控

最近有个多应用部署在一台服务器上,然后要监控各自应用占用的cpu、内存、磁盘io情况的需求。这样的需求来自于,当一台服务器发生故障时,能快速定位是哪个应用导致的类似于cpu或内存过高的情况。

核心思想是找到应用的进程pid,然后用pidstat命令来查资源占用情况。我的应用虽然是各个语言的,但是还好都是supervisor拉起服务器,所以查进程pid只需要用如下命令实现:

supervisorctl status | grep $appid| awk -F' ' '{print $4}' | sed -e 's/,$//' | paste -sd' '

然后查看cpu占用了为:

pidstat -p $1 -u|grep -v Command|grep -v ^$|grep -v Linux|awk '{print $8}

内存:

pidstat -p $1 -r|grep -v Command|grep -v ^$|grep -v Linux|awk '{print $9}'

读写io:

pidstat -p $1 -d|grep -v Command|grep -v ^$|grep -v Linux|awk '{print $5}'

pidstat -p $1 -d|grep -v Command|grep -v ^$|grep -v Linux|awk '{print $6}'

故写下如下脚本:

#!/bin/bash

appid=$1

item=$2

cpu()

{

result=`pidstat -p $1 -u|grep -v Command|grep -v ^$|grep -v Linux|awk '{print $8}'`

echo $result

}

mem()

{

result=`pidstat -p $1 -r|grep -v Command|grep -v ^$|grep -v Linux|awk '{print $9}'`

echo $result

}

readio()

{

result=`pidstat -p $1 -d|grep -v Command|grep -v ^$|grep -v Linux|awk '{print $5}'`

echo $result

}

writeio()

{

result=`pidstat -p $1 -d|grep -v Command|grep -v ^$|grep -v Linux|awk '{print $6}'`

echo $result

}

app_pid=`supervisorctl status | grep $appid| awk -F' ' '{print $4}' | sed -e 's/,$//' | paste -sd' '`

case $item in

cpu)

cpu $app_pid

;;

mem)

mem $app_pid

;;

read)

readio $app_pid

;;

write)

writeio $app_pid

;;

esac

219f5f834b6c460b74bc8c602ac1dcd4.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值