[转帖]通过Shell脚本自动监控JAVA进程中线程cpu使用率

通过,shell,脚本,自动,监控,java,进程,中线,cpu,使用率 · 浏览次数 : 0

小编点评

**脚本功能概述:** * `show-busy-java-threads.sh` 用于打印 Java 进程中线程 CPU 使用率。 * `process-cpu-monitor.sh` 监控进程 CPU 使用率,并当超过设定的值时执行 `show-busy-java-threads.sh`脚本。 **使用方法:** * 将 `show-busy-java-threads.sh` 和 `process-cpu-monitor.sh` 存储到相应的目录中。 * 使用 `nohup` 命令将 `process-cpu-monitor.sh` 运行在后台。 * 使用 `./process-cpu-monitor.sh` 命令启动监控脚本。 **示例命令:** ``` nohup sh show-busy-java-threads.sh 5 60 -c 20 -p $pid& nohup ./process-cpu-monitor.sh mall-service >/dev/null 2>&1 & ``` **其他说明:** * `busyThreadLog` 和 `busyThreadPid` 用于定义监控进程的日志输出和线程监控 ID。 * `process-cpu-monitor.sh` 使用 `busyThreadLog` 和 `busyThreadPid` 来输出监控信息。 * `nohup` 确保脚本在后台运行。 * `systemd` 的 `rc.local` 文件中创建启动服务,以自启动监控脚本。

正文

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。

脚本中的busyThreadLogbusyThreadPid定义了执行show-busy-java-threads.sh脚本进程的pid和线程监控情况的输出,使用前请自行修改。同时其执行参数默认如下:

nohup sh show-busy-java-threads.sh 5 60 -c 20 -p $pid
 

process-cpu-monitor.sh用法

 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可以替换想要输出的文件
 
 

开机自启动

  1. 通过修改/etc/rc.d/rc.local文件来实现启动执行监控脚本
  2. 在使用systemd的系统上,创建一个systemd的启动服务来执行脚本
  3. 使用crontab来开机启动执行脚本

与[转帖]通过Shell脚本自动监控JAVA进程中线程cpu使用率相似的内容:

[转帖]通过Shell脚本自动监控JAVA进程中线程cpu使用率

https://gitee.com/jialy/auto-monitor-java-process/tree/master 本文主要介绍在 show-busy-java-threads.sh 脚本的功能基础上,通过 process-cpu-monitor.sh 脚本实现Linux平台上Java进程或

[转帖]shell脚本使用expect自动化交互登录远程主机进行批量关机

前文 1.目标主机登录用户都为root,且密码一致 2.目标主机开放启动了SSH服务且22号端口可访问(防火墙未进行拦截) 软件介绍 expect Expect是一个用来实现自动和交互式任务进行通信的免费编程工具语言。由Don Libes在1990年开始编写。 结合Shell Script实现自动和

[转帖]如何通过shell脚本对一个文件中的所有数值相加并求和

https://developer.aliyun.com/article/886170?spm=a2c6h.24874632.expert-profile.255.7c46cfe9h5DxWK 1.背景 在一些巡检脚本中有时通常需要把一个文件中的数值进行相加得出综合,由于是文件中的所有数值,因此不能

[转帖]Shell 脚本实现应用服务日志入库 Mysql

今天给大家分享一个 shell 脚本工具,通过 shell 脚本与 mysql 的结合,将某个具体服务的错误输出日志入库到指定的 mysql 表中,以便于进行错误问题的定位与分析。 日常工作中,经常需要和 linux 系统打交道,例如:服务部署、日志和服务状态查看等,而 shell 脚本是和 lin

[转帖]在KingbaseES数据库中批量创建数据库/表

1. 问题 如何在KingbaseES中批量创建表和库? 2. 通过shell脚本文件实现 有时候我们在进行测试的时候需要进行批量的建库以及建表,这时我们可以使用shell脚本实现或者是SQL实现,shell脚本实现时内容如下: user=system #用于配置数据库的用户名 port=54587

[转帖]Linux之Shell 脚本执行三种方式

什么是Shell? Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash ShellShell也是一门编程语言<解释型的编程语言>,即shell脚本一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支

[转帖]关于 Shell 脚本的经典十三问

https://zhuanlan.zhihu.com/p/472862663 1、为何叫做 Shell? 我们知道计算机的运作离不开硬件,但却无法直接操作硬件,硬件的驱动只能通过一种称之为“操作系统(OS,Opertating System)的软件来管控。Linux 严格来说是一个操作系统(OS)。

[转帖]Linux平台shell脚本输入密码,不显示明文

需求:shell脚本中输入密码,要求不显示明文,需要将其转换为“*”星号,或者不显示 实现方案:有两种实现方案,一是通过stty命令来实现,二是直接使用read来实现 方案一:使用stty来实现 使用stty -echo可以实现不显示密码,就像登录Linux系统输入密码时一样,stty的代码如下:

[转帖]Linux—编写shell脚本操作数据库执行sql

Linux—编写shell脚本操作数据库执行sql Hughman关注IP属地: 北京 0.0762020.03.20 09:02:13字数 295阅读 1,036 修改数据库数据 在升级应用时,我们常常会遇到升级数据库的问题,这就涉及到sql脚本的编写。 一般我们会通过写sql脚本,然后将xxx.

[转帖]你应该知道的Shell 脚本的经典十三问

https://blog.csdn.net/wangzhicheng987/article/details/131031344 1. 为何叫做shell? 我们知道计算机的运作不能离开硬件,但使用者却无法直接操作硬件,硬件的驱动只能通过一种称为操作系统(OS,Opertating System)的软