snmp协议采集服务器信息 (sigar.jar实现)

本文介绍如何利用Hyperic HQ的基础包Sigar.jar收集服务器的CPU、内存、操作系统和网络等状态数据。通过调用操作系统API,Sigar.jar在Windows和Linux下工作,依赖特定的库文件。文中提供了详细的示例代码,展示获取CPU资源信息、内存资源信息、操作系统信息、资源信息(硬盘)以及网络信息的方法。
摘要由CSDN通过智能技术生成
通过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……而Sigar.jar还依赖于jug-asl-2.0.0.jar、log4j-1.2.14.jar、Junit.jar,
Hyperic-hq官方网站:http://www.hyperic.com
下载的源码包中有各种语言的example:
Sigar.jar包的使用方法:
 
1、              CPU资源信息
a)         CPU数量(单位:个)
privatestaticint getCpuCount() throws SigarException {
     Sigar sigar = new Sigar();
     try {
         return sigar.getCpuInfoList().length;
     } finally {
         sigar.close();
     }
}
b)        CPU的总量(单位:HZ)及CPU的相关信息
Sigar sigar = getSigar();
       CpuInfo infos[] = sigar.getCpuInfoList();
       for (int i = 0; i < infos.length; i++) { //不管是单块CPU还是多CPU都适用
           CpuInfo info = infos[i];
           traceln("mhz=" + info.getMhz());//CPU的总量MHz
           traceln("vendor=" + info.getVendor());//获得CPU的卖主,如:Intel
           traceln("model=" + info.getModel());//获得CPU的类别,如:Celeron
           traceln("cache size=" + info.getCacheSize());//缓冲存储器数量
}
c)         CPU的用户使用量、系统使用剩余量、总的剩余量、总的使用占用量等(单位:100%)
publicvoid testCpuPerc() {
           Sigar sigar = new Sigar();
           // 方式一,主要是针对一块CPU的情况
           CpuPerc cpu;
           try {
               cpu = sigar.getCpuPerc();
               printCpuPerc(cpu);
           } catch (SigarException e) {
               e.printStackTrace();
           }
           // 方式二,不管是单块CPU还是多CPU都适用
           CpuPerc cpuList[] = null;
           try {
               cpuList = sigar.getCpuPercList();
           } catch (SigarException e) {
               e.printStackTrace();
               return;
           }
           for (int i = 0; i < cpuList.length; i++) {
               printCpuPerc(cpuList[i]);
           }
        }
        privatevoid printCpuPerc(CpuPerc cpu) {
           println("User :" + CpuPerc.format(cpu.getUser()));// 用户使用率
           println("Sys :" + CpuPerc.format(cpu.getSys()));// 系统使用率
           println("Wait :" + CpuPerc.format(cpu.getWait()));// 当前等待率
           println("Nice :" + CpuPerc.format(cpu.getNice()));//
           println("Idle :" + CpuPerc.format(cpu.getIdle()));// 当前空闲率
           println("Total :" + CpuPerc.format(cpu.getCombined()));// 总的使用率
}
d)        ……
2、              内存资源信息
a)        物理内存信息
Sigar sigar = new Sigar();
Mem mem = sigar.getMem();
// 内存总量
       System.out.println("Total = " + mem.getTotal() / 1024L + "K av");
       // 当前内存使用量
       System.out.println("Used = " + mem.getUsed() / 1024L + 
总揽Stat Hub 是一个帮您收集并展示众多服务器状态的服务。它由两部分组成,一是服务端,用于接收、储存和展示状态;另一个是客户端,它用于收集并发送状态到服务端。而这一切,您只需要两个二进制文件。演示支持SSL安全,支持域名访问,安全并简单安装请选择其中一台服务器做主服务器,并按以下说明在上面安装服务端。Linux (如果有curl)curl --insecure https://raw.githubusercontent.com/likexian/stathub-go/master/setup.sh | sh在您电脑的浏览器打开它对于大多数系统,到这里服务已经成功安装并启动了,现在您可以通过本地电脑上的浏览器打开它。默认URL是https://ip:15944输入默认密码: likexian添加一个客户端按以下提示操作https://ip:15944/helpFAQ我添加了一个客户端,为什么没有数据显示?            请在客户端查看 client.log 的内容看看出错原因。我可以使用域名而不是 IP 访问页面吗?            当然可以,请在域名解析中添加一条指向服务器端 IP 的 A 记录,然后用 https://子域名.域名:15944 访问即可。我可以用 https 访问页面吗?            没问题,并且SSL是默认启用的,不过用的是自签名证书。我可以不用自签名证书,而是使用自己的有效证书吗?            当然可以,并且强烈推荐这么做。请用您的证书替换掉 cert 目录里对应的文件。我可以跟 nginx 一起部署吗?没问题,请将以下配置加到 nginx 配置文件。location /stathub/ {     proxy_pass https://127.0.0.1:15944;     proxy_set_header X-Real-IP $remote_addr; }版权    Copyright 2015-2016, Li Kexian    Apache License, Version 2.0打赏以赏表赞关于Li Kexian感谢All stargazersLividSeptembersBluek404renjie45vijaygaddedavoolaShenXuGongZi 标签:StatHub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值