加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl snmp rrdtool 画图

发布时间:2020-12-16 00:37:26 所属栏目:大数据 来源:网络整理
导读:在上一篇文章中,有兄弟问我要code source,因前面写的数据收集用的是本地获取的,所以就想先改进下数据收集方式,再发出来。今天,我采用snmp方式把数据收集出来,并画图。 以下代码仅供参考: #!/usr/bin/perl ? use?Net::SNMP;? use?RRDs;? ? my?@hosts=(

在上一篇文章中,有兄弟问我要code source,因前面写的数据收集用的是本地获取的,所以就想先改进下数据收集方式,再发出来。今天,我采用snmp方式把数据收集出来,并画图。

以下代码仅供参考:

 
 
  1. #!/usr/bin/perl?
  2. use?Net::SNMP;?
  3. use?RRDs;?
  4. ?
  5. my?@hosts=("localhost","127.0.0.1","192.168.x.y");?
  6. my?$debug=1;?
  7. my?$rrd_path="/usr/rrd/";?
  8. my?$pic_path="/usr/rrd/pic/";?
  9. my?$oid=".1.3.6.1.4.1.2021.51.101.1";?
  10. ?
  11. sub?CREATERRD{?
  12. my?($rrdname)=shift;?
  13. ??
  14. RRDs::create("$rrdname",?
  15. ?"--step",?300,?
  16. ?"DS:1min:GAUGE:600:U:U",?
  17. ?"DS:5min:GAUGE:600:U:U",?
  18. ?"DS:15min:GAUGE:600:U:U",?
  19. ?"RRA:AVERAGE:0.5:1:600",?
  20. ?"RRA:AVERAGE:0.5:6:700",?
  21. ?"RRA:AVERAGE:0.5:24:775",?
  22. ?"RRA:AVERAGE:0.5:288:797",?
  23. ?);?
  24. ?my?$ERROR?=?RRDs::error;?
  25. ?if?($ERROR){?
  26. ?print?"ERROR?unable?to?create?${ERROR}?n?"?if?$debug;?
  27. ?print?"create?non"?if?$debug;?
  28. ?return?0;?
  29. }else{?
  30. ?print?"$rrdname?createokn"?if?$debug;?
  31. ?return?1;?
  32. ?}?
  33. }?
  34. ?
  35. sub?UPDATERRD{?
  36. ????my?($rrdname,$L1min,$L5min,$L15min)=@_;?
  37. ????RRDs::update?("$rrdname","N:$L1min:$L5min:$L15min");?
  38. ????my?$ERROR=RRDs::error;?
  39. ????if?($ERROR){?
  40. ????????print?"ERROR?unable?to?update?${ERROR}?n"?if?$debug;?
  41. ????????return?0;?
  42. ????}else{?
  43. ????????print?"update?successn"?if?$debug;?
  44. ????????return?1;?
  45. ????}?
  46. }?
  47. ?
  48. ?
  49. sub?GRAPHPNG{?
  50. ????my?($rrdfile,$starttime)=@_;?
  51. ????my?$rrdtitle1;?
  52. ????if($rrdfile=~/(.*).rrd$/i){?
  53. ????????$rrdtitle1=$1;?
  54. ?????????
  55. ????}else{?
  56. ????????$rrdtitle1=$rrdfile;?
  57. ????}?
  58. ????my?$pngfile=$pic_path.$rrdtitle1.".png";?
  59. ????print?$pngfile."n"?if?$debug;?
  60. ????my?$rrdfile=$rrd_path.$rrdfile;?
  61. RRDs::graph($pngfile,?
  62. '--title',$rrdtitle1,?
  63. '--font',?'TITLE:10:',?
  64. '--font',?'LEGEND:10:',?
  65. '--base',1000,?
  66. '--height',120,?
  67. '--width',600,?
  68. '--vertical-label','Cpu?LoadAverage',?
  69. '--start',-$starttime,?
  70. "DEF:1min=$rrdfile:1min:AVERAGE",?
  71. "DEF:5min=$rrdfile:5min:AVERAGE",?
  72. "DEF:15min=$rrdfile:15min:AVERAGE",?
  73. "AREA:1min#EACC00FF:1Min?Average",?
  74. 'GPRINT:1min:LAST:?Current:%8.2lf%sn',?
  75. "AREA:5min#EA8F00FF:5Min?Average",?
  76. 'GPRINT:5min:LAST:Current:%8.2lf%sn',?
  77. "AREA:15min#FF0000FF:15Min?Average",?
  78. );?
  79. if?(my?$ERROR?=?RRDs::error)?{?
  80. print?"ERROR:?$ERRORn"?if?$debug;?
  81. return?0;?
  82. }?
  83. }?
  84. ?
  85. sub?GETSNMP?{?
  86. ????my?$s?=?shift;?
  87. ????my?$oid?=?shift?||?return?"U";?
  88. ????my?$response?=?$s->get_request($oid);?
  89. ????my?$retval?=?$response->{$oid}?||?"U";?
  90. ????print?"$oid?->?$retvaln"?if?$debug;?
  91. ????return?($retval?=~?/(d+)/)???$retval?:?'U';?
  92. }?
  93. ?
  94. foreach?my?$ip(@hosts){?
  95. ?????#create?rrd?
  96. ?????my?$rrd_filename?=?"$rrd_path$ip-loadaverage.rrd";?
  97. ?????print?"$rrd_filenamen"?if?$debug;?
  98. ?????unless(-e?$rrd_filename){?
  99. ?????????&CREATERRD($rrd_filename);?
  100. ?????}?
  101. ?
  102. ????#get?data?
  103. ?????my($s,?$err)?=?Net::SNMP->session(?
  104. ?????-hostname?=>?$ip,?
  105. ?????-community?=>?"CHKTIME",?
  106. ?????-timeout?=>?1,?
  107. ?????-version?=>?2?
  108. ?????);????
  109. ?
  110. ????my?$LoadAverage?=?GETSNMP($s,$oid);?
  111. ????print?$LoadAverage."n"?if?$debug;?
  112. ????my?($L1m,$L5m,$L15m)=split("?",$LoadAverage);?
  113. ????print?"n".$L1m."t".$L5m."t".$L15m."n"?if?$debug;?
  114. ????
  115. ????#update?rrd?
  116. ????if(?-e?$rrd_filename){?
  117. ?????????&UPDATERRD($rrd_filename,$L1m,$L15m);?
  118. ???}?
  119. ?
  120. ????#graph?picture?
  121. ????&GRAPHPNG("$ip-loadaverage.rrd",86400);??
  122. }?

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读