MYDan
view release on metacpan or search on metacpan
lib/MYDan/Collector/Stat.pm view on Meta::CPAN
package MYDan::Collector::Stat;
use strict;
use warnings;
use Carp;
use POSIX;
use Module::Runtime qw(use_module);
use MYDan;
use MYDan::Collector;
use MYDan::Collector::Stat::Time;
use MYDan::Collector::Stat::Sar;
use MYDan::Collector::Stat::DF;
use MYDan::Collector::Stat::Exec;
use MYDan::Collector::Stat::Proc;
use MYDan::Collector::Stat::Call;
use MYDan::Collector::Stat::Http;
use MYDan::Collector::Stat::Port;
use MYDan::Collector::Stat::User;
use MYDan::Collector::Stat::IFace;
use MYDan::Collector::Stat::Dmesg;
use MYDan::Collector::Stat::Uptime;
use MYDan::Collector::Stat::Watch;
use MYDan::Collector::Stat::Backup;
use MYDan::Collector::Stat::Coredump;
use MYDan::Collector::Stat::Output;
use MYDan::Collector::Stat::Ping;
use MYDan::Node;
use Data::Dumper;
our $REGEX = qr/\{ ([\w:_]+) \}\{ ([^}]+) \}\{ ([^}]+) \}/x;
our $REGEY = qr/\{ ([\w:_]+) \}\< ([^>]+) \>\{ ([^}]+) \}/x;
my ( $keep, $NAME, %eval ) = ( 9, 'TEST' );
my @statcol = ( 1 .. $keep, 'stat', 'group', 'warnning', 'info' );
my %FIXME =
(
PAGE => [ 'pgpgin/s', 'kbhugfree' ],
IO => [ 'tps' ],
LOAD => [ 'runq-sz', 'proc/s', 'cswch/s' ],
MEM => [ 'frmpg/s', 'kbmemfree' ],
SWAP => [ 'kbswpfree', 'pswpin/s' ],
NFS => [ 'call/s', 'scall/s' ],
SOCK => [ 'totsck' ],
IP => [ 'irec/s', 'ihdrerr/s' ],
ICMP => [ 'imsg/s', 'ierr/s' ],
TCP => [ 'active/s', 'atmptf/s' ],
UDP => [ 'idgm/s' ],
SOCK6 => [ 'tcp6sck' ],
IP6 => [ 'irec6/s', 'ihdrer6/s' ],
ICMP6 => [ 'imsg6/s', 'ierr6/s' ],
UDP6 => [ 'idgm6/s' ],
FILE => [ 'dentunusd' ],
);
my %EMXIF = map{ my $t = $_; map{ $_ => $t }@{$FIXME{$t}} } keys %FIXME;
my %BASE = map{ $_ => 1 }qw( IO SWAP DF MEM IFACE UPTIME CPU LOAD );
sub new
{
my ( $class, %self, %todo, $base ) = splice @_;
$ENV{LANG} = 'en_US.UTF-8';
if( my $test = $self{test} )
{
map{
map{ map{ $todo{$_} = 1 } $_ =~ /(\{[\w:_]+\}\{[^\}]+\}\{[^\}]+\})/g;} @$_;
map{ map{ $todo{$_} = 1 } $_ =~ /(\{[\w:_]+\}<[^>]+>\{[^\}]+\})/g;} @$_;
}values %$test;
map{ my $g = $_; map{ $eval{$_}{group} = $g }@{$test->{$g}}}keys %$test;
map{ $base = 1 if $BASE{$_} }map{ $_ =~ /^{([^}]+)}/ }keys %todo;
}
else { $base = 1; }
my ( @data, %data ) =
( [ [qw(VERSION MYDan)],
[ 'value', $MYDan::VERSION ]
]
);
if( $base )
{
push @data, MYDan::Collector::Stat::Uptime->co();
push @data, MYDan::Collector::Stat::IFace->co();
push @data, MYDan::Collector::Stat::Dmesg->co();
push @data, MYDan::Collector::Stat::Time->co();
push @data, MYDan::Collector::Stat::User->co();
push @data, MYDan::Collector::Stat::Sar->co();
push @data, MYDan::Collector::Stat::DF->co();
push @data, MYDan::Collector::Stat::Coredump->co();
}
my %test;
map{ my $t = $_; $test{$t} = [ grep{ /^{$t}/ }keys %todo ] }
qw( PROC EXEC CALL HTTP PORT BACKUP WATCH OUTPUT PING );
( run in 0.729 second using v1.01-cache-2.11-cpan-df04353d9ac )