直接读取/proc/net/dev

public class NetStatReader implements MetricsReader {

private static File netstat = new File("/proc/net/dev");

private static final Pattern dline =

//rx //tx

// device_name -bytes packets errs drops fifo frame com mult -bytes packets errs drops fifo frame com mult

Pattern.compile("^ *([A-Za-z]+[0-9]*):\\D*(\\d+)\\D+(\\d+)\\D+(\\d+)\\D+(\\d+)\\D+\\d+\\D+\\d+\\D+\\d+\\D+\\d+\\D+(\\d+)\\D+(\\d+)\\D+(\\d+)\\D+(\\d+)\\D+\\d+\\D+\\d+\\D+\\d+\\D+\\d+.*");

private static final Logger LOG = Logger.getLogger(NetStatReader.class.getName());

@Inject

private Configuration conf;

private String device_regexp = "eth0";

/**

* It creates a wrapper to obtain statistics about a network interface by

* reading information from /proc/net/dev

*

* @param interfaceRegexp a string with a regexp to match with the device to

* control (e.g. "sd[ab]")

*

*

*/

public NetStatReader(String interfaceRegexp) {

LOG.log(Level.INFO, "Sampling interfaces {0}", interfaceRegexp);

this.device_regexp = interfaceRegexp;

checkArgument(netstat.exists(), "/proc/diskstats does not exists");

checkArgument(netstat.canRead(), "/proc/diskstats can not be read");

}

/**

* *

*

* @param interfaceRegexp

* @param processPid to bind the statistics to only one process

* @deprecated it seems to give the same results when looking for a process

* instead of the whole system

*/

@Deprecated

public NetStatReader(String interfaceRegexp, Integer processPid) {

LOG.log(Level.INFO, "Sampling interfaces {0} for process {1}",

new Object[]{interfaceRegexp, processPid});

this.device_regexp = interfaceRegexp;

netstat = new File("proc/" + processPid + "/net/dev");

checkArgument(netstat.exists(), "/proc/diskstats does not exists");

checkArgument(netstat.canRead(), "/proc/diskstats can not be read");

}

public NetStatReader() {

// checkArgument(diskstats.exists(), "/proc/diskstats does not exists");

// checkArgument(diskstats.canRead(), "/proc/diskstats can not be read");

}

@Override

public List call() throws Exception {

Builder b = ImmutableList.builder();

LineReader lr = new LineReader(new FileReader(netstat));

String l;

while ((l = lr.readLine()) != null) {

Matcher m = dline.matcher(l);

if (!m.matches()) {

continue;

}

String iface = m.group(1);

if (iface.matches(device_regexp)) {

b.addAll(Metric.Metric(iface)

.addMetric("rx.bytes", Long.parseLong(m.group(2)))

.addMetric("rx.packets", Long.parseLong(m.group(3)))

.addMetric("rx.errs", Long.parseLong(m.group(4)))

.addMetric("rx.drop", Long.parseLong(m.group(5)))

.addMetric("tx.bytes", Long.parseLong(m.group(6)))

.addMetric("tx.packets", Long.parseLong(m.group(7)))

.addMetric("tx.errs", Long.parseLong(m.group(8)))

.addMetric("tx.drop", Long.parseLong(m.group(9))).getList());

}

}

return b.build();

}

@Override

public void configure() {

if (conf.containsKey("netstat-reader.interfaceregexp")) {

this.device_regexp = conf.getString("netstat-reader.interfaceregexp");

checkArgument(netstat.exists(), "/proc/diskstats does not exists");

checkArgument(netstat.canRead(), "/proc/diskstats can not be read");

}

}

@Override

public void setConf(Configuration c) {

conf = c;

}

@Override

public Configuration getConf() {

return conf;

}

}

doc

