Aktualności:

Nasza strona na Facebooku - poleć znajomym.

Menu główne

RRDTool i statystyki BOINC

Zaczęty przez Szopler, 05 Kwiecień 2010, 22:06

Szopler

What's wrong?


#!/usr/bin/perl
#
# copyright Michał Szoplik 2010

use lib qw(/usr/local/rrdtool-1.4.3/lib/perl);
use RRDs;

# define location of rrdtool databases
my $rrd = '/var/raclive';
# define location of images
my $img = '/var/raclive';

open (plik, "/var/raclive/stats.xml") || die("Nie moge otworzyc pliku stats.xml");
@zawartosc=(<plik>);
close (plik);

foreach $linia (@zawartosc)
{
  if ($linia =~ /<project_name>/)
  {
  $nazwa_projektu = substr($linia, index($linia, '<project_name>')+14, index($linia, '</project_name>')-14);
  }
 
  if ($linia =~ /<user_total_credit/)
  {
  $credit = substr($linia, index($linia, '<user_total_credit>')+19, index($linia, '</user_total_credit>')-19);
  $lol = $credit;
  }
}

  if (!-e "$rrd/raclive_$nazwa_projektu.rrd")
  {
  RRDs::create ("$rrd/raclive_$nazwa_projektu.rrd",
               "-s 120",
               "DS:dane:COUNTER:360:U:U",
               "RRA:AVERAGE:0.5:1:240"
               );
  }

  RRDs::update ("$rrd/raclive_$nazwa_projektu.rrd",
                "-t", "dane",
                "N:$lol"
                );

  RRDs::graph ("$img/kredyt_$nazwa_projektu.png",
               "--color=BACK#FFFFFF",
               "-s -1200",
               "-w 400",
               "-h 300",
               "--slope-mode",
               "--watermark=©2010 by Szopler",
               "--title=Punkty w projekcie: $nazwa_projektu",
               "DEF:xyvz=$rrd/raclive_$nazwa_projektu.rrd:dane:AVERAGE",
               "LINE3:xyvz#FF0000:Punkty",
               );
               
#print $nazwa_projektu," - ",$credit,"\n";

mindc

widziałem w innym wątku, że sobie poradziłeś  ;D


Szopler

No nie do końca... pokazuje mi total credit, a chcę zrobić jak u Ciebie pkt/h. Tylko, że coś mi RRDTool'owy COUNTER nie chce działać i LAST... albo nie rozumiem tego ;) Ty to liczysz na piechotę i wrzucasz do rrd czy wykorzystujesz powyższe i samo liczy?

Pigu

@mindc

nie masz może ochoty zrobić skrypta który budowałby statystyki top w projekcie dla serwera statów b@P?  %)

Szopler

#4
Pobranie wszystkich danych dla 1 usera można załatwić z wykorzystaniem zewnętrznego serwisu np. tak - http://boinc.netsoft-online.com/get_user.php?cpid=###
Najprostsze pobranie tego do pliku:


#!/usr/bin/perl -w

use strict;
use warnings;
use LWP;

my $browser = LWP::UserAgent->new;
my $url = 'http://boinc.netsoft-online.com/get_user.php?cpid=476d777382a3555be83f6af9ab59c9f9';
my $response = $browser->get($url);

die "$url error: ", $response->status_line unless $response->is_success;

open my $fh,'>',"./dane.xml";
print $fh $response->content;
close $fh;


Sporo ciekawych rzeczy jest tutaj - http://boinc.berkeley.edu/trac/wiki/WebRpc

mindc

#5
Cytat: 5z0pl3r w 08 Kwiecień 2010, 11:49
No nie do końca... pokazuje mi total credit, a chcę zrobić jak u Ciebie pkt/h. Tylko, że coś mi RRDTool'owy COUNTER nie chce działać i LAST... albo nie rozumiem tego ;) Ty to liczysz na piechotę i wrzucasz do rrd czy wykorzystujesz powyższe i samo liczy?

bazę mam zrobioną tak (dla każdego projektu osobno):

"--step=3600",
"DS:total:GAUGE:86400:0:U",
"DS:expavg:GAUGE:86400:0:U",
"DS:avgrac:COUNTER:86400:0:U",
"RRA:LAST:0.5:1:20000",


total i expavg - to co zwraca nam scheduler projektu
avgrac - tu wrzucam też total - te dane wykorzystuję do generowania wykresów pts/h
uwaga: COUNTER wymaga wartości całkowitych

EDIT:
no i żeby te pts/h miało ręce i nogi, to wyciągam dane bezpośrednio z schedulerów projektów, bo dane/statystyki ogólnie dostępne, przeważnie są aktualizowane raz na dobę....


Szopler

Dzięki za wskazówkę. Pobawię się tym wkrótce :).