NAME
Sys::Statistics::Linux::Compilation - Statistics compilation.
SYNOPSIS
use Sys::Statistics::Linux;
my $lxs = Sys::Statistics::Linux->new( loadavg => 1 );
my $stat = $lxs->get;
foreach my $key ($stat->loadavg) {
print $key, " ", $stat->loadavg($key), "\n";
}
# or
use Sys::Statistics::Linux::LoadAVG;
use Sys::Statistics::Linux::Compilation;
my $lxs = Sys::Statistics::Linux::LoadAVG->new();
my $load = $lxs->get;
my $stat = Sys::Statistics::Linux::Compilation->new({ loadavg => $load });
foreach my $key ($stat->loadavg) {
print $key, " ", $stat->loadavg($key), "\n";
}
# or
foreach my $key ($stat->loadavg) {
print $key, " ", $stat->loadavg->{$key}, "\n";
}
DESCRIPTION
This module provides different methods to access and filter the statistics compilation.
METHODS
new()
Create a new Compilation
object. This creator is only useful if you don't call get()
of Sys::Statistics::Linux
. You can create a new object with:
my $lxs = Sys::Statistics::Linux::LoadAVG->new();
my $load = $lxs->get;
my $stat = Sys::Statistics::Linux::Compilation->new({ loadavg => $load });
Statistic methods
- sysinfo()
- cpustats()
- procstats()
- memstats()
- pgswstats()
- netstats()
- sockstats()
- diskstats()
- diskusage()
- loadavg()
- filestats()
- processes()
All methods returns the statistics as a hash reference in scalar context. In list all methods returns the first level keys of the statistics. Example:
my $net = $stat->netstats; # netstats as a hash reference
my @dev = $stat->netstats; # the devices eth0, eth1, ...
my $eth0 = $stat->netstats('eth0'); # eth0 statistics as a hash reference
my @keys = $stat->netstats('eth0'); # the statistic keys
my @vals = $stat->netstats('eth0', @keys); # the values for @keys
I was thinking about to return all keys sorted but if you need that you can call
my @dev = sort $stat->netstats;
my @keys = sort $stat->netstats('eth0');
LoadAVG example:
my $load = $stat->loadavg; # loadavg as a hash reference
my @keys = $stat->loadavg; # the statistic keys
my @vals = $stat->loadavg(@keys); # the values for @keys
search(), psfind()
Both methods provides a simple scan engine to find special statistics. Both methods except a filter as a hash reference as the first argument. If your data comes from extern - maybe from a client that send his statistics to the server - you can set the statistics as the second argument. The second argument have to be a hash reference as well.
The method search()
scans for statistics and rebuilds the hash tree until that keys that matched your filter and returns the hits as a hash reference.
my $hits = $stat->search({
processes => {
cmd => qr/\[su\]/,
owner => qr/root/
},
cpustats => {
idle => 'lt:10',
iowait => 'gt:10'
},
diskusage => {
'/dev/sda1' => {
usageper => 'gt:80'
}
}
});
This would return the following matches:
* processes with the command "[su]"
* processes with the owner "root"
* all cpu where "idle" is less than 50
* all cpu where "iowait" is grather than 10
* only disk '/dev/sda1' if "usageper" is grather than 80
If the statistics are not gathered by the current process then you can handoff statistics as an argument.
my %stats = (
cpustats => {
cpu => {
system => '51.00',
total => '51.00',
idle => '49.00',
nice => '0.00',
user => '0.00',
iowait => '0.00'
}
}
);
my $stat = Sys::Statistics::Linux::Compilation(\%stats);
my %filter = (
cpustats => {
total => 'gt:50'
}
);
my $hits = $stat->search(\%filter);
The method psfind()
scans for processes only and returns a array reference with all process IDs that matched the filter. Example:
my $pids = $stat->psfind({ cmd => qr/init/, owner => 'eq:apache' });
You can handoff the statistics as second argument as well.
my $pids = $stat->psfind(\%filter, \%stats);
This would return the following process ids:
* processes that matched the command "init"
* processes with the owner "apache"
There are different match operators available:
gt - grather than
lt - less than
eq - is equal
ne - is not equal
Notation examples:
gt:50
lt:50
eq:50
ne:50
Both argumnents have to be set as a hash reference.
Note: the operators < > = ! are not available any more. It's possible that in further releases could be different changes for search()
and psfind()
. So please take a look to the documentation if you use it.
EXPORTS
No exports.
TODOS
* Are there any wishs from your side? Send me a mail!
REPORTING BUGS
Please report all bugs to <jschulz.cpan(at)bloonix.de>.
AUTHOR
Jonny Schulz <jschulz.cpan(at)bloonix.de>.
COPYRIGHT
Copyright (c) 2006, 2007 by Jonny Schulz. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.