Advertisement
Guest User

Untitled

a guest
Feb 9th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use Getopt::Long;
  4. use strict;
  5. use warnings;
  6.  
  7. my $vm_name = "";
  8. my $interval = 10;
  9.  
  10. GetOptions ("vm_name=s" => \$vm_name, "interval=i" => \$interval) or die 'Syntax error';
  11.  
  12. die 'Syntax error' unless $vm_name;
  13.  
  14. my $me = $$;
  15. `ps axu | grep jvm-stats.pl | grep $vm_name | grep -v axu | grep -v $me | awk '{print \$2}' | xargs kill -TERM 2>&1 > /dev/null`;
  16. `ps axu | grep jps | grep $vm_name | grep -v axu | awk '{print \$2}' | xargs kill -TERM 2>&1 > /dev/null`;
  17.  
  18. my $pid = 0;
  19. $SIG{TERM} = sub {
  20. if ($pid) {
  21. `kill -TERM $pid`;
  22. }
  23. exit 0;
  24. };
  25.  
  26. sub trim {
  27. my $s = shift;
  28. $s =~ s/^\s+|\s+$//g;
  29. return $s;
  30. };
  31.  
  32. my $host = trim(`hostname`);
  33. my $name = lc($vm_name);
  34.  
  35. while(1) {
  36. my $process = trim(`jps | grep $vm_name | awk '{print \$1}'` || '');
  37. if (length($process) > 0) {
  38. `ps axu | grep jstat | grep $process | grep -v axu | awk '{print \$2}' | xargs kill -TERM 2>&1 > /dev/null`;
  39. $pid = open(OUT, "jstat -gc $process ${interval}s |");
  40. my $first_line = <OUT>;
  41. while (my $line = <OUT>) {
  42. my $time = trim(`date +%s`);
  43. # S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
  44. my ($s0c, $s1c, $s0u, $s1u, $ec, $eu, $oc, $ou, $pc, $pu, $ygc, $ygct, $fgc, $fgct, $gct) = map { trim($_) } split(/\s+/, trim($line));
  45. $fgc = int($fgc);
  46. $fgct = int($fgct);
  47. $ygc = int($ygc);
  48. $ygct = int($ygct);
  49. $fgct = $fgct * 1000;
  50. $ygct = $ygct * 1000;
  51. $pc = $pc * 1000;
  52. $pu = $pu * 1000;
  53. $oc = $oc * 1000;
  54. $ou = $ou * 1000;
  55. $ec = $ec * 1000;
  56. $eu = $eu * 1000;
  57. $s0c = $s0c * 1000;
  58. $s0u = $s0u * 1000;
  59. $s1c = $s1c * 1000;
  60. $s1u = $s1u * 1000;
  61. print "PUTVAL $host/jvm/counter-$name.gc $time:$fgc\n";
  62. print "PUTVAL $host/jvm/counter-$name.gc_time $time:$fgct\n";
  63. print "PUTVAL $host/jvm/counter-$name.ygc $time:$ygc\n";
  64. print "PUTVAL $host/jvm/counter-$name.ygc_time $time:$ygct\n";
  65. print "PUTVAL $host/jvm/gauge-$name.perm_capacity interval=$interval N:$pc\n";
  66. print "PUTVAL $host/jvm/gauge-$name.perm_size interval=$interval N:$pu\n";
  67. print "PUTVAL $host/jvm/gauge-$name.old_capacity interval=$interval N:$oc\n";
  68. print "PUTVAL $host/jvm/gauge-$name.old_size interval=$interval N:$ou\n";
  69. print "PUTVAL $host/jvm/gauge-$name.eden_capacity interval=$interval N:$ec\n";
  70. print "PUTVAL $host/jvm/gauge-$name.eden_size interval=$interval N:$eu\n";
  71. print "PUTVAL $host/jvm/gauge-$name.survivor0_capacity interval=$interval N:$s0c\n";
  72. print "PUTVAL $host/jvm/gauge-$name.survivor0_size interval=$interval N:$s0u\n";
  73. print "PUTVAL $host/jvm/gauge-$name.survivor1_capacity interval=$interval N:$s1c\n";
  74. print "PUTVAL $host/jvm/gauge-$name.survivor1_size interval=$interval N:$s1u\n";
  75. }
  76. }
  77. sleep($interval);
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement