『壹』 如何利用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上。看。的