监控脚本monitor_cpu_mem_disk_process.sh

在linux中运行脚本monitor_cpu_mem_disk_process.sh,可以对linux里面资源的使用情况进行监控和记录。


# monitor_cpu_mem_disk_process.sh 
#!/bin/bash

#采集的时间
get_time=$(date +%Y%m%d%H%M%S)
#这行代码会获取当前的日期和时间,并赋值给变量get_time,用于后续在日志文件中记录采集的时间。
#采集cpu信息
cpu_info() {
	top -bn 1|awk '/^%Cpu/{print $2,$4,$8}'|while read  us sy  idle
	do
		#得到使用的cpu比率
		used_cpu=$( echo "scale=2;100 - $idle" | bc )
		#采集信息存放到日志文件,同时屏幕输出
		echo "$get_time  user process: $us  system process: $sy  idle: $idle used: $used_cpu" | tee -a /var/log/performance_usage.log
	done
}
#这个函数使用top命令采集CPU的使用情况,然后通过awk命令提取用户进程、系统进程和空闲时间的百分比。接着计算使用的CPU百分比,并将这些信息输出到屏幕和日志文件中。

#采集内存信息
mem_info() {
	free -m|awk '/^Mem/{print $2,$3,$4,$5,$6,$7}'|while read  total used free shared buff_cache available
	do
		echo "$get_time total_mem: $total M available_mem: $available free_mem: $free used_mem: $used_mem buff_cache: $buff_cache shared: $shared"|tee -a /var/log/performance_usage.log
	done 

}
#这个函数使用free命令采集内存的使用情况,然后通过awk命令提取总内存、已用内存、空闲内存等信息,并将这些信息输出到屏幕和日志文件中。
#采集磁盘和分区的使用信息
disk_info() {
	#总共有多少磁盘和磁盘的大小
	disk_total=$(lsblk |grep "^sd"|awk '{print $1,$4}')
	#分区的信息
	 df -Th|egrep "/$|/home$|boot$"|awk '{print $3,$4,$5,$6,$7}'|while read size used free used_percent part_name
	do
		echo "$get_time disk size: $size  used: $used free: $free used_percent: $used_percent part_name: $part_name  disk_total: $disk_total"|tee -a /var/log/performance_usage.log
	done
}
#这个函数使用lsblk和df命令采集磁盘和分区的使用情况,包括磁盘的总大小、分区的大小、已用空间、空闲空间等信息,并将这些信息输出到屏幕和日志文件中。
#采集进程的信息
process_info() {
	#显示cpu使用率最高的前5个进程
	#cpu_top_5=$( ps aux --sort=-%cpu | head -n 6 | tail -n 5)
    ps aux --sort=-%cpu | head -n 6 | tail -n 5|awk '{print "pid:"$2,"cpu_percent:"$3,"program_name:"$11}'|tee -a /var/log/performance_usage.log
	#cpu_top_5=$( ps aux|tail -n +2 |sort -k3 -nr|head -5)

	#显示内存使用率最高的前5个进程
	#mem_top_5=$(ps aux --sort=-%mem | head -n 6 | tail -n 5)
    ps aux --sort=-%mem | head -n 6 | tail -n 5|awk '{print "pid:"$2,"mem_percent:"$3,"program_name:"$11}'|tee -a /var/log/performance_usage.log

	#显示进程的总的信息,有多少个进程,有多少个进程在running 
	top -bn 1|grep "^Task"|awk '{print "total_processes:"$2,"running_processes:"$4}'|tee -a /var/log/performance_usage.log 
}
#这个函数使用ps和top命令采集进程的信息,包括CPU使用率最高的前5个进程、内存使用率最高的前5个进程,以及进程的总数和正在运行的进程数,并将这些信息输出到屏幕和日志文件中。
# 调用cpu_info函数
cpu_info

#调用mem_info函数
mem_info

#调用disk_info函数
disk_info
#调用process_info函数
process_info
#脚本会依次调用上面定义的函数,采集并记录系统的性能信息


授予可执行权限

 chmod +x monitor_cpu_mem_disk_process.sh

制定计划任务,执行脚本

 crontab -e
*/5 * * * * bash /shell/monitor_cpu_mem_disk_process.sh 


 

centos7检测可能存在的语法错误,并给出正确的代码 #!/bin/bash # Shell变量配置 cpu_usage_limit=1 cpu_duration=10 disk_usage_limit=90 disk_duration=90 mem_usage_limit=90 mem_duration=70 interval=10 #内网ip #server_ip=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/'` #外网ip server_ip=`curl -s tool.aizsk.com/ip | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'` #通知地址 api_url="http://192.168.220.1:18181/jeecg-boot/luodiye/sendMsg" # 监控函数 monitor() { # CPU监控 cpu_usage=`top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}'` if [ $(echo "${cpu_usage} > ${cpu_usage_limit}" | bc) -eq 1 ]; then cpu_duration_check=`ps -eo pcpu,args | sort -k 1 -r | head -n 3` json_data="{\"server_ip\":\"${server_ip}\",\"resource\":\"cpu\",\"usage\":\"${cpu_usage}\",\"duration\":\"${cpu_duration}\",\"top_process\":\"${cpu_duration_check}\"}" curl -H "Content-Type: application/json" -X POST -d "${json_data}" ${api_url} fi # 硬盘监控 disk_usage=`df -h | awk '$NF=="/"{printf "%s\n", $5}'` if [ $(echo "${disk_usage} > ${disk_usage_limit}" | bc) -eq 1 ]; then disk_duration_check=`du -sh /* 2>/dev/null | sort -hr | head -n 3` json_data="{\"server_ip\":\"${server_ip}\",\"resource\":\"disk\",\"usage\":\"${disk_usage}\",\"duration\":\"${disk_duration}\",\"top_files\":\"${disk_duration_check}\"}" curl -H "Content-Type: application/json" -X POST -d "${json_data}" ${api_url} fi # 内存监控 mem_usage=`free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }'` if [ $(echo "${mem_usage} > ${mem_usage_limit}" | bc) -eq 1 ]; then mem_duration_check=`ps aux --sort=-%mem | awk 'NR<=3{print $11}'` json_data="{\"server_ip\":\"${server_ip}\",\"resource\":\"memory\",\"usage\":\"${mem_usage}\",\"duration\":\"${mem_duration}\",\"top_process\":\"${mem_duration_check}\"}" curl -H "Content-Type: application/json" -X POST -d "${json_data}" ${api_url} fi } while true; do monitor sleep ${interval} done
02-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值