我想写个Unix通用的监控,
Linux上有proc很方便,但BSD上Solaris上没这玩意,
想得到CPU啊Load啊IO等,必须调用Kernel中的相关函数.
更重要的是,
如果从Linux的proc里面把相关数据读出来,
感觉很不体面,不够有技术含量:P
但用了哪些函数呢?
我下载了rstatd和top的源码看看,
看看他们怎么监控的,
不看不知道,以为他们会很技术很NB的调用kernel中的东西呢,结果还是访问proc里面的文件.....
其实自己想到的东西未必有多差,这么流行的东西实现的方式不也很土么.
顺便写下:
top在不同的平台使用了不同的方法得到系统负载,
在linux下面就用了我以为很土其实还不错的proc来得到,代码如下:
/* get load averages */
{
fd = open("loadavg", O_RDONLY);
len = read(fd, buffer, sizeof(buffer)-1);
close(fd);
buffer[len] = '\0';
info->load_avg[0] = strtod(buffer, &p);
info->load_avg[1] = strtod(p, &p);
info->load_avg[2] = strtod(p, &p);
p = skip_token(p); /* skip running/tasks */
p = skip_ws(p);
if (*p)
info->last_pid = atoi(p);
else
info->last_pid = -1;
}
在macos上用sysctl函数得到,代码如下:
/* get load averages */
{
size_t size = sizeof(load);
static int mib[] = { CTL_VM, VM_LOADAVG };
if (sysctl(mib, 2, &load, &size, NULL, 0) < 0) {
(void) fprintf(stderr, "top: sysctl failed: %s\n", strerror(errno))
;
bzero(&load, sizeof(load));
}
}
再看一下Rstatd监控的实现,以获得load为例:
static void get_load(struct statsusers *stats) {
FILE *fp;
double avrun[3];
if (NULL == (fp = fopen("/proc/loadavg", "r"))) {
return;
}
if (!fscanf(fp , "%lf %lf %lf", &avrun[0], &avrun[1], &avrun[2])) {
syslog(LOG_CRIT, "unexpected data format in /proc/loadavg");
exit(EXIT_FAILURE);
}
stats->avenrun[0] = avrun[0] * FSCALE;
stats->avenrun[1] = avrun[1] * FSCALE;
stats->avenrun[2] = avrun[2] * FSCALE;
fclose(fp);
}
方法也是土办法.
我就纳闷,频繁的打开文件读取其中的内容本来就是件体力活,
如果被监控的应用的性能本来很高,不耗费什么系统资源,
结果监控出来的数据几乎都是这些监控软件搞出来的,多不严谨啊.
估计大家都认为没必要这么计较吧.
看来,写个通用的监控不容易啊,除非我去扣top的输出,但这更土!
分享到:
相关推荐
别以为自己当老板就很容易浅谈创业开局六招.pdf
别以为你懂电脑 漏洞问题不可小觑.docx
都说成功是没有捷径的,而别以为自己当老板就很容易浅谈创业开局六招却能够给你指引通向成功的方向,欢迎...该文档为别以为自己当老板就很容易浅谈创业开局六招,是一份很不错的参考资料,具有较高参考价值,感兴趣...
初中语文文摘社会别以为你能挤进上流社会
别以为少儿编程就是冰冷的代码【育儿知识】.doc
别以为进四大就完事儿了,财务之路应该怎么走?
别以为进四大就完事儿了,财务之路应该怎么走?.zip
Ted英语演讲稿:Onwhatwethinkweknow?我们以为自己知道的.pdf
无线破解,我自己试了,用vmware8.0,可以用,不过字典不好下,有兴趣的同学们去试试吧
自己以为的自动化元件使用办法咯(第一部分)03.pdf
自己以为的自动化元件使用办法咯(第二部分)03.pdf
实用源码(很杂没有整理,本人以为很有用)
设计之道-③设计师:你以为你自己是谁?.pdf
你以为的程序员
文章为大家介绍了在面试时哪些话不能说。
本电子书较为详细的讲解了,如何利用BT3破解WEP无线与WPA加密手段。 目录: 准备工作 安装BT3到虚拟机 实战破解WEP加密的信号 实战破解WPA加密的信号 破解WPA常见软件使用
别以为解密是什么很不光彩的事情,离开了我们这些CRACKER,软件加密水平也不会有很大的提高。就好比武侠小说里写的一样,武功要相互切磋才会不断进步。天外有天,人外有人,强中自有强中手,如果谁以为自己的武功...
初中语文文摘情感他以为
争取独立,以为长大.docx
我在做javaweb实验的时候,遇到了一件很无语的事,我感觉我的代码没有问题,但是运行起来总是404,我总以为是我的哪个跳转的页面写错了,然后总在检查。其实后来想了一想,我是遇到问题就慌了,就乱检查,这样很浪费...