`
avery_leo
  • 浏览: 387872 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux 下cpu 内存 磁盘 jvm的使用监控

    博客分类:
  • JAVA
阅读更多

java 监控linux CPU 内存 磁盘 JVM:

import java.io.*;

/**
 * linux 下cpu 内存 磁盘 jvm的使用监控
 * @author avery_leo
 *
 */
public class TT {
	/**
	 * 获取cpu使用情况
	 * @return
	 * @throws Exception
	 */
	public double getCpuUsage() throws Exception {
		double cpuUsed = 0;

		Runtime rt = Runtime.getRuntime();
		Process p = rt.exec("top -b -n 1");// 调用系统的“top"命令
	

		BufferedReader in = null;
		try {
			in = new BufferedReader(new InputStreamReader(p.getInputStream()));
			String str = null;
			String[] strArray = null;
		
			while ((str = in.readLine()) != null) {
				int m = 0;
				
				if (str.indexOf(" R ") != -1) {// 只分析正在运行的进程,top进程本身除外 &&
					
				strArray = str.split(" ");
					for (String tmp : strArray) {
						if (tmp.trim().length() == 0)
							continue;
						if (++m == 9) {// 第9列为CPU的使用百分比(RedHat
							
							cpuUsed += Double.parseDouble(tmp);

						}

					}

				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			in.close();
		}
		return cpuUsed;
	}
/**
 * 内存监控
 * @return
 * @throws Exception
 */
	public double getMemUsage() throws Exception {

		double menUsed = 0;
		Runtime rt = Runtime.getRuntime();
		Process p = rt.exec("top -b -n 1");// 调用系统的“top"命令
	

		BufferedReader in = null;
		try {
			in = new BufferedReader(new InputStreamReader(p.getInputStream()));
			String str = null;
			String[] strArray = null;
		
			while ((str = in.readLine()) != null) {
				int m = 0;
				
				if (str.indexOf(" R ") != -1) {// 只分析正在运行的进程,top进程本身除外 &&
					// 
					// System.out.println("------------------3-----------------");
					strArray = str.split(" ");
					for (String tmp : strArray) {
						if (tmp.trim().length() == 0)
							continue;

						if (++m == 10) {
							// 9)--第10列为mem的使用百分比(RedHat 9)

							menUsed += Double.parseDouble(tmp);

						}
					}

				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			in.close();
		}
		return menUsed;
	}

	/**
	 * 获取磁盘空间大小
	 * 
	 * @return
	 * @throws Exception
	 */
	public double getDeskUsage() throws Exception {
		double totalHD = 0;
		double usedHD = 0;
		Runtime rt = Runtime.getRuntime();
		Process p = rt.exec("df -hl");//df -hl 查看硬盘空间
	

		BufferedReader in = null;
		try {
			in = new BufferedReader(new InputStreamReader(p.getInputStream()));
			String str = null;
			String[] strArray = null;
			int flag = 0;
			while ((str = in.readLine()) != null) {
				int m = 0;
//				if (flag > 0) {
//					flag++;
					strArray = str.split(" ");
					for (String tmp : strArray) {
						if (tmp.trim().length() == 0)
							continue;
						++m;
//						System.out.println("----tmp----" + tmp);
						if (tmp.indexOf("G") != -1) {
							if (m == 2) {
//								System.out.println("---G----" + tmp);
								if (!tmp.equals("") && !tmp.equals("0"))
									totalHD += Double.parseDouble(tmp
											.substring(0, tmp.length() - 1)) * 1024;

							}
							if (m == 3) {
//								System.out.println("---G----" + tmp);
								if (!tmp.equals("none") && !tmp.equals("0"))
									usedHD += Double.parseDouble(tmp.substring(
											0, tmp.length() - 1)) * 1024;

							}
						}
						if (tmp.indexOf("M") != -1) {
							if (m == 2) {
//								System.out.println("---M---" + tmp);
								if (!tmp.equals("") && !tmp.equals("0"))
									totalHD += Double.parseDouble(tmp
											.substring(0, tmp.length() - 1));

							}
							if (m == 3) {
//								System.out.println("---M---" + tmp);
								if (!tmp.equals("none") && !tmp.equals("0"))
									usedHD += Double.parseDouble(tmp.substring(
											0, tmp.length() - 1));
								// System.out.println("----3----" + usedHD);
							}
						}
						
					}

//				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			in.close();
		}
		return (usedHD / totalHD) * 100;
	}

	public static void main(String[] args) throws Exception {
		TT cpu = new TT();
		System.out.println("---------------cpu used:" + cpu.getCpuUsage() + "%");
		System.out.println("---------------mem used:" + cpu.getMemUsage() + "%");
		System.out.println("---------------HD used:" + cpu.getDeskUsage() + "%");
		System.out.println("------------jvm监控----------------------");
		Runtime lRuntime = Runtime.getRuntime();
		System.out.println("--------------Free Momery:" + lRuntime.freeMemory()+"K");
		System.out.println("--------------Max Momery:" + lRuntime.maxMemory()+"K");
		System.out.println("--------------Total Momery:" + lRuntime.totalMemory()+"K");
		System.out.println("---------------Available Processors :"
				+ lRuntime.availableProcessors());
	}
}

 java监控linux

 

执行结果:如左图

1
1
分享到:
评论
1 楼 zhanjia 2008-10-25  
谢了, 兄弟辛苦了

相关推荐

    java(jni)获得CPU、内存使用率 绝对可用

    通过结合这两部分,你可以构建一个全面的系统监控工具,不仅获取CPU和内存使用率,还能监控硬盘性能。 总之,使用JNI来获取CPU和内存使用率能提供更为精确的数据,但同时也增加了代码的复杂性和跨平台的难度。...

    配套linux监控+springboot服务监控json文件

    1. Linux系统监控:CPU使用率、内存占用、磁盘I/O、网络流量等。 2. Springboot应用监控:HTTP请求速率、错误率、线程池状态、JVM内存和垃圾回收、数据库连接池等。 3. 自定义监控:根据业务需求,添加特定的服务...

    JVM调优和Linux常见面试题.zip

    - mpstat:监控CPU使用率。 - sar:系统活动报告工具,可以定时收集系统性能数据。 #### 5. 进程管理 - ps:查看进程状态。 - kill和killall:发送信号给进程。 - nohup:让进程在后台运行不受控制台影响。 了解并...

    基于python的Linux系统指定进程性能监控

    1. 定义获取进程性能数据的函数,例如,使用`psutil`库来获取CPU利用率、内存占用、磁盘I/O等信息。 2. 实现监控线程,定期调用上述函数并更新监控结果。 3. 设计报警机制,如当CPU利用率超过预设阈值或者内存低于...

    sigar1.6.4,jvm崩溃修复版

    此外,它还可以获取系统级别的CPU和内存使用情况,这对于分析是否存在过度消耗资源的进程,以及这些进程是否与JVM崩溃有关至关重要。 Sigar库提供了丰富的接口,涵盖了以下主要功能: 1. **系统信息收集**:获取...

    美团JVM问题定位和排错

    这些命令可以帮助开发者监控进程状态、CPU和内存状态、磁盘状态(IO、使用率)、网络流量状态以及块设备状态等。 - **JVM工具集**:主要用来监控和诊断JVM的状态,例如`jconsole`、`jvisualvm`、`MAT`(Memory ...

    常用的linux系统监控命令整理.docx

    以下是一些常用的Linux系统监控命令,它们可以帮助我们追踪CPU使用、内存消耗、网络活动以及存储I/O等关键性能指标。 1. **`ps` 命令**: `ps -mp pid -o THREAD,tid,time` 或 `ps -Lfp pid` 用于找出占用CPU最多...

    监视cpu使用情况

    这些工具不仅能够监控CPU使用率,还能监测内存、磁盘I/O、网络流量等多方面信息,并提供可视化报表,方便管理员远程管理和诊断问题。 代码方面,开发者可以利用编程语言提供的系统调用来获取CPU使用信息。例如,在...

    nmon java jre nmon部署监控与分析

    nmon(Nigel's Performance Monitor)是一款强大的性能监控工具,尤其适用于Linux环境,能够提供详细的系统资源使用情况,包括CPU、内存、磁盘I/O以及网络等。本文将深入探讨如何在Java JRE环境下部署nmon进行监控,...

    java监控开发示例

    这个“java监控开发示例”旨在提供一种方法来实现这一目标,通过Java代码远程监控系统资源,如CPU使用率、内存占用、磁盘空间以及网络状态等。 首先,我们需要理解Java中用于系统监控的基础概念和技术。Java提供了...

    系统和JVM调优(面试突击)

    3. **性能监控与诊断工具**:`jconsole`、`jvisualvm` 和 `jmap` 等工具可以帮助我们监控JVM的状态,查看内存占用、线程状态、类加载情况等,为调优提供依据。 4. **JVM编译优化**:JIT(Just-In-Time)编译器将...

    收集整理与日常使用的各类服务器做性能测试时候的监控方案与监控调优方案办法

    Jconsole是一个强大的JVM监控工具,可以实时查看内存使用、线程状态和CPU使用率,帮助识别潜在问题和优化点。 监控调优方案还包括定期收集性能数据,分析趋势,找出性能瓶颈,然后进行针对性的优化。例如,调整...

    WebSphere CPU高分析工具

    `aixperf60.sh`和`aixperf.sh`可能是利用这些命令定制的脚本,用于监控CPU、内存、磁盘I/O和网络等资源的使用情况,帮助定位WAS在AIX环境下的性能瓶颈。 3. **Linperf.sh**: Linux环境下的性能分析通常依赖于`top`...

    java虚拟机性能监控

    - **操作系统监控工具**:例如`vmstat`、`iostat`等,这些工具可以提供关于CPU使用率、内存使用情况、磁盘I/O等方面的统计数据。 - **JVM监控工具**:如`VisualGC`、`-verbose:gc`等,这些工具专门针对JVM的垃圾回收...

    java引起的linux服务器性能问题查找

    - **vmstat**:用于监控整个系统的资源使用情况,包括CPU、内存、磁盘I/O等,有助于从整体上把握系统状态。 - **iostat**:用于监控磁盘I/O操作,帮助判断是否存在磁盘瓶颈。 通过上述步骤,可以有效地定位并解决...

    python和shell监控linux服务器的详细代码

    - **JVM监控**:对于Java应用,可以使用JMX或JConsole获取JVM内存、线程和GC状态。 Python和Shell结合使用可以实现更复杂的监控需求,如自定义警告阈值、数据可视化和长期的日志分析。Python的灵活性和丰富的库使其...

    jprofiler_linux_86_5_2_4.zip

    JProfiler是一款广泛使用的Java剖析工具,它提供了丰富的功能,包括内存分析、CPU性能剖析、线程监控、SQL查询分析等。该工具以直观的用户界面和详尽的数据报告,帮助开发者快速定位和解决性能瓶颈,提升应用程序...

    嵌入式linux的Java虚拟机分析与设计

    6. **电源管理**:在电池供电的设备上,JVM需要优化电源使用,如降低CPU利用率,及时关闭无用服务,以延长电池寿命。 设计嵌入式Linux的Java虚拟机时,还需要考虑以下因素: 1. **可移植性**:JVM应能在多种嵌入式...

    jprofiler14 Linux完整环境包

    你可以监控堆内存使用,找出长期存在的对象,识别可能的内存泄漏源。 2. **CPU剖析**:通过CPU剖析,你可以看到哪些方法消耗了最多的CPU资源,进一步优化代码性能。 3. **线程分析**:实时查看线程状态,定位死锁...

Global site tag (gtag.js) - Google Analytics