https://gitee.com/jialy/auto-monitor-java-process/tree/master
本文主要介绍在 show-busy-java-threads.sh 脚本的功能基础上,通过 process-cpu-monitor.sh 脚本实现Linux
平台上Java
进程或服务的线程繁忙情况监控。
show-busy-java-threads.sh
是一个能够打印Java
进程中线程cpu
使用率的脚本,可以用来排查程序cpu
使用率异常的情况。详细使用方法-->传送门
尽管show-busy-java-threads.sh
功能很强大,但是它不支持cpu
使用率监控功能。一般都是cpu
开始报警之后才人为去触发,就显得为时已晚,往往就错过了最想要的数据。
而process-cpu-monitor.sh
脚本就实现了对进程cpu
使用率的监控,当监控到进程cpu
使用率超过设定的值时,就执行show-busy-java-threads.sh
脚本来实时抓取进程中线程cpu
的使用情况。
脚本可接收两个参数,首个参数表示要监控的进程(必传),值可以为进程pid值
、pid文件
或者服务名
。第二个参数是监控的cpu使用率
(可选),0~100数值,表示超过设定的值就执行show-busy-java-threads.sh
脚本,默认为95。
脚本中的busyThreadLog
和busyThreadPid
定义了执行show-busy-java-threads.sh
脚本进程的pid和线程监控情况的输出,使用前请自行修改。同时其执行参数默认如下:
nohup sh show-busy-java-threads.sh 5 60 -c 20 -p $pid
process-cpu-monitor.sh 32145
# 监控进程PID为32145的java服务
process-cpu-monitor.sh /temp/xxxpid
# /temp/xxxpid 表示进程pid文件,文件内容进程pid值
process-cpu-monitor.sh mall-service
# mall-service Java服务名,可能是main类名的一部分或执行jar或war名包的一部分
process-cpu-monitor.sh 32145 80
# 监控进程PID为32145的java服务,当进程cpu使用超过80%时,开始执行监控线程的脚本
nohup ./process-cpu-monitor.sh mall-service >/dev/null 2>&1 &
# 以守护进程的方式执行脚本,/dev/null可以替换想要输出的文件