OSLV-Monitor
view release on metacpan or search on metacpan
lib/OSLV/Monitor/Backends/cgroups.pm view on Meta::CPAN
}
} ## end if ($cache_is_new)
return $data;
} ## end sub run
=head2 usable
Dies if not usable.
eval{ $backend->usable; };
if ( $@ ){
print 'Not usable because... '.$@."\n";
}
=cut
sub usable {
my $self = $_[0];
# make sure it is freebsd
if ( $^O !~ 'linux' ) {
die '$^O is "' . $^O . '" and not "linux"';
}
return 1;
} ## end sub usable
sub cgroup_mapping {
my $self = $_[0];
my $cgroup_name = $_[1];
#my $cgroupns = $_[2];
if ( !defined($cgroup_name) ) {
return undef;
}
if ( $cgroup_name eq '0::/init.scope' ) {
return 'init';
}
if ( $cgroup_name =~ /^0\:\:\/system\.slice\/docker\-[a-zA-Z0-9]+\.scope/ ) {
$cgroup_name =~ s/^0\:\:\/system\.slice\/docker\-//;
$cgroup_name =~ s/\.scope.*$//;
return 'd_' . $cgroup_name;
} elsif ( $cgroup_name =~ /^0\:\:\/docker\// ) {
$cgroup_name =~ s/^0\:\:\/docker\///;
$cgroup_name =~ s/\/.*$//;
return 'd_' . $cgroup_name;
} elsif ( $cgroup_name =~ /^0\:\:\/system\.slice\// ) {
$cgroup_name =~ s/^.*\///;
$cgroup_name =~ s/\.service$//;
return 's_' . $cgroup_name;
} elsif ( $cgroup_name =~ /^0\:\:\/user\.slice\// ) {
$cgroup_name =~ s/^0\:\:\/user\.slice\///;
$cgroup_name =~ s/\.slice.*$//;
$cgroup_name =~ s/^user[\-\_]//;
if ( $cgroup_name =~ /^\d+$/ ) {
my ( $name, $passwd, $uid, $gid, $quota, $comment, $gecos, $dir, $shell, $expire ) = getpwuid($cgroup_name);
if ( defined($name) ) {
$self->{uid_mapping}{$cgroup_name} = {
name => $name,
gid => $gid,
home => $dir,
gecos => $gecos,
shell => $shell,
};
}
} ## end if ( $cgroup_name =~ /^\d+$/ )
return 'u_' . $cgroup_name;
} elsif ( $cgroup_name =~ /^0\:\:\/machine\.slice\/libpod\-conmon-/ ) {
return 'libpod-conmon';
} elsif ( $cgroup_name =~ /^0\:\:\/machine\.slice\/libpod\-/ ) {
$cgroup_name =~ s/^^0\:\:\/machine\.slice\/libpod\-//;
$cgroup_name =~ s/\.scope.*$//;
if ( defined( $self->{podman_mapping}{$cgroup_name} ) ) {
return 'p_' . $self->{podman_mapping}{$cgroup_name}{name};
}
return 'libpod';
}
$cgroup_name =~ s/^0\:\:\///;
$cgroup_name =~ s/\/.*//;
return $cgroup_name;
} ## end sub cgroup_mapping
sub ip_to_if {
my $self = $_[0];
my $ip = $_[1];
if ( !defined($ip) || ref($ip) ne '' ) {
return undef;
}
my $if = IO::Interface::Simple->new_from_address($ip);
if ( !defined($if) ) {
return undef;
}
return $if->name;
} ## end sub ip_to_if
sub cache_process {
my $self = $_[0];
my $name = $_[1];
my $var = $_[2];
my $new_value = $_[3];
if ( !defined($name) || !defined($var) || !defined($new_value) ) {
warn('name, var, or new_value is undef');
return 0;
}
# is a gauge and not a counter
if ( !defined( $self->{counters}{$var} ) ) {
return $new_value;
}
( run in 1.070 second using v1.01-cache-2.11-cpan-39bf76dae61 )