‘壹’ 如何利用java程序实时获得硬盘的iops
SUM服务器监控软件吧 可以监控所有品牌的服务器的CPU\内存、磁盘、流量、网络、数据库、中间件,还能监控网络设备 有啥情况可以短信和邮件通知,比较方便 你看看吧,我们用的就是这个,只是温度不能监控,其他都可以
‘贰’ 请问哪位高手做个java远程服务器监控方面的项目,比如监控CPU、硬盘进程等,并能实现报警功能谢谢了
我知道个人可以做这个的
‘叁’ 如何在Java程序中获取、监控服务器负载值、CPU、内存、硬盘、网络情况
SUM服务器监控软件吧
可以监控所有品牌的服务器的CPU\内存、磁盘、流量、网络、数据库、中间件,还能监控网络设备
有啥情况可以短信和邮件通知,比较方便
你看看吧,我们用的就是这个,只是温度不能监控,其他都可以
‘肆’ 如何监视计算机的CPU,内存和磁盘使用情况在Java中
使用sigar来监控,简单方便!
使用说明:以下代码需要配合sigar的dll文件来用,需要将dll文件放到JDK下的bin文件夹下,供sigar程序调用,还需要sigarjar包。以下程序经过测试,完全可用!
有关jar包跟dll文件我上传不了,私信我,我发你importjava.net.InetAddress;
importjava.net.UnknownHostException;
importjava.util.Map;
importjava.util.Properties;
importjava.util.Timer;
importjava.util.TimerTask;
importorg.hyperic.sigar.CpuInfo;
importorg.hyperic.sigar.CpuPerc;
importorg.hyperic.sigar.FileSystem;
importorg.hyperic.sigar.FileSystemUsage;
importorg.hyperic.sigar.Mem;
importorg.hyperic.sigar.NetFlags;
importorg.hyperic.sigar.NetInterfaceConfig;
importorg.hyperic.sigar.NetInterfaceStat;
importorg.hyperic.sigar.OperatingSystem;
importorg.hyperic.sigar.Sigar;
importorg.hyperic.sigar.SigarException;
importorg.hyperic.sigar.Swap;
importorg.hyperic.sigar.Who;
publicclassRuntimeTest{
publicstaticvoidmain(String[]args){
try{
Timertimer=newTimer();//定时器
TimerTasktask=newTimerTask(){
publicvoidrun(){
try{
memory();
}catch(SigarExceptione){
e.printStackTrace();
}
}
};
try{
timer.schele(task,0,3000);//每3秒取一次
}catch(Exceptionex){
ex.printStackTrace();
}
//System信息,从jvm获取
//property();//根据自己的需求,都可以放到定时器中定时获取
//cpu信息
//cpu();
//内存信息
//memory();
//操作系统信息
//os();
//用户信息
//who();}catch(Exceptione1){
e1.printStackTrace();
}
}
privatestaticvoidproperty()throwsUnknownHostException{
Runtimer=Runtime.getRuntime();
Propertiesprops=System.getProperties();
InetAddressaddr;
addr=InetAddress.getLocalHost();
Stringip=addr.getHostAddress();
Map<String,String>map=System.getenv();
StringuserName=map.get("USERNAME");//获取用户名
StringcomputerName=map.get("COMPUTERNAME");//获取计算机名
StringuserDomain=map.get("USERDOMAIN");//获取计算机域名
System.out.println("用户名:"+userName);
System.out.println("计算机名:"+computerName);
System.out.println("计算机域名:"+userDomain);
System.out.println("本地ip地址:"+ip);
System.out.println("本地主机名:"+addr.getHostName());
System.out.println("JVM可以使用的总内存:"+r.totalMemory());
System.out.println("JVM可以使用的剩余内存:"+r.freeMemory());
System.out.println("JVM可以使用的处理器个数:"+r.availableProcessors());
System.out.println("Java的运行环境版本:"+props.getProperty("java.version"));
System.out.println("Java的运行环境供应商:"+props.getProperty("java.vendor"));
System.out.println("Java供应商的URL:"+props.getProperty("java.vendor.url"));
System.out.println("Java的安装路径:"+props.getProperty("java.home"));
System.out.println("Java的虚拟机规范版本:"+props.getProperty("java.vm.specification.version"));
System.out.println("Java的虚拟机规范供应商:"+props.getProperty("java.vm.specification.vendor"));
System.out.println("Java的虚拟机规范名称:"+props.getProperty("java.vm.specification.name"));
System.out.println("Java的虚拟机实现版本:"+props.getProperty("java.vm.version"));
System.out.println("Java的虚拟机实现供应商:"+props.getProperty("java.vm.vendor"));
System.out.println("Java的虚拟机实现名称:"+props.getProperty("java.vm.name"));
System.out.println("Java运行时环境规范版本:"+props.getProperty("java.specification.version"));
System.out.println("Java运行时环境规范供应商:"+props.getProperty("java.specification.vender"));
System.out.println("Java运行时环境规范名称:"+props.getProperty("java.specification.name"));
System.out.println("Java的类格式版本号:"+props.getProperty("java.class.version"));
System.out.println("Java的类路径:"+props.getProperty("java.class.path"));
System.out.println("加载库时搜索的路径列表:"+props.getProperty("java.library.path"));
System.out.println("默认的临时文件路径:"+props.getProperty("java.io.tmpdir"));
System.out.println("一个或多个扩展目录的路径:"+props.getProperty("java.ext.dirs"));
System.out.println("操作系统的名称:"+props.getProperty("os.name"));
System.out.println("操作系统的构架:"+props.getProperty("os.arch"));
System.out.println("操作系统的版本:"+props.getProperty("os.version"));
System.out.println("文件分隔符:"+props.getProperty("file.separator"));
System.out.println("路径分隔符:"+props.getProperty("path.separator"));
System.out.println("行分隔符:"+props.getProperty("line.separator"));
System.out.println("用户的账户名称:"+props.getProperty("user.name"));
System.out.println("用户的主目录:"+props.getProperty("user.home"));
System.out.println("用户的当前工作目录:"+props.getProperty("user.dir"));
}
privatestaticvoidmemory()throwsSigarException{
Sigarsigar=newSigar();
Memmem=sigar.getMem();
floattotal=mem.getTotal();
floatused=mem.getUsed();
//内存总量
System.out.println("内存总量:"+mem.getTotal()/1024L/1024L+"Mav");
//当前内存使用量
System.out.println("当前内存使用量:"+mem.getUsed()/1024L/1024L+"Mused");
//当前内存剩余量
System.out.println("当前内存剩余量:"+mem.getFree()/1024L/1024L+"Mfree");
//当前内存使用率
System.out.println("内存使用率:"+used/total*100+"%");
Swapswap=sigar.getSwap();
//交换区总量
System.out.println("交换区总量:"+swap.getTotal()/1024L/1024L+"Mav");
//当前交换区使用量
System.out.println("当前交换区使用量:"+swap.getUsed()/1024L/1024L+"Mused");
//当前交换区剩余量
System.out.println("当前交换区剩余量:"+swap.getFree()/1024L/1024L+"Mfree");
}
privatestaticvoidcpu()throwsSigarException{
Sigarsigar=newSigar();
CpuInfoinfos[]=sigar.getCpuInfoList();
CpuPerccpuList[]=null;
cpuList=sigar.getCpuPercList();
for(inti=0;i<infos.length;i++){//不管是单块CPU还是多CPU都适用
CpuInfoinfo=infos[i];
System.out.println("第"+(i+1)+"块CPU信息");
System.out.println("CPU的总量MHz:"+info.getMhz());//CPU的总量MHz
System.out.println("CPU生产商:"+info.getVendor());//获得CPU的卖主,如:Intel
System.out.println("CPU类别:"+info.getModel());//获得CPU的类别,如:Celeron
System.out.println("CPU缓存数量:"+info.getCacheSize());//缓冲存储器数量
printCpuPerc(cpuList[i]);
}
}
privatestaticvoidprintCpuPerc(CpuPerccpu){
System.out.println("CPU用户使用率:"+CpuPerc.format(cpu.getUser()));//用户使用率
System.out.println("CPU系统使用率:"+CpuPerc.format(cpu.getSys()));//系统使用率
System.out.println("CPU当前等待率:"+CpuPerc.format(cpu.getWait()));//当前等待率
System.out.println("CPU当前错误率:"+CpuPerc.format(cpu.getNice()));//
System.out.println("CPU当前空闲率:"+CpuPerc.format(cpu.getIdle()));//当前空闲率
System.out.println("CPU总的使用率:"+CpuPerc.format(cpu.getCombined()));//总的使用率
}
privatestaticvoidos(){
OperatingSystemOS=OperatingSystem.getInstance();
//操作系统内核类型如:386、486、586等x86
System.out.println("操作系统:"+OS.getArch());
System.out.println("操作系统CpuEndian():"+OS.getCpuEndian());//
System.out.println("操作系统DataModel():"+OS.getDataModel());//
//系统描述
System.out.println("操作系统的描述:"+OS.getDescription());
//操作系统类型
//System.out.println("OS.getName():"+OS.getName());
//System.out.println("OS.getPatchLevel():"+OS.getPatchLevel());//
//操作系统的卖主
System.out.println("操作系统的卖主:"+OS.getVendor());
//卖主名称
System.out.println("操作系统的卖主名:"+OS.getVendorCodeName());
//操作系统名称
System.out.println("操作系统名称:"+OS.getVendorName());
//操作系统卖主类型
System.out.println("操作系统卖主类型:"+OS.getVendorVersion());
//操作系统的版本号
System.out.println("操作系统的版本号:"+OS.getVersion());
}
privatestaticvoidwho()throwsSigarException{
Sigarsigar=newSigar();
Whowho[]=sigar.getWhoList();
if(who!=null&&who.length>0){
for(inti=0;i<who.length;i++){
//System.out.println("当前系统进程表中的用户名"+String.valueOf(i));
Who_who=who[i];
System.out.println("用户控制台:"+_who.getDevice());
System.out.println("用户host:"+_who.getHost());
//System.out.println("getTime():"+_who.getTime());
//当前系统进程表中的用户名
System.out.println("当前系统进程表中的用户名:"+_who.getUser());
}
}
}
}
‘伍’ java怎样获取CPU占用率和硬盘占用率
通过jmx可以监控vm内存使用,系统内存使用等,以下是网上某博客代码,特点是通过window和linux命令获得CPU使用率。
利用java程序实现获取计算机cpu利用率和内存使用信息。
packagecom.amgkaka.performance;
/***//**
*监视信息的JavaBean类.
*@authoramg
*@version1.0
*Creationdate:2008-4-25-上午10:37:00
*/
publicclassMonitorInfoBean{
/***//**可使用内存.*/
privatelongtotalMemory;
/***//**剩余内存.*/
privatelongfreeMemory;
/***//**最大可使用内存.*/
privatelongmaxMemory;
/***//**操作系统.*/
privateStringosName;
/***//**总的物理内存.*/
privatelongtotalMemorySize;
/***//**剩余的物理内存.*/
;
/***//**已使用的物理内存.*/
privatelongusedMemory;
/***//**线程总数.*/
privateinttotalThread;
/***//**cpu使用率.*/
privatedoublecpuRatio;
publiclonggetFreeMemory(){
returnfreeMemory;
}
publicvoidsetFreeMemory(longfreeMemory){
this.freeMemory=freeMemory;
}
(){
returnfreePhysicalMemorySize;
}
(longfreePhysicalMemorySize){
this.freePhysicalMemorySize=freePhysicalMemorySize;
}
publiclonggetMaxMemory(){
returnmaxMemory;
}
publicvoidsetMaxMemory(longmaxMemory){
this.maxMemory=maxMemory;
}
publicStringgetOsName(){
returnosName;
}
publicvoidsetOsName(StringosName){
this.osName=osName;
}
publiclonggetTotalMemory(){
returntotalMemory;
}
publicvoidsetTotalMemory(longtotalMemory){
this.totalMemory=totalMemory;
}
publiclonggetTotalMemorySize(){
returntotalMemorySize;
}
publicvoidsetTotalMemorySize(longtotalMemorySize){
this.totalMemorySize=totalMemorySize;
}
publicintgetTotalThread(){
returntotalThread;
}
publicvoidsetTotalThread(inttotalThread){
this.totalThread=totalThread;
}
publiclonggetUsedMemory(){
returnusedMemory;
}
publicvoidsetUsedMemory(longusedMemory){
this.usedMemory=usedMemory;
}
publicdoublegetCpuRatio(){
returncpuRatio;
}
publicvoidsetCpuRatio(doublecpuRatio){
this.cpuRatio=cpuRatio;
}
}
‘陆’ java可以检查硬盘大小吗
可以。请查看链接网页链接或者看下面代码
publicclassSpaceCheck{
publicstaticvoidmain(String[]args){
File[]roots=File.listRoots();
for(File_file:roots){
System.out.println(_file.getPath());
//System.out.println(_file.getName());
System.out.println("Freespace="+(_file.getFreeSpace()/(1024*1024))/1024+"G");//显示GB大小
System.out.println("Usablespace="+_file.getUsableSpace());
System.out.println("Totalspace="+_file.getTotalSpace());
System.out.println("usedspace="+(_file.getTotalSpace()-_file.getFreeSpace()));
System.out.println();
}
Filewin=newFile("C:\WINDOWS");
System.out.println(win.getPath());
System.out.println(win.getName());
System.out.println("Freespace="+win.getFreeSpace());
System.out.println("Usablespace="+win.getUsableSpace());
System.out.println("Totalspace="+win.getTotalSpace());
System.out.println();
}
}
‘柒’ java如何实现对windows系统和Tomcat服务器进行监控
可以实现,我试过,cpu、内存、磁盘空间等参数信息用C语言来写一个DLL工程(extern "c"声明),最好不要用C++写,因为C++的导出函数会变名,然后java通过JNI规范调用C编写的函数。
具体是先System.loadLibruary("dll名称");
用C函数名,注意编译DLL的时候需要java类的头文件。cmd命令:javah Java类名。再直接调C函数。
‘捌’ Java如何获得硬盘剩余空间
java中可以使用file对象,获取当前电脑硬盘基本信息,示例如下:
importjava.io.File;
publicclassDiskSpaceDetail{
publicstaticvoidmain(String[]args){
FilediskPartition=newFile("C:");
longtotalCapacity=diskPartition.getTotalSpace();
longfreePartitionSpace=diskPartition.getFreeSpace();
longusablePatitionSpace=diskPartition.getUsableSpace();
System.out.println("****SizesinMegaBytes**** ");
System.out.println("TotalCpartitionsize:"+totalCapacity/(1024*1024)+"MB");
System.out.println("UsableSpace:"+usablePatitionSpace/(1024*1024)+"MB");
System.out.println("FreeSpace:"+freePartitionSpace/(1024*1024)+"MB");
System.out.println(" ****SizesinGigaBytes**** ");
System.out.println("TotalCpartitionsize:"+totalCapacity/(1024*1024*1024)+"GB");
System.out.println("UsableSpace:"+usablePatitionSpace/(1024*1024*1024)+"GB");
System.out.println("FreeSpace:"+freePartitionSpace/(1024*1024*1024)+"GB");
}
}
‘玖’ 如何用java实现远程监控linux服务器磁盘io
对于远程监控Linux主机系统CPU,内存使用情况,以前也使用了top等命令,但是最后还是觉得使用vmstat比较好.
运行top命令获得系统CPU使用情况有两个缺点,
第一运行top命令,执行的shell语句相对复杂.
用top命令获得CPU使用情况的shell语句
top -b -n 2 | grep Cpu |sed 1d | awk '{print $5}' | cut -f 1 -d "."
第二:有时候系统峰值时间很短暂,容易造成误判.
注意:运行本例子,你还需要下载第三方ganymed-ssh2-build251beta1.jar,改软件主要用于通过ssh远程登录被监控主机.
ITjob上。看。的