The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

App::MonM::Checkit - App::MonM checkit class

VIRSION

Version 1.03

SYNOPSIS

    use App::MonM::Checkit;

DESCRIPTION

App::MonM checkit class

new

    my $checker = App::MonM::Checkit->new;

Returns checker object

check

    my $ostat = $checker->check({ ... });

Performs checking of checkit-sources by checkit rules (checkit config sections)

Returns status: 0 - PASS; 1 - FAIL

cleanup

    my $self = $checker->cleanup;

Flushes all working variables to defaults

code

    my $code = $checker->code;
    my $newcode = $checker->code(200);

Sets and returns response code (rc)

config

    my $conf = $checker->config;

Returns Checkit config structure

content

    my $content = $checker->content;
    my $newcontent = $checker->content("Foo Bar Baz");

Sets and returns the content value

error

    my $error = $checker->error;
    my $newerror = $checker->error("Blah-Blah-Blah");

Sets and returns the error value

message

    my $message = $checker->message;
    my $newmessage = $checker->message("Foo Bar Baz");

Sets and returns the message value

note

    my $note = $checker->note;
    $checker->note("Blah-Blah-Blah");

Sets and returns the note value

source

    my $source = $checker->source;
    my $newsource = $checker->source("http://foo.example.com");

Sets and returns the source value

status

    my $status = $checker->status;
    my $newstatus = $checker->status(1);

Sets and returns the status value

type

    my $type = $checker->type;
    my $newtype = $checker->type(1);

Sets and returns the type value

CONFIGURATION DIRECTIVES

General configuration options (directives) detailed describes in "GENERAL DIRECTIVES" in App::MonM

The checkit configuration directives are specified in named sections <checkit NAME> where NAME is the name of the checkit section. The NAME is REQUIRED attribute. For example:

    <Checkit "foo">
        Enable      yes
        URL         https://www.example.com
        Target      code
        IsTrue      200
    </Checkit>

Each the checkit section can contain the following basic directives:

Enable
    Enable  yes

The main switcher of the checkit section

Default: no

Interval
    Interval 20s

Defines the time interval between two checks

Format for time can be in any of the following forms:

    20   -- in 20 seconds
    180s -- in 180 seconds
    2m   -- in 2 minutes
    12h  -- in 12 hours
    1d   -- in 1 day
    3M   -- in 3 months
    2y   -- in 2 years
    3m   -- 3 minutes ago(!)

Default: 0

IsFalse
    IsFalse  Error.

The definition of "What is bad?"

Default: !!perl/regexp (?i-xsm:^\s*(0|error|fail|no|false))

Examples:

    IsFalse   !!perl/regexp (?i-xsm:^\s*(0|error|fail|no|false))
    IsFalse   0
    IsFalse   Error.
IsTrue
    IsTrue  Ok.

The definition of "What is good?"

Default: !!perl/regexp (?i-xsm:^\s*(1|ok|pass|yes|true))

Examples:

    IsTrue    !!perl/regexp (?i-xsm:^\s*(1|ok|pass|yes|true))
    IsTrue    1
    IsTrue    Ok.
OrderBy
    OrderBy True,False

Controls the order in which True and False are evaluated. The OrderBy directive, along with the IsTrue and IsFalse directives, controls a two-pass resolve system. The first pass processes IsTrue or IsFalse directive, as specified by the OrderBy directive. The second pass parses the rest of the directive (IsFalse or IsTrue).

Ordering is one of:

    OrderBy True,False

First, IsTrue directive is evaluated. Next, IsFalse directive is evaluated. If matches IsTrue, the check's result sets to true (PASSED), otherwise result sets to false (FAILED)

    OrderBy False,True

First, IsFalse directive is evaluated. Next, IsTrue directive is evaluated. If matches IsFalse, the check's result sets to false (FAILED), otherwise result sets to true (PASSED)

Default: "True,False"

Examples:

    OrderBy   True,False
    OrderBy   ASC # Is same as: "True,False"
    OrderBy   False,True
    OrderBy   DESC # Is same as: "False,True"
SendTo
    SendTo  Alice

Defines a List of Recipients for notifications. There can be several such directives

Email addresses for sending notifications directly (See Channel SendMail):

    SendTo  foo@example.com
    SendTo  bar@example.com

...or SMS phone numbers (See Channel SMSGW):

    SendTo 11231230002
    SendTo +11231230001
    SendTo +1-123-123-0003

...or a notify users:

    SendTo Bob, Alice
    SendTo Fred

...or a notify groups:

    SendTo @Foo, @Bar
    SendTo @Baz
Target
    Target    content

Defines a target for analysis of results

    status  - the status of the check operation is analyzed
    code    - the return code is analyzed (HTTP code, error code and etc.)
    content - the content is analyzed (data from HTTP response, data
              from command's STDOUT or data from DB)
    message - the message is analyzed (HTTP message, eg.)

Default: status

Trigger
    Trigger "curl http://cam.com/[NAME]/[ID]?[MSISDN] >/tmp/photo.jpg"

Defines triggers (system commands) that runs before sending notifications There can be several such directives Each trigger can contents the variables for auto replacement, for example:

    Trigger  "mycommand1 "[MESSAGE]""

Replacement variables:

    [ID]        -- Internal ID of the message
    [MESSAGE], [MSG] -- The checker message content
    [MSISDN]    -- Phone number, recipient
    [NAME]      -- Checkit section name
    [NOTE]      -- The checker notes
    [RESULT]    -- The check result: PASSED/FAILED
    [SOURCE], [SRC]  -- Source string (URL, Command, etc.)
    [STATUS]    -- The checker status: OK/ERROR
    [SUBJECT], [SBJ] -- Subject of message (MIME)
    [TYPE]      -- Type of checkit: http/dbi/command
Type
    Type      https

Defines checking type. As of today, three types are supported: http(s), command and dbi(db)

Default: http

Examples:

    Type      http
    Type      dbi
    Type      command

The HTTP checkit directives are describes in "CONFIGURATION DIRECTIVES" in App::MonM::Checkit::HTTP, the "Command" checkit directives are describes in "CONFIGURATION DIRECTIVES" in App::MonM::Checkit::Command, the DBI checkit directives are describes in "CONFIGURATION DIRECTIVES" in App::MonM::Checkit::DBI

HISTORY

See Changes file

TO DO

See TODO file

BUGS

* none noted

SEE ALSO

App::MonM

AUTHOR

Serż Minus (Sergey Lepenkov) https://www.serzik.com <abalama@cpan.org>

COPYRIGHT

Copyright (C) 1998-2022 D&D Corporation. All Rights Reserved

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See LICENSE file and https://dev.perl.org/licenses/