监控agent记录-sigar(一)

本文介绍了在开发监控agent时,从安全角度考虑放弃使用Telnet协议,转而采用Sigar库来收集跨平台的系统性能数据。Sigar是Hyperic HQ的基础组件,支持多种操作系统,并提供了C、C#、Java和Perl API。文章详细说明了如何在Java项目中引用Sigar的依赖,并指出需要将基本库文件放入classpath。
摘要由CSDN通过智能技术生成

1、背景介绍

    需要开发agent从服务器上采集服务器性能数据,之前是vb写的程序取数据,然后Java通过telnet协议去调用vb程序取性能数据。鉴于Telnet协议不安全方面考虑,所有选择其他方案。

2、目前用到的新技术

Sigar,

Sigar是Hyperic-hq产品的基础包,是HypericHQ主要的数据收集组件。它用来从许多平台收集系统和处理信息.

这些平台包括:Linux,Windows, Solaris, AIX, HP-UX, FreeBSD and Mac OSX.

Sigar有C,C#,Java和PerlAPI,java版的API为sigar.jarsigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar依赖sigar-amd64-winnt.dll或sigar-x86-winnt.dll,linux操作系统下则依赖libsigar-amd64-linux.so或libsigar-x86-linux.so

Hyperic-hq官方网站:http://www.hyperic.com

Sigar.jar下载地址:http://sigar.hyperic.com

 

Sigar API提供一个方便的接口来收集系统信息,如:

◆系统内存,页面交换,cpu,平均负载,运行时间,登录信息

◆每个进程占用的内存,cpu,帐号信息,状态,参数,环境,打开的文件

◆文件系统探测和度量

◆网络接口探测,配置信息和度量

◆网络路由和连接表

3Sigar项目中详细介绍

Pom.xml

                    <dependency>

   <groupId>org.fusesource</groupId>

    <artifactId>sigar</artifactId>

    <version>1.6.4</version>

</dependency>

sigar的基本库文件(sigar-amd64-winnt.dllsigar-x86-winnt.dlllibsigar-amd64-linux.so或libsigar-x86-linux.so)需要放到classpath里。

package com.pcitc.integrate.agent.sigar;

import java.io.File;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;

import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.DirUsage;
import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.NetConnection;
import org.hyperic.sigar.NetFlags;
import org.hyperic.sigar.NetInterfaceConfig;
import org.hyperic.sigar.NetInterfaceStat;
import org.hyperic.sigar.NfsFileSystem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.SigarLoader;
import org.hyperic.sigar.SigarProxy;
import org.hyperic.sigar.SigarProxyCache;
import org.hyperic.sigar.Swap;
import org.hyperic.sigar.Tcp;
import org.hyperic.sigar.util.PrintfFormat;

public class SystemInfo {
	   
    private Sigar sigar ;
   
    private SigarProxy proxy;
   
    private StringBuilder info = new StringBuilder();

    private void sigarInit(boolean isProxy) {
        sigar = new Sigar();
        if(isProxy)
            proxy = SigarProxyCache.newInstance(this.sigar);
    }
   
    private void shutdown() {
        this.sigar.close();
    }
   

   
    public String getInfo() {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值