The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package App::MadEye::Plugin::Agent::SNMP::Process;
use strict;
use warnings;
use App::MadEye::Plugin::Agent::Base;
use App::MadEye::Util;
use List::Util qw/first/;

my $hrSWRunPath = '.1.3.6.1.2.1.25.4.2.1.4';

sub is_dead {
    my ($self, $host) = @_;

    my $process   = $self->config->{config}->{process}   or die "missing process";

    my $response = snmp_session(
        $self,
        $host => sub {
            my $session = shift;
            my $response = $session->get_table(
                -baseoid => $hrSWRunPath,
            ) or die "cannot get a $_ : " . $session->error;
            return $response;
        }
    );

    if (first { $_ eq $process } values %$response) {
        return; # alive
    } else {
        return "404 $process not found";
    }
}

1;
__END__

=head1 NAME

App::MadEye::Plugin::Agent::SNMP::Process - monitoring process

=head1 SCHEMA

    type: map
    mapping:
        target:
            type: seq
            required: yes
            sequence:
                - type: str
        community:
            required: yes
            type: str
        port:
            required: no
            type: int
        timeout:
            required: no
            type: int
        process:
            required: yes
            type: str

=head1 AUTHORS

Tokuhiro Matsuno

=head1 SEE ALSO

L<Net::SNMP>, L<App::MadEye>