Changeset 28862
- Timestamp:
- Aug 6, 2010, 4:44:37 PM (16 years ago)
- Location:
- trunk/tools
- Files:
-
- 5 edited
-
czarplot.pl (modified) (1 diff)
-
czartool/CzarDb.pm (modified) (7 diffs)
-
czartool/Czarplot.pm (modified) (3 diffs)
-
czartool/Nebulous.pm (modified) (3 diffs)
-
roboczar.pl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/czarplot.pl
r28845 r28862 87 87 if ($histogram) {$czarplot->createHistogram($label, $begin, $end);} 88 88 if ($nebulous) {$czarplot->plotDiskUsageHistogram();} 89 if ($nebulous) {$czarplot->plotStorageTimeSeries($begin, $end);}89 #if ($nebulous) {$czarplot->plotStorageTimeSeries($begin, $end);} 90 90 -
trunk/tools/czartool/CzarDb.pm
r28843 r28862 159 159 ########################################################################### 160 160 sub updateHost { 161 my ($self, $host, $total, $available, $used ) = @_;161 my ($self, $host, $total, $available, $used, $readable, $writable) = @_; 162 162 163 163 my $query = $self->{_db}->prepare(<<SQL); … … 168 168 $query = $self->{_db}->prepare(<<SQL); 169 169 INSERT INTO hosts 170 (host, total, available, used )170 (host, total, available, used, readable, writable) 171 171 VALUES 172 ('$host', $total, $available, $used );172 ('$host', $total, $available, $used, $readable, $writable); 173 173 SQL 174 174 $query->execute; … … 352 352 ########################################################################### 353 353 sub createHostsData { 354 my ($self ) = @_;355 356 my $dataFile = "/tmp/czarplot_hosts .dat";354 my ($self, $limit) = @_; 355 356 my $dataFile = "/tmp/czarplot_hosts_space.dat"; 357 357 open (GNUDAT, ">$dataFile"); 358 358 359 359 my $query = $self->{_db}->prepare(<<SQL); 360 360 SELECT 361 host, used, available 361 host, used, available, writable, readable 362 362 FROM hosts 363 363 ORDER BY host; … … 366 366 $query->execute; 367 367 368 my $underLimit; 369 my $hostOut; 370 368 371 # loop round results 369 372 while (my @row = $query->fetchrow_array()) { 370 373 371 my ($host, $used, $available) = @row; 372 print GNUDAT "$host $used $available\n"; 374 my ($host, $used, $available, $writable, $readable) = @row; 375 376 if (($used/($used+$available))*100 > $limit) {$underLimit = 0;} 377 else {$underLimit = 1;} 378 379 if ($host =~ m/ipp0([0-9]+)/) {$hostOut = $1;} 380 381 # Col 1: host 382 print GNUDAT "$hostOut"; 383 384 # Col 2: available, readable used space under limit 385 if ($readable && $underLimit) {print GNUDAT " $used";} 386 else {print GNUDAT " 0";} 387 388 # Col 3: available, readable used space OVER limit 389 if ($readable && !$underLimit) {print GNUDAT " $used";} 390 else {print GNUDAT " 0";} 391 392 # Col 4: NOT available used space 393 if (!$readable) {print GNUDAT " $used";} 394 else {print GNUDAT " 0";} 395 396 # Col 5: available writable space 397 if($writable) {print GNUDAT " $available";} 398 else {print GNUDAT " 0";} 399 400 # Col 6: NOT available writable space 401 if(!$writable) {print GNUDAT " $available";} 402 else {print GNUDAT " 0";} 403 404 print GNUDAT "\n"; 373 405 } 374 406 close(GNUDAT); 375 407 376 408 return $dataFile; 409 } 410 411 ########################################################################### 412 # 413 # Gets total used cluster space as a percentage 414 # 415 ############################################################################ 416 sub getTotalClusterStorageAsPercentage { 417 my ($self) = @_; 418 419 my $query = $self->{_db}->prepare(<<SQL); 420 SELECT used/total*100 421 FROM cluster_space 422 ORDER BY timestamp DESC LIMIT 1; 423 SQL 424 $query->execute; 425 return scalar $query->fetchrow_array(); 377 426 } 378 427 … … 454 503 455 504 my $currentRevision = -1; 456 my $latestRevision = 9;505 my $latestRevision = 10; 457 506 458 507 while ($currentRevision != $latestRevision) { … … 470 519 elsif ($currentRevision == 7) {$self->createRevision_8();} 471 520 elsif ($currentRevision == 8) {$self->createRevision_9();} 472 } 521 elsif ($currentRevision == 9) {$self->createRevision_10();} 522 } 523 } 524 525 ####################################################################################### 526 # 527 # Sets current revision of ippToPsps database 528 # 529 ####################################################################################### 530 sub setRevision { 531 my ($self, $revision) = @_; 532 533 my $query = $self->{_db}->prepare(<<SQL); 534 INSERT INTO revision (revision) VALUES ($revision); 535 SQL 536 $query->execute; 537 } 538 539 ####################################################################################### 540 # 541 # Gets current revision of ippToPsps database 542 # 543 ####################################################################################### 544 sub getRevision { 545 my ($self) = @_; 546 547 if (!$self->SUPER::doesTableExist("revision")) {return 0;} 548 549 my $query = $self->{_db}->prepare(<<SQL); 550 SELECT revision 551 FROM revision 552 ORDER BY revision DESC LIMIT 1; 553 SQL 554 555 $query->execute; 556 my @row = $query->fetchrow_array(); 557 558 return $row[0]; 473 559 } 474 560 … … 739 825 ####################################################################################### 740 826 # 741 # Sets current revision of ippToPsps database 742 # 743 ####################################################################################### 744 sub setRevision { 745 my ($self, $revision) = @_; 746 747 my $query = $self->{_db}->prepare(<<SQL); 748 INSERT INTO revision (revision) VALUES ($revision); 749 SQL 750 $query->execute; 751 } 752 753 ####################################################################################### 754 # 755 # Gets current revision of ippToPsps database 756 # 757 ####################################################################################### 758 sub getRevision { 759 my ($self) = @_; 760 761 if (!$self->SUPER::doesTableExist("revision")) {return 0;} 762 763 my $query = $self->{_db}->prepare(<<SQL); 764 SELECT revision 765 FROM revision 766 ORDER BY revision DESC LIMIT 1; 767 SQL 768 769 $query->execute; 770 my @row = $query->fetchrow_array(); 771 772 return $row[0]; 827 # Create revision 10 of the database 828 # 829 ####################################################################################### 830 sub createRevision_10 { 831 my ($self) = @_; 832 833 print "* Creating revision 10 of '$self->{_dbName}'\n"; 834 835 my $query = $self->{_db}->prepare(<<SQL); 836 ALTER TABLE hosts 837 ADD COLUMN writable TINYINT NOT NULL DEFAULT 0, 838 ADD COLUMN readable TINYINT NOT NULL DEFAULT 0; 839 SQL 840 841 $query->execute; 842 843 $self->setRevision(10); 773 844 } 774 845 -
trunk/tools/czartool/Czarplot.pm
r28846 r28862 347 347 my ($self) = @_; 348 348 349 my $outputFile = "/tmp/czarplot_hosts.png"; 350 351 my $inputFile = $self->{_czarDb}->createHostsData(); 349 my $outputFile = "/tmp/czarplot_hosts_space.png"; 350 my $limit = 97.0; 351 my $inputFile = $self->{_czarDb}->createHostsData($limit); 352 353 my $totalUsed = $self->{_czarDb}->getTotalClusterStorageAsPercentage(); 354 355 my $totalPercent = sprintf("%.1f%%", $totalUsed); 352 356 353 357 open (GP, "|/usr/bin/gnuplot -persist") or die "no gnuplot"; … … 358 362 "set term $self->{_outputFormat};" . 359 363 "set output \"$outputFile\";" . 360 "set title \"Nebulous disk use across IPP cluster \";" .364 "set title \"Nebulous disk use across IPP cluster ($totalPercent of total allocated)\";" . 361 365 "set style fill solid 1.00 border -1;" . 362 366 "set style histogram rowstacked;" . … … 364 368 "set ylabel \"Space (TB)\";" . 365 369 "set xtic rotate by -90 scale 0;" . 366 "plot '$inputFile' using 2:xtic(1) t \"Used\" , '' using 3 t \"Available\";" . 370 "plot '$inputFile' " . 371 "using 2:xtic(1) t \"Used\" lt 7," . 372 "'' using 3 t \"Over $limit% used\" lt 1," . 373 "'' using 4 t \"Unavailable\" fs solid 0.50 lt -1 ," . 374 "'' using 5 t \"Free\" lt 2," . 375 "'' using 6 notitle fs solid 0.50 lt -1" . 376 ";" . 367 377 368 378 "\n"; -
trunk/tools/czartool/Nebulous.pm
r28845 r28862 93 93 $self->{_totalHosts} = 0; 94 94 $self->{_hostsOverNinetyEightPC} = 0; 95 my $readable; 96 my $writable; 95 97 foreach $line (@cmdOut) { 96 98 … … 113 115 if ($4 >= 98) {$self->{_hostsOverNinetyEightPC}++;} 114 116 115 # print $1 . " " . $self->convertKbToTb($2+$3) . " " . $self->convertKbToTb($2) . " " . $self->convertKbToTb($3) . " $4PC \n" ; 116 $self->{_czarDb}->updateHost($1, $self->convertKbToTb($2+$3), $self->convertKbToTb($3), $self->convertKbToTb($2)); 117 $self->getReadableWritableStatus($1, \$readable, \$writable); 118 119 $self->{_czarDb}->updateHost($1, 120 $self->convertKbToTb($2+$3), 121 $self->convertKbToTb($3), 122 $self->convertKbToTb($2), 123 $readable, $writable); 117 124 } 118 125 } … … 123 130 $self->{_totalUsed}, 124 131 $self->{_hostsOverNinetyEightPC}); 132 } 125 133 134 ########################################################################### 135 # 136 # Runs neb-host and readable/writable status for this host 137 # 138 ########################################################################### 139 sub getReadableWritableStatus { 140 my ($self, $host, $readable, $writable) = @_; 141 142 ${$readable} = 0; 143 ${$writable} = 0; 144 145 my @cmdOut = `neb-host`; 146 my $line; 147 foreach $line (@cmdOut) { 148 149 chomp($line); 150 if ($line =~ m/$host\s+[0-9.A-Za-z]+\s+([01]+)\s+([01]+)\s+([01]+)\s+.*/i) { 151 152 # if mounted... 153 if ($1) { 154 155 ${$readable} = $3; 156 ${$writable} = $2; 157 } 158 } 159 } 126 160 } 127 161 1; -
trunk/tools/roboczar.pl
r28845 r28862 106 106 print "* Checking Nebulous\n"; 107 107 $nebulous->updateClusterSpaceInfo(); 108 108 $czarplot->plotDiskUsageHistogram(); 109 109 updateServerStatus(); 110 110 updateLabels();
Note:
See TracChangeset
for help on using the changeset viewer.
