NAME
Monit::HTTP - An OOP interface to Monit.
VERSION
version 0.06
SYNOPSIS
use Monit::HTTP;
# Use defaults to authenticate
my $monit = Monit::HTTP->new( use_auth => 1 );
# Or specify what you need (defaults displayed)
my $monit = Monit::HTTP->new(
hostname => '127.0.0.1',
port => '2812',
use_auth => 0,
username => 'admin',
password => 'monit',
);
# list processes
my @processes = $hd->get_services();
DESCRIPTION
This module exposes an interface to talk with Monit via its HTTP interface. You can use it to get the status of all the monitored services on that particular host such as CPU and Memory usage, current PID, parent PID, current running status, current monitoring status and so on. The module can be used also for performing actions like:
COMMON USE CASES
Start/Stop/Restart services
Send a PR with an example!
Monitor/Unmonitor services
use Monit::HTTP ':constants'; use Try::Tiny; # or your favourite my $hd = Monit::HTTP->new( use_auth => 1, ); try { my @processes = $hd->get_services(TYPE_PROCESS); $hd->command_run($processes[0], ACTION_STOP); my $service_status_href = $hd->service_status($processes[0]); } catch { print "caught error: $_" };
EXPORTED CONSTANTS
When brought in with:
use Monit::HTTP ':hashes';
This module will export these variables:
- %MONIT_ACTIONS
-
Contains the following keys with corresponding codes:
ACTION_MONITOR ACTION_RESTART ACTION_START ACTION_STOP ACTION_UNMONITOR
- %MONIT_ACTIONS_REV
-
As per %MONIT_ACTIONS but with keys and values reversed.
- %MONIT_STATUS
-
Contains possible service status's with corresponding codes.
Probably %MONIT_STATUS_REV is more useful to you.
- %MONIT_STATUS_REV
-
As per %MONIT_STATUS but with keys and values reversed.
Look up human readable status from its code using the status code.
- %MONIT_TYPES
-
Contains the following keys with corresponding codes.
TYPE_DIRECTORY TYPE_FIFO TYPE_FILE TYPE_FILESYSTEM TYPE_HOST TYPE_PROCESS TYPE_SYSTEM
Use this hash when requesting certain service types
- %MONIT_TYPES_REV
-
As per %MONIT_TYPES but with keys and values reversed.
Look up the status type from its code using this hash.
- %MONIT_MONITOR
-
Contains the monitoring status's with corresponding codes.
Probably %MONIT_MONITOR_REV is of more use to you.
- %MONIT_MONITOR_REV
-
As per %MONIT_MONITOR but with keys and values reversed.
Look up human readable monitoring status from its code using the status code.
When brought in with:
use Monit::HTTP ':constants';
This module exports a set of constants:
TYPE_FILESYSTEM
TYPE_DIRECTORY
TYPE_FILE
TYPE_PROCESS
TYPE_HOST
TYPE_SYSTEM
TYPE_FIFO
ACTION_STOP
ACTION_START
ACTION_RESTART
ACTION_MONITOR
ACTION_UNMONITOR
Use them as arguments for methods.
Note: the above are all from constant, so they are sub's.
METHODS
$monit = Monit::HTTP->new(...)
Constructor method, which creates a new Monit::HTTP
object.
This constructor can be called passing a list of various parameters:
my $monit = Monit::HTTP->new(
hostname => 'localhost',
port => 2812,
use_auth => 0,
username => 'admin',
password => 'monit'
);
FYI The values above are the default values in case no argument is passed to the constructor.
If use_auth is equal to 1 (true) and username and password are not null the http request will be performed using those usernames and password (basic HTTP authentication). Be aware that if you provide username and password and you don't set use_auth to be 1 authentication won't work.
$monit->set_hostname($hostname)
Set the hostname of the Monit instance
$monit->set_port($port)
Set the TCP port of the Monit instance
$monit->set_username($username)
Set the username to be used in thee basic http authentication
$monit->set_password($password)
Set the password to be used in thee basic http authentication
$res = $monit->_fetch_info()
Called by "get_services".
Does not need to be called by user. This is a private (internal) method This private function connects via http (GET) to the monit server.
URL requested is http://<hostname>:<port>/_status?format=xml
An XML file is returned and parsed using XML::Fast.
The raw XML data is stored in the object using the "_set_xml" method. The raw XML data can be retrieved using "_get_xml".
An hash reference of the XML data (as the one returned by the parse_xml function of XML::Fast) is stored in the object.
$res = $monit->get_services()
Return an array of services configured on the remote monit daemon.
In case of any exception an error is thrown and undef is returned.
$res = $monit->_set_xml($xml)
Private method to set raw XML data. Called from "_fetch_info"
$res = $monit->_get_xml($xml)
Private method to get raw XML data. Called from "_fetch_info"
$hashref_tree = $monit->service_status($servicename)
Returns the status for a particular service in form of hash with all the info for that service. Return undef is the service does not exists. To know the structure of the hash ref use Data::Dumper :D
$monit->command_run($servicename, $command)
Perform an action against a service. $command can be a constant (ACTION_STOP, ACTION_START, ACTION_RESTART, ACTION_MONITOR, ACTION_UNMONITOR)
This method throws errors in case something goes wrong. Use eval { } statement to catch the error.
AUTHORS
Angelo Failla <pallotron@gmail.com>
Dean Hamstead <dean@fragfest.com.au>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2022 by Dean Hamstead.
This is free software, licensed under:
The MIT (X11) License