`

java服务器状态监控实现

阅读更多
<p>通过Hyperic-hq产品的基础包sigar.jar来实现服务器状态数据的获取。Sigar.jar包是通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar依赖sigar-amd64-winnt.dll或sigar-x86-winnt.dll,linux 操作系统下则依赖libsigar-amd64-linux.so或libsigar-x86-linux.so&hellip;&hellip;而Sigar.jar还依赖于jug-asl-2.0.0.jar、log4j-1.2.14.jar、Junit.jar,<br />
Hyperic-hq官方网站:http://www.hyperic.com<br />
Sigar.jar下载地址:http://sigar.hyperic.com<br /></p>
<pre name="code" class="java">package com.huawei.test;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Properties;

import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.OperatingSystem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;

public class Test {
public static void main(String[] args) throws SigarException,
    UnknownHostException
{
OperatingSystem OS = OperatingSystem.getInstance();

System.out.println(&quot;=========操作系统========&quot;);
// 操作系统内核类型如: 386、486、586等x86
System.out.println(&quot;操作系统内核 = &quot; + OS.getArch());
System.out.println(&quot;OS.getCpuEndian() = &quot; + OS.getCpuEndian());//
System.out.println(&quot;OS.getDataModel() = &quot; + OS.getDataModel());//
// 系统描述
System.out.println(&quot;系统描述 = &quot; + OS.getDescription());

// 操作系统类型
System.out.println(&quot;系统类型 = &quot; + OS.getName());
// 操作系统的卖主
System.out.println(&quot;系统卖主 = &quot; + OS.getVendor());
// 卖主名称
System.out.println(&quot;卖主名称 = &quot; + OS.getVendorCodeName());
// 操作系统名称
System.out.println(&quot;系统名称 = &quot; + OS.getVendorName());
// 操作系统卖主类型
System.out.println(&quot;系统类型 = &quot; + OS.getVendorVersion());
// 操作系统的版本号
System.out.println(&quot;版本号 = &quot; + OS.getVersion());

System.out.println(&quot;==============cpu===================&quot;);
Sigar sigar = new Sigar();
CpuInfo infos[] = sigar.getCpuInfoList();
CpuPerc cpu = sigar.getCpuPerc();
String address = InetAddress.getLocalHost().getHostAddress();
System.out.println(&quot;本机IP地址&quot; + address);
for (int i = 0; i &lt; infos.length; i++)
{
    CpuInfo info = infos[i];
    //CPU的总量MHz
    System.out.println(&quot;CPU总量mhz=&quot; + info.getMhz());
    //获得CPU的卖主,如:Intel
    System.out.println(&quot;vendor=&quot; + info.getVendor());
    //获得CPU的类别,如:Celeron
    System.out.println(&quot;model=&quot; + info.getModel());
    //缓冲存储器数量
    System.out.println(&quot;cache size=&quot; + info.getCacheSize());
    // 用户使用率
    System.out.println(&quot;User :&quot; + CpuPerc.format(cpu.getUser()));
    // 系统使用率
    System.out.println(&quot;Sys :&quot; + CpuPerc.format(cpu.getSys()));
}
FileSystem fslist[] = sigar.getFileSystemList();
System.out.println(&quot;长度为什么是:&quot;+fslist.length);

for (int i = 0; i &lt; fslist.length - 2; i++)
{
    System.out.println(&quot;============硬盘描述============&quot;);
    System.out.println(&quot;\n~~~~~~~~~~&quot; + i + &quot;~~~~~~~~~~&quot;);
    FileSystem fs = fslist[i];
    // 分区的盘符名称
    System.out.println(&quot;fs.getDevName() = &quot; + fs.getDevName());
    // 分区的盘符名称
    //System.out.println(&quot;fs.getDirName() = &quot; + fs.getDirName());
   
    // 文件系统类型,比如 FAT32、NTFS
    System.out.println(&quot;fs.getSysTypeName() = &quot; + fs.getSysTypeName());
    // 文件系统类型名,比如本地硬盘、光驱、网络文件系统等
    System.out.println(&quot;fs.getTypeName() = &quot; + fs.getTypeName());
    // 文件系统类型
   
    FileSystemUsage usage = sigar.getFileSystemUsage(fs.getDirName());
    String sub = fs.getDevName().substring(0, 1);
    // 文件系统总大小
    System.out.println(&quot; 硬盘 &quot; + sub + &quot;=&quot; + usage.getTotal() / 1024
            / 1024 + &quot;GB&quot;);
   
    // 文件系统剩余大小
    System.out.println(&quot; 硬盘剩余大小= &quot; + usage.getFree() / 1024 / 1024
            + &quot;GB&quot;);
    // 文件系统可用大小
    System.out.println(&quot; 硬盘可用大小 = &quot; + usage.getAvail() / 1024 / 1024
            + &quot;GB&quot;);
    // 文件系统已经使用量
    System.out.println(&quot; 经使用量 = &quot; + usage.getUsed() / 1024 / 1024
            + &quot;GB&quot;);
    double usePercent = usage.getUsePercent() * 100D;
    // 文件系统资源的利用率
    System.out.println(&quot; 利用率 = &quot; + usePercent + &quot;%&quot;);
   
    System.out.println(&quot; DiskReads = &quot; + usage.getDiskReads());
    System.out.println(&quot; DiskWrites = &quot; + usage.getDiskWrites());
}

if (java.awt.Desktop.isDesktopSupported())
{
    try
    {
        //创建一个URI实例
        java.net.URI uri = java.net.URI.create(&quot;http://cn.bing.com/&quot;);
        //获取当前系统桌面扩展
        java.awt.Desktop dp = java.awt.Desktop.getDesktop();
        //获得系统属性集   
        Properties props = System.getProperties();
        //操作系统名称   
        String osName = props.getProperty(&quot;os.name&quot;);
        System.out.println(&quot;操作系统名称:&quot; + osName);
        //操作系统构架   
        String osArch = props.getProperty(&quot;os.arch&quot;);
        System.out.println(&quot;系统架构:&quot; + osArch);
        //操作系统版本
        String osVersion = props.getProperty(&quot;os.version&quot;);
        System.out.println(&quot;操作系统版本:&quot; + osVersion);
        //Java安装目录
        String home = props.getProperty(&quot;java.home&quot;);
        System.out.println(&quot;java安装目录:&quot; + home);
        //用户的账户名称
        String user = props.getProperty(&quot;user.home&quot;);
        System.out.println(&quot;用户帐户名称:&quot; + user);
        //Java 运行时环境规范名称
        String version = props.getProperty(&quot;java.specification.name&quot;);
        System.out.println(&quot;Java 运行时环境规范名称 :&quot; + version);
        //获取当前jdk的版本号
        String number = props.getProperty(&quot;java.specification.version&quot;);
        System.out.println(&quot;jdk的版本号:&quot; + number);
       
        //判断系统桌面是否支持要执行的功能
        if (dp.isSupported(java.awt.Desktop.Action.BROWSE))
        {
            //获取系统默认浏览器打开链接
            dp.browse(uri);


        }
    }
    catch (java.lang.NullPointerException e)
    {
        //此为uri为空时抛出异常
    }
    catch (java.io.IOException e)
    {
        //此为无法获取系统默认浏览器
    }
 
}
}
}


  • 大小: 61.9 KB
分享到:
评论
1 楼 zjxkeven 2015-11-10  
不错 不知道好不好用

相关推荐

    Java 服务器信息监控

    3. 用户界面:提供一个友好的用户界面,使管理员能直观地查看服务器状态和历史数据。 4. 性能优化:监控程序自身不应消耗过多资源,需要合理设计数据采集频率和处理策略。 综上所述,Java 服务器信息监控项目涵盖了...

    java服务器资源监控脚本.zip

    综合运用这些监控工具和脚本,开发者和运维人员可以实现对Java服务器的全方位监控,及时发现问题,保证服务的稳定运行和高效性能。在实际操作中,还需要结合系统日志、性能指标阈值报警等手段,构建完整的监控体系,...

    java实现简单远程监控

    在Java中实现远程监控可以利用Java的多种内置特性,如JMX(Java Management Extensions)、RMI(Remote Method Invocation)以及网络编程API。下面我们将详细探讨如何使用Java来构建一个简单的远程监控系统。 首先...

    JavaMelody JAVA Web项目服务器性能监控工具

    JavaMelody是一款强大的JAVA Web项目服务器性能监控工具,它能够实时、全面地监控应用程序的运行状态,帮助开发者和运维人员了解系统性能瓶颈,及时发现并解决问题。通过在Java Web应用中简单集成,JavaMelody就能...

    基于JAVA网络远程监控系统软件的实现(源码)

    Java网络远程监控系统是一种能够实时收集、分析和管理分布在不同地理位置的计算机系统状态的软件解决方案。这个基于JAVA的网络远程监控系统提供了强大的功能,包括硬件性能监控、软件运行状况检查、网络流量分析以及...

    Java实现实时监控目录下文件变化的方法

    Java实现实时监控目录下文件变化的方法 Java实现实时监控目录下文件变化的方法是指通过Java语言来实现实时监控目录下文件的变化情况,包括文件的创建、删除、修改等操作。这种方法可以应用于各种场景,例如文件系统...

    engineMonitor_java.zip_Java服务器监控_Java监控_engineMonitor_engineMoni

    首先,"Java服务器监控"是指通过特定的工具或框架对运行在Java虚拟机(JVM)上的服务进行实时监控,包括CPU使用率、内存占用、线程状态、类加载、垃圾收集等关键指标。这有助于及时发现性能瓶颈,预防系统崩溃,提高...

    java监控开发示例

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

    通过java socket实现屏幕网络监控

    在屏幕监控应用中,服务端需要创建一个ServerSocket,设置监听端口,然后进入循环等待状态,当客户端发起连接请求时,服务器端会接受这个连接并返回一个新的Socket对象。客户端则需要创建一个Socket,指定服务器的IP...

    java监控weblogic

    使用 Java 语言实现自定义的 Weblogic 监控可以实时了解服务器的运行状态,提高服务器的稳定运行。通过本文的介绍,读者可以了解如何使用 Java 语言来实现自定义的 Weblogic 监控,提高服务器的监控和管理水平。

    java远程监控,有源码的

    Java远程监控是一个重要的技术领域,它允许开发者或系统管理员在远离目标系统的地方收集、分析和管理应用程序的运行状态。在Java中实现远程监控通常涉及到JMX(Java Management Extensions)框架,这是一种标准的...

    Tomcat服务器监控1.2版( for Win,Linux

    总结来说,"Tomcat服务器监控1.2版"是一个针对Java应用服务器Tomcat的监控解决方案,它可以帮助管理员在Windows和Linux环境中实时监控服务器状态,自动处理故障,提升服务的稳定性和效率。通过提供的源码,开发者...

    java tomcat 监控程序

    为了提高系统的可靠性和稳定性,开发了一个Java实现的监控程序,它的主要功能是监听服务程序的状态,如果检测到程序意外终止或挂掉,它会自动重启该程序,并且向开发人员发送短信通知,以便快速了解问题并采取相应的...

    shell脚本实现服务器进程监控的方法

    通过以上步骤,我们可以有效地监控服务器上的Java进程状态,确保所有必需的任务都已启动且没有重复启动的情况。这种方法不仅可以提高系统的可靠性和稳定性,还能减轻运维人员的工作负担。此外,还可以根据实际情况...

    java远程监控功能的实现

    Java远程监控功能是一种在分布式系统中,通过编程方式获取并管理远程计算机状态和资源的技术。在本项目中,主要利用了Java的Socket通信机制和Robot类来实现这一功能。Socket是网络通信的基础,用于在不同计算机之间...

    spring boot admin demo 源码 java 服务器 监控

    本项目是基于 Spring Boot Admin 的一个演示(Demo)源码,旨在帮助开发者理解和实践如何集成并使用 Spring Boot Admin 对 Java 服务器进行监控。 首先,让我们详细了解一下 Spring Boot Admin: 1. **Spring Boot...

    服务器监控

    在服务器监控中,如果检测到服务器状态异常,JavaMail可以被用来发送带有警报信息的邮件给管理员,以便他们能够及时处理问题。 在提供的压缩包文件"monitoring"中,可能包含了实现上述功能的源代码、配置文件或者...

    基于JAVA 网络远程监控系统软件的实现

    最后,为了实现远程监控,我们可以利用SNMP(Simple Network Management Protocol)协议,JavaSNMP库可以帮助我们在Java程序中实现SNMP协议,从而监控网络设备的状态。 总的来说,基于Java的网络远程监控系统软件的...

    Java服务器高级编程

    6. **性能优化**:了解如何进行Java服务器的性能监控和调优,包括JVM内存管理、垃圾回收机制、线程分析、数据库连接池配置等,这些是确保应用高效运行的关键。 7. **安全**:包括身份验证、授权、加密和防止SQL注入...

Global site tag (gtag.js) - Google Analytics