免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4943 | 回复: 14
打印 上一主题 下一主题

吃上饺子了,给大家分享! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-11 10:55 |只看该作者 |倒序浏览
这个是画cpu占用情况的图,我测试集群用的,perl不怎么会,临时拼凑的,其中的画图功能网络上找的,脚本不太完善,但满足我的需求了
我的数据来自sar 可以根据自己需要检测的指标灵活改动,另外我还会经常来吃饺子的~~~~

  1. #!/usr/bin/perl
  2. #
  3. #       read from file cpud1(data which produce by sar -u)
  4. #                                         by justlooks
  5. ############################################################
  6. use strict;
  7. use GD::Graph::lines;

  8. my @tmp1;
  9. my @cpud=();
  10. my @timed=();
  11. open(FH,"cpud1") or die "nnnnnn!\n";
  12. while(<FH>){
  13.     @tmp1=split;
  14.     if($tmp1[8]=~m/\d+/){
  15.     push @cpud,$tmp1[8];
  16.     }
  17.     if(m/(?<=:)\d{2}:\d{2}/){
  18.        push @timed,$&;
  19.     }
  20. }
  21. my $arrlen=@cpud;
  22. my $i;
  23. for $i (0..$arrlen-1){
  24.     $cpud[$i]=100-$cpud[$i];   #把图转个180度
  25. }

  26. close(FH);


  27. my @data=(
  28. [@timed],
  29. [@cpud],);

  30. my $my_graph=new GD::Graph::lines(1000,600);
  31. $my_graph->set(
  32. x_label => 'time',
  33. y_label => 'cpu use(%)',
  34. y_max_value => '100',
  35. y_min_value => '0',
  36. title => 'just draw',
  37. transparent => 0,
  38. );

  39. $my_graph->plot(\@data);
  40. save_chart($my_graph,'edit2');
  41. sub save_chart
  42. {
  43.     my $chart = shift or die "Need a chart";
  44.     my $name = shift or die "Need a name";
  45.     local(*OUT);
  46.     my $ext = $chart->export_format;
  47.     open(OUT,">$name.$ext") or
  48.     die "Can not open $name.$ext for write: $!";
  49.     binmode OUT;
  50.     print OUT $chart->gd->$ext();
  51.     close OUT;
  52. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2009-09-11 11:05 |只看该作者

回复 #1 justlooks 的帖子

把图(结果)贴出来看看啦

论坛徽章:
0
3 [报告]
发表于 2009-09-11 11:07 |只看该作者
我不知道阿,这个论坛哪里能贴图?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2009-09-11 11:29 |只看该作者
希望楼主能够再接再厉,把 Perl 学好用好。

论坛徽章:
0
5 [报告]
发表于 2009-09-11 11:50 |只看该作者
多谢版主

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
6 [报告]
发表于 2009-09-11 16:15 |只看该作者
附件可以放图...

论坛徽章:
0
7 [报告]
发表于 2009-09-12 06:56 |只看该作者
  1. if(m/(?<=:)\d{2}:\d{2}/){
  2.        push @timed,$&;
复制代码
其实 很对纯sar -u输出来说 这句是有问题的 这会把第一句 的第一个时间 也统计进去
12:00:01 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM       all     16.77      0.00      7.54      3.86      0.00     71.83
12:20:01 AM       all     15.59      0.12      6.88      3.22      0.00     74.18

就是第一句的12:00:01  是没对应[8的]的 所以你@data的2个数列 后者@cpud 少了一个元素

  1. open (FH, "cpu1") or die $!;

  2. my @cpu;
  3. my @time;
  4. while (<FH>) {
  5.     my @array = split;
  6.     if (exists $array[8]) {
  7.         if ($array[8] =~ /\d+/) {
  8.             push @cpu, $array[8];
  9.             if ($array[0] =~ /\d{2}\:(\d{2}\:\d{2})/) {
  10.                 push @time, $1;
  11.             }
  12.         }
  13.     }
  14. }
复制代码

这么写是不是会好点

[ 本帖最后由 cxfcxf 于 2009-9-12 07:54 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2009-09-12 07:37 |只看该作者
OK上图第1张是上面代码的图,第2张我改了下,3批数据画在1张图上,我不知道说明怎么画上去(就是在图边标注什么颜色的线代表什么),谁用这个比较熟悉的,告诉我下怎么弄

edit2.gif (5.53 KB, 下载次数: 30)

edit2.gif

edit2.gif (8.99 KB, 下载次数: 28)

edit2.gif

论坛徽章:
0
9 [报告]
发表于 2009-09-12 07:39 |只看该作者

回复 #7 cxfcxf 的帖子

这点到没有注意,但是单纯sar -u 根本没数据的阿?

论坛徽章:
0
10 [报告]
发表于 2009-09-12 07:56 |只看该作者
# sar -u
Linux 2.6.18-92.1.18.el5PAE (Stage1st-APP)      09/12/2009

12:00:01 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM       all     16.77      0.00      7.54      3.86      0.00     71.83

他是去调用 /var/log/sa/saxx的文件 每天写一次一般...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP