IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 28862


Ignore:
Timestamp:
Aug 6, 2010, 4:44:37 PM (16 years ago)
Author:
rhenders
Message:

Nebulous cluster space plot added

Location:
trunk/tools
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/czarplot.pl

    r28845 r28862  
    8787if ($histogram) {$czarplot->createHistogram($label, $begin, $end);}
    8888if ($nebulous) {$czarplot->plotDiskUsageHistogram();}
    89 if ($nebulous) {$czarplot->plotStorageTimeSeries($begin, $end);}
     89#if ($nebulous) {$czarplot->plotStorageTimeSeries($begin, $end);}
    9090
  • trunk/tools/czartool/CzarDb.pm

    r28843 r28862  
    159159###########################################################################
    160160sub updateHost {
    161     my ($self, $host, $total, $available, $used) = @_;
     161    my ($self, $host, $total, $available, $used, $readable, $writable) = @_;
    162162
    163163    my $query = $self->{_db}->prepare(<<SQL);
     
    168168    $query = $self->{_db}->prepare(<<SQL);
    169169    INSERT INTO hosts
    170         (host, total, available, used)
     170        (host, total, available, used, readable, writable)
    171171        VALUES
    172         ('$host', $total, $available, $used);
     172        ('$host', $total, $available, $used, $readable, $writable);
    173173SQL
    174174    $query->execute;
     
    352352###########################################################################
    353353sub 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";
    357357    open (GNUDAT, ">$dataFile");
    358358
    359359    my $query = $self->{_db}->prepare(<<SQL);
    360360    SELECT
    361         host, used, available
     361        host, used, available, writable, readable
    362362        FROM hosts
    363363        ORDER BY host;
     
    366366    $query->execute;
    367367
     368    my $underLimit;
     369    my $hostOut;
     370
    368371    # loop round results
    369372    while (my @row = $query->fetchrow_array()) {
    370373
    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";
    373405    }
    374406    close(GNUDAT);
    375407
    376408    return $dataFile;
     409}
     410
     411###########################################################################
     412#
     413# Gets total used cluster space as a percentage
     414#
     415############################################################################
     416sub 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;
     423SQL
     424    $query->execute;
     425    return scalar $query->fetchrow_array();
    377426}
    378427
     
    454503
    455504    my $currentRevision = -1;
    456     my $latestRevision = 9;
     505    my $latestRevision = 10;
    457506
    458507    while ($currentRevision != $latestRevision) {
     
    470519        elsif ($currentRevision == 7) {$self->createRevision_8();}
    471520        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#######################################################################################
     530sub setRevision {
     531    my ($self, $revision) = @_;
     532
     533    my $query = $self->{_db}->prepare(<<SQL);
     534    INSERT INTO revision (revision) VALUES ($revision);
     535SQL
     536    $query->execute;
     537}
     538
     539#######################################################################################
     540#
     541# Gets current revision of ippToPsps database
     542#
     543#######################################################################################
     544sub 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;
     553SQL
     554
     555    $query->execute;
     556    my @row = $query->fetchrow_array();
     557
     558    return $row[0];
    473559}
    474560
     
    739825#######################################################################################
    740826#
    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#######################################################################################
     830sub 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;
     839SQL
     840
     841    $query->execute;
     842
     843    $self->setRevision(10);
    773844}
    774845
  • trunk/tools/czartool/Czarplot.pm

    r28846 r28862  
    347347    my ($self) = @_;
    348348
    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
     355my $totalPercent = sprintf("%.1f%%", $totalUsed);
    352356
    353357    open (GP, "|/usr/bin/gnuplot -persist") or die "no gnuplot";
     
    358362        "set term $self->{_outputFormat};" .
    359363        "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)\";" .
    361365        "set style fill solid 1.00 border -1;" .
    362366        "set style histogram rowstacked;" .
     
    364368        "set ylabel \"Space (TB)\";" .
    365369        "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        ";" .
    367377
    368378        "\n";
  • trunk/tools/czartool/Nebulous.pm

    r28845 r28862  
    9393    $self->{_totalHosts} = 0;
    9494    $self->{_hostsOverNinetyEightPC} = 0;
     95    my $readable;
     96    my $writable;
    9597    foreach $line (@cmdOut) {
    9698
     
    113115            if ($4 >= 98) {$self->{_hostsOverNinetyEightPC}++;}
    114116
    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);
    117124        }
    118125    }
     
    123130            $self->{_totalUsed},
    124131            $self->{_hostsOverNinetyEightPC});
     132}
    125133
     134###########################################################################
     135#
     136# Runs neb-host and readable/writable status for this host
     137#
     138###########################################################################
     139sub 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    }
    126160}
    1271611;
  • trunk/tools/roboczar.pl

    r28845 r28862  
    106106        print "* Checking Nebulous\n";
    107107        $nebulous->updateClusterSpaceInfo();
    108 
     108        $czarplot->plotDiskUsageHistogram();
    109109        updateServerStatus();
    110110        updateLabels();
Note: See TracChangeset for help on using the changeset viewer.