diff options
author | Marius Halden <marius.h@lden.org> | 2015-02-11 21:36:19 +0100 |
---|---|---|
committer | Marius Halden <marius.h@lden.org> | 2015-02-11 21:36:19 +0100 |
commit | e750e9635f5ade0754a8cbac821570da2f80df93 (patch) | |
tree | 68ef81fb2f689510d2c5a6476a78fe61c47b8613 /stats.pl | |
parent | dba7f8c452ae3d0950e759c92c38fecdb18505f2 (diff) | |
download | appdrift-stats-e750e9635f5ade0754a8cbac821570da2f80df93.tar.gz appdrift-stats-e750e9635f5ade0754a8cbac821570da2f80df93.tar.bz2 appdrift-stats-e750e9635f5ade0754a8cbac821570da2f80df93.tar.xz |
So many changes I have no idea what the log should say :(
Diffstat (limited to 'stats.pl')
-rwxr-xr-x | stats.pl | 335 |
1 files changed, 163 insertions, 172 deletions
@@ -19,6 +19,7 @@ my @group_colors = qw( 000066 3366CC CC00CC 800000 CC0099 ); +# HTTP get from url through proxy sub proxy_get { my $remote = shift; @@ -30,6 +31,18 @@ sub proxy_get { return $response->content; } +# Check if string is in array +sub in_array { + my $str = shift; + my $arr = shift; + + for my $val (@{$arr}) { + return 1 if ($str eq $val); + } + + return 0; +} + my $groups = {}; my @content = split /^-+$/m, get($score_url); @@ -90,19 +103,36 @@ for my $group (sort keys %$groups) { } } - $groups->{$group}->{'users'} = defined($users) ? $users : 0; - $groups->{$group}->{'posts'} = defined($posts) ? $posts : 0; - $groups->{$group}->{'comments'} = defined($comments) ? $comments : 0; + $groups->{$group}->{'users'} = $users; #defined($users) ? $users : 0; + $groups->{$group}->{'posts'} = $posts; #defined($posts) ? $posts : 0; + $groups->{$group}->{'comments'} = $comments; #defined($comments) ? $comments : 0; } -my %rrd_groups = (); -my %positions = (); -my %balance = (); -my %www_users = (); -my %posts = (); -my %comments = (); +my $group_info = { +# rrd_groups => {}, +# position => {}, +# balance => {}, +# uptime => {}, +# downtime => {}, +# maintenance => {}, + +# users => {}, +# posts => {}, +# comments => {}, + }; + +my %g_rrd_info = ( + destination => "$rrd_path/graph", + periods => [ qw(day week month) ], + interlaced => "", + extended_legend => "true", + timestamp => "both", + ); for my $group (sort keys %$groups) { + my %rrd_info = %g_rrd_info; + $rrd_info{'destination'} = "$rrd_path/graph/$group"; + my $uptime_rrd = RRD::Simple->new( file => "$rrd_path/rrd/$group-uptime.rrd" ); my $users_rrd = RRD::Simple->new( file => "$rrd_path/rrd/$group-users.rrd" ); @@ -134,288 +164,249 @@ for my $group (sort keys %$groups) { comments => $groups->{$group}->{'comments'}, ); - unless ( -d "$rrd_path/graph/score/$group" ) { - mkdir "$rrd_path/graph/score/$group"; - } - - unless ( -d "$rrd_path/graph/users/$group" ) { - mkdir "$rrd_path/graph/users/$group"; + unless ( -d "$rrd_path/graph/$group" ) { + mkdir "$rrd_path/graph/$group"; } - my %times_rtn = $uptime_rrd->graph( - destination => "$rrd_path/graph/score/$group", + $uptime_rrd->graph( + %rrd_info, basename => "all-times", sources => [ qw(uptime maintenance downtime) ], source_colors => [ qw(00CC00 0000FF FF0000) ], - periods => [ qw(day week month) ], title => "Time stats group: $group", vertical_label => "Time/seconds", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); - my %uptime_rtn = $uptime_rrd->graph( - destination => "$rrd_path/graph/score/$group", + $uptime_rrd->graph( + %rrd_info, basename => "uptime", sources => [ qw(uptime) ], source_colors => [ qw(00CC00) ], - periods => [ qw(day week month) ], title => "Uptime stats group: $group", vertical_label => "Time/seconds", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); - my %mainttime_rtn = $uptime_rrd->graph( - destination => "$rrd_path/graph/score/$group", + $uptime_rrd->graph( + %rrd_info, basename => "maintenance", sources => [ qw(maintenance) ], source_colors => [ qw(0000FF) ], - periods => [ qw(day week month) ], title => "Uptime stats group: $group", vertical_label => "Time/seconds", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); - my %downtime_rtn = $uptime_rrd->graph( - destination => "$rrd_path/graph/score/$group", + $uptime_rrd->graph( + %rrd_info, basename => "downtime", sources => [ qw(downtime) ], source_colors => [ qw(FF0000) ], - periods => [ qw(day week month) ], title => "Uptime stats group: $group", vertical_label => "Time/seconds", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); - my %all_stats_rtn = $users_rrd->graph( - destination => "$rrd_path/graph/users/$group", - basename => "all", + $users_rrd->graph( + %rrd_info, + basename => "all-user-stats", sources => [ qw(users posts comments) ], source_colors => [ qw(00CC00 0000FF FF0000) ], - periods => [ qw(day week month) ], title => "Users/Posts/Comments for $group", vertical_label => "Count", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); - my %users_rtn = $users_rrd->graph( - destination => "$rrd_path/graph/users/$group", + $users_rrd->graph( + %rrd_info, basename => "users", sources => [ qw(users) ], source_colors => [ qw(00CC00) ], - periods => [ qw(day week month) ], title => "User count for $group", vertical_label => "Nr. of users", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); - my %posts_rtn = $users_rrd->graph( - destination => "$rrd_path/graph/users/$group", + $users_rrd->graph( + %rrd_info, basename => "posts", sources => [ qw(posts) ], source_colors => [ qw(0000FF) ], - periods => [ qw(day week month) ], title => "Post count for $group", vertical_label => "Nr. of posts", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); - my %comments_rtn = $users_rrd->graph( - destination => "$rrd_path/graph/users/$group", + $users_rrd->graph( + %rrd_info, basename => "comments", sources => [ qw(comments) ], source_colors => [ qw(FF0000) ], - periods => [ qw(day week month) ], title => "Comment count for $group", vertical_label => "Nr. of comments", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); - $rrd_groups{$group} = "GAUGE"; - $positions{$group} = $groups->{$group}->{'position'}; - $balance{$group} = $groups->{$group}->{'balance'}; - $www_users{$group} = $groups->{$group}->{'users'}; - $posts{$group} = $groups->{$group}->{'posts'}; - $comments{$group} = $groups->{$group}->{'comments'}; + $group_info->{'rrd_groups'}->{$group} = "GAUGE"; + $group_info->{'position'}->{$group} = $groups->{$group}->{'position'}; + $group_info->{'balance'}->{$group} = $groups->{$group}->{'balance'}; + $group_info->{'uptime'}->{$group} = $groups->{$group}->{'time_up'}; + $group_info->{'downtime'}->{$group} = $groups->{$group}->{'time_down'}; + $group_info->{'maintenance'}->{$group} = $groups->{$group}->{'time_maint'}; + $group_info->{'users'}->{$group} = $groups->{$group}->{'users'}; + $group_info->{'posts'}->{$group} = $groups->{$group}->{'posts'}; + $group_info->{'comments'}->{$group} = $groups->{$group}->{'comments'}; } +## Score related my $pos_rrd = "$rrd_path/rrd/positions.rrd"; my $bal_rrd = "$rrd_path/rrd/balance.rrd"; -my $usr_rrd = "$rrd_path/rrd/users.rrd"; -my $pst_rrd = "$rrd_path/rrd/posts.rrd"; -my $cmt_rrd = "$rrd_path/rrd/comments.rrd"; +my $upt_rrd = "$rrd_path/rrd/uptime.rrd"; +my $dwn_rrd = "$rrd_path/rrd/downtime.rrd"; +my $mnt_rrd = "$rrd_path/rrd/maintenance.rrd"; my $position_rrd = RRD::Simple->new( file => "$pos_rrd" ); my $balance_rrd = RRD::Simple->new( file => "$bal_rrd" ); -my $user_rrd = RRD::Simple->new( file => "$usr_rrd" ); -my $post_rrd = RRD::Simple->new( file => "$pst_rrd" ); -my $comment_rrd = RRD::Simple->new( file => "$cmt_rrd" ); +my $uptime_rrd = RRD::Simple->new( file => "$upt_rrd" ); +my $downtime_rrd = RRD::Simple->new( file => "$dwn_rrd" ); +my $maint_rrd = RRD::Simple->new( file => "$mnt_rrd" ); -$position_rrd->create( %rrd_groups ) unless ( -f "$pos_rrd" ); -$balance_rrd->create( %rrd_groups ) unless ( -f "$bal_rrd" ); -$user_rrd->create( %rrd_groups ) unless ( -f "$usr_rrd" ); -$post_rrd->create( %rrd_groups ) unless ( -f "$pst_rrd" ); -$comment_rrd->create( %rrd_groups ) unless ( -f "$cmt_rrd" ); +$position_rrd->create(%{$group_info->{'rrd_groups'}}) unless ( -f "$pos_rrd" ); +$balance_rrd->create(%{$group_info->{'rrd_groups'}}) unless ( -f "$bal_rrd" ); +$uptime_rrd->create(%{$group_info->{'rrd_groups'}}) unless ( -f "$upt_rrd" ); +$downtime_rrd->create(%{$group_info->{'rrd_groups'}}) unless ( -f "$dwn_rrd" ); +$maint_rrd->create(%{$group_info->{'rrd_groups'}}) unless ( -f "$mnt_rrd" ); my @pos_sources = $position_rrd->sources("$pos_rrd"); -pos_sources: for my $group (keys %positions) { - for my $source (@pos_sources) { - next pos_sources if ($source eq $group); - } - - $position_rrd->add_source("$pos_rrd", $group => $rrd_groups{$group}); -} - my @bal_sources = $balance_rrd->sources("$bal_rrd"); -bal_sources: for my $group (keys %balance) { - for my $source (@bal_sources) { - next bal_sources if ($source eq $group); - } +my @upt_sources = $uptime_rrd->sources("$upt_rrd"); +my @dwn_sources = $downtime_rrd->sources("$dwn_rrd"); +my @mnt_sources = $maint_rrd->sources("$mnt_rrd"); - $balance_rrd->add_source("$bal_rrd", $group => $rrd_groups{$group}); -} +## User related +my $usr_rrd = "$rrd_path/rrd/users.rrd"; +my $pst_rrd = "$rrd_path/rrd/posts.rrd"; +my $cmt_rrd = "$rrd_path/rrd/comments.rrd"; -my @usr_sources = $user_rrd->sources("$usr_rrd"); -usr_sources: for my $group (keys %www_users) { - for my $source (@usr_sources) { - next usr_sources if ($source eq $group); - } +my $user_rrd = RRD::Simple->new( file => "$usr_rrd" ); +my $post_rrd = RRD::Simple->new( file => "$pst_rrd" ); +my $comment_rrd = RRD::Simple->new( file => "$cmt_rrd" ); - $user_rrd->add_source("$usr_rrd", $group => $rrd_groups{$group}); -} +$user_rrd->create(%{$group_info->{'rrd_groups'}}) unless ( -f "$usr_rrd" ); +$post_rrd->create(%{$group_info->{'rrd_groups'}}) unless ( -f "$pst_rrd" ); +$comment_rrd->create(%{$group_info->{'rrd_groups'}}) unless ( -f "$cmt_rrd" ); +my @usr_sources = $user_rrd->sources("$usr_rrd"); my @pst_sources = $user_rrd->sources("$pst_rrd"); -pst_sources: for my $group (keys %posts) { - for my $source (@pst_sources) { - next pst_sources if ($source eq $group); - } - - $post_rrd->add_source("$pst_rrd", $group => $rrd_groups{$group}); -} - my @cmt_sources = $comment_rrd->sources("$cmt_rrd"); -cmt_sources: for my $group (keys %posts) { - for my $source (@cmt_sources) { - next cmt_sources if ($source eq $group); - } - $comment_rrd->add_source("$cmt_rrd", $group => $rrd_groups{$group}); +for my $group (keys %{$group_info->{'rrd_groups'}}) { + $position_rrd->add_source("$pos_rrd", $group => $group_info->{'rrd_groups'}->{$group}) unless (in_array($group, \@pos_sources)); + $balance_rrd->add_source("$bal_rrd", $group => $group_info->{'rrd_groups'}->{$group}) unless (in_array($group, \@bal_sources)); + $uptime_rrd->add_source("$upt_rrd", $group => $group_info->{'rrd_groups'}->{$group}) unless (in_array($group, \@upt_sources)); + $downtime_rrd->add_source("$dwn_rrd", $group => $group_info->{'rrd_groups'}->{$group}) unless (in_array($group, \@dwn_sources)); + $maint_rrd->add_source("$mnt_rrd", $group => $group_info->{'rrd_groups'}->{$group}) unless (in_array($group, \@mnt_sources)); + + $user_rrd->add_source("$usr_rrd", $group => $group_info->{'rrd_groups'}->{$group}) unless (in_array($group, \@usr_sources)); + $post_rrd->add_source("$pst_rrd", $group => $group_info->{'rrd_groups'}->{$group}) unless (in_array($group, \@pst_sources)); + $comment_rrd->add_source("$cmt_rrd", $group => $group_info->{'rrd_groups'}->{$group}) unless (in_array($group, \@cmt_sources)); } -$position_rrd->update( %positions ); -$balance_rrd->update( %balance ); -$user_rrd->update( %www_users ); -$post_rrd->update( %posts ); -$comment_rrd->update( %comments ); +$position_rrd->update(%{$group_info->{'position'}}); +$balance_rrd->update(%{$group_info->{'balance'}}); +$uptime_rrd->update(%{$group_info->{'uptime'}}); +$downtime_rrd->update(%{$group_info->{'downtime'}}); +$maint_rrd->update(%{$group_info->{'maintenance'}}); +$user_rrd->update(%{$group_info->{'users'}}); +$post_rrd->update(%{$group_info->{'posts'}}); +$comment_rrd->update(%{$group_info->{'comments'}}); my @group_names = sort(keys(%$groups)); $#group_colors = $#group_names; -my %position_rtn = $position_rrd->graph( - destination => "$rrd_path/graph/score", +$g_rrd_info{'sources'} = [ @group_names ]; +$g_rrd_info{'source_colors'} = [ @group_colors ]; + +$position_rrd->graph( + %g_rrd_info, basename => "positions", - periods => [ qw(day week month) ], - sources => [ @group_names ], - source_colors => [ @group_colors ], title => "Positions", vertical_label => "Position", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); -my %balance_rtn = $balance_rrd->graph( - destination => "$rrd_path/graph/score", +$balance_rrd->graph( + %g_rrd_info, basename => "balance", - periods => [ qw(day week month) ], - sources => [ @group_names ], - source_colors => [ @group_colors ], title => "Balances", vertical_label => "Balance", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); -my %users_rtn = $user_rrd->graph( - destination => "$rrd_path/graph/users", +$uptime_rrd->graph( + %g_rrd_info, + basename => "uptime", + title => "Uptime per group", + vertical_label => "Uptime/seconds", + ); + +$downtime_rrd->graph( + %g_rrd_info, + basename => "downtime", + title => "Downtime per group", + vertical_label => "Downtime/seconds", + ); + +$maint_rrd->graph( + %g_rrd_info, + basename => "maintenance", + title => "Maintenance per group", + vertical_label => "Maintenance/seconds", + ); + +$uptime_rrd->graph( + %g_rrd_info, + basename => "uptime", + title => "Uptime per group", + vertical_label => "Uptime/seconds", + ); + + +$user_rrd->graph( + %g_rrd_info, basename => "users", - periods => [ qw(day week month) ], - sources => [ @group_names ], - source_colors => [ @group_colors ], title => "Number of users per group", vertical_label => "Nr. of users", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); -my %posts_rtn = $post_rrd->graph( - destination => "$rrd_path/graph/users", +$post_rrd->graph( + %g_rrd_info, basename => "posts", - periods => [ qw(day week month) ], - sources => [ @group_names ], - source_colors => [ @group_colors ], title => "Number of posts per group", vertical_label => "Nr. of posts", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); -my %comments_rtn = $comment_rrd->graph( - destination => "$rrd_path/graph/users", +$comment_rrd->graph( + %g_rrd_info, basename => "comments", - periods => [ qw(day week month) ], - sources => [ @group_names ], - source_colors => [ @group_colors ], title => "Number of comments per group", vertical_label => "Nr. of comments", - interlaced => "", - extended_legend => "true", - timestamp => "both", ); +delete $g_rrd_info{'sources'}; +delete $g_rrd_info{'source_colors'}; + for my $group (@group_names) { - my %grp_bal = $balance_rrd->graph( - destination => "$rrd_path/graph/score/$group", + my %rrd_info = %g_rrd_info; + $rrd_info{'destination'} = "$rrd_path/graph/$group"; + + $balance_rrd->graph( + %rrd_info, basename => "balance", - periods => [ qw(day week month) ], sources => [ $group ], source_colors => [ qw(00CC00) ], title => "Balance for $group", vertical_label => "Balance", - interlaced => "", - extended_legend => "true", - timestamp => "bith", ); - my %grp_pos = $position_rrd->graph( - destination => "$rrd_path/graph/score/$group", + $position_rrd->graph( + %rrd_info, basename => "position", - periods => [ qw(day week month) ], sources => [ $group ], source_colors => [ qw(00CC00) ], title => "Position for $group", vertical_label => "Position", - interlaced => "", - extended_legend => "true", - timestamp => "both" ); } |