Java中proc是什么意思,在java里头读取/proc/net/dev相关推荐

  1. Java中的Volatile如何工作? Java中的volatile关键字示例

    如何在Java中使用Volatile关键字 在Java采访中,什么是volatile变量以及何时在Java中使用volatile变量是Java 采访中一个著名的多线程采访问题 . 尽管许多程序员都知道 ...

  2. java 中的排序_浅谈java中常见的排序

    浅谈java中常见的排序 学过java的人都知道,排序这一部分初次接触感觉还是有点难以理解,很多地方也会用到.然而,在java中常见的排序方法:冒泡排序,选择排序,插入排序等等.下面就让我们一起揭开他 ...

  3. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  4. java中next的用法_关于java iterator的next()方法的用法

    UYOU next()是java迭代器类(Iterator)的方法,获得当前游标指向的下一个元素,详细说明和应用如下:1.迭代器(Iterator)介绍 迭代器是一种设计模式,它是一个对象,它可以遍历 ...

  5. java中引用类型_您真的了解Java中的4种引用类型吗?

    Java中提供了四个级别的引用:SoftReference,FinalReference,WeakReference和PhantomReference.在四种引用类型中,只有FinalReferenc ...

  6. java中怎样判断余数为3,Java的基础语法(三): 运算符

    7.运算符 定义: 对常量和变量进行操做的符号spa 分类: 6大类---算术, 赋值, 比较, 逻辑, 位, 三元code (1).算术运算符blog +, -, *, / ,%, ++, --字符 ...

  7. java中打开文件显示_从java程序中打开任何文件

    在 java中打开文件似乎有点棘手 – 对于.txt文件,必须将File对象与Scanner或BufferedReader对象结合使用 – 对于图像IO,必须使用 ImageIcon类 – 如果要打开 ...

  8. java中布局管理器flowlayout,在Java中下列()方法可以把JFrame的布局管理器设为FlowLayout类型。...

    在Java中下列()方法可以把JFrame的布局管理器设为FlowLayout类型. 答:jFrame.setLayout(new FlowLayout() ) 在Word 2010的编辑状态,当前编 ...

  9. java中字符流 字节流_理解Java中字符流与字节流的区别

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可 ...

最新文章

  1. DeepMind 的新强化学习系统,是迈向通用人工智能的一步吗?
  2. stata 将数据集变量名称导出_Excel统计年鉴如何转换为面板数据?
  3. opencv 凹凸性检测 和 缺陷分析
  4. Unity3D與IE8兼容有問題
  5. 面向对象三大特性之一:多态(C++)
  6. 算法分析与设计-实验二 动态规划算法设计
  7. java后台验证不能为空_java validation 后台参数验证的使用详解
  8. 精通init ramfs构建
  9. 2018中国国际大数据大会专属报名通道(粉丝专享)开通啦!
  10. MSP430学习笔记2---两个LED同时亮灭和顺闪
  11. HTML5 Canvas JavaScript库 Fabric.js 使用经验
  12. Glide Golang包管理
  13. 收藏一篇关于 用两个栈实现一个队列功能的帖子
  14. 一分钟先生:怎样给员工发奖金
  15. phpadmin安装到mysql中,mysql 和phpadmin安装
  16. ListView--QQ联系人样式
  17. div css经典布局实例,div+css布局实例:常用图文混排(一)--腾讯图文 - 蜗爱CSS
  18. 指针地址左移右移的代码实例
  19. vc 6.0++解决兼容性及闪退问题
  20. Kmeans聚类K值选择Parametric Bootstrap方法,以及数据重抽样方法Bootstrapping

热门文章

  1. 如何在S/4HANA里创建Custom Business object并实现自定义逻辑
  2. SAP Hybris的类型系统更改和ABAP的LOAD_PROGRAM_TABLE_MISMATCH
  3. 在SAP云平台ABAP编程环境里使用CAP模型创建Fiori应用
  4. SAP Cloud Platform integration上创建一个最简单的iFlow
  5. 使用Javascript递归遍历本地文件夹
  6. 错误信息Make an entry in Field Text Area
  7. SAP CRM WebClient UI,点击Master Data工作中心后执行的JavaScript代码
  8. Angular应用里使用rxjs提供的观察者和发布者实现事件处理
  9. 分享一个开源的JavaScript统计图表库,40行代码实现专业统计图表
  10. 利用CRM中间件Middleware从ERP下载Customer Material的常见错误