Opsview::StatusAPI - Module to help you query the Opsview Status API
use Opsview::StatusAPI; my $api = Opsview::StatusAPI->new( 'user' => 'opsview_user', 'password' => 'opsview_password', 'host' => 'opsview.example.com', 'secure' => 1 ); my $status = $api->hostgroup();
This module queries the Opsview Status API for you, returning data structures as appropiate.
Documetation of the Status API is here: http://docs.opsview.com/doku.php?id=opsview-community:api
Note: this module only queries the "status API", it doesn't understand about the API to create/delete objects
Note2: the data structures returned are only deserialized by this module. Different versions of Opsview may return different data structures.
Create the object. Only the host parameter is required. If not specified, the constructor will die.
Optionally you can pass secure => 1 to make the object access the status API via HTTPS
retrieve monitoring information for $hostname. Additionally apply a filter.
This is really a shortcut for:
$api->service({'host' => $hostname, ...filter... })
Set/Retrieve the user for the API.
Set/Retrieve the password for the API.
If called without parameters, will return info for all services. See FILTERS for information on how
The returned data structure will be something like this:
{ 'service' => { 'summary' => { 'handled' => 15, 'unhandled' => 0, 'service' => { 'ok' => 14, 'handled' => 14, 'unhandled' => 0, 'total' => 14 }, 'total' => 15, 'host' => { 'handled' => 1, 'unhandled' => 0, 'up' => 1, 'total' => 1 } }, 'list' => [ { 'icon' => 'debian', 'summary' => { 'handled' => 14, 'unhandled' => 0, 'total' => 14 }, 'unhandled' => '0', 'downtime' => 0, 'name' => 'servername.example.com', 'alias' => 'Description of the server', 'state' => 'up' 'services' => [ { 'max_check_attempts' => '3', 'state_duration' => 5893554, 'name' => '/', 'output' => 'DISK OK - free space: / 12207 MB (42% inode=-):', 'current_check_attempt' => '1', 'state' => 'ok', 'service_object_id' => '176', 'unhandled' => '0', 'downtime' => 0, 'last_check' => '2010-06-02 00:32:20', 'perfdata_available' => '1' }, ... one hashref for each service in the host ... ] }, ... one hashref for each host returned ... ] }
If called without parameters, it will return the information about the root hostgroup. If hostgroup_id is passed, it will return information about the hostgroup with that ID.
{ 'summary' => { 'handled' => 20, 'unhandled' => 2, 'service' => { 'ok' => 14, 'critical' => 2, 'handled' => 16, 'unhandled' => 2, 'warning' => 4, 'total' => 18 }, 'total' => 20, 'host' => { 'handled' => 2, 'unhandled' => 0, 'up' => 2, 'total' => 2 } }, 'list' => [ { 'hosts' => { 'handled' => 1, 'unhandled' => 0, 'up' => { 'handled' => 1 }, 'total' => 1 }, 'hostgroup_id' => '3', 'services' => { 'ok' => { 'handled' => 3 }, 'handled' => 3, 'highest' => 'warning', 'unhandled' => 1, 'warning' => { 'unhandled' => 1 }, 'total' => 4 }, 'downtime' => undef, 'name' => 'Hostgroup Name' }, ... ] }
A filter is a hashref that can contain the following keys with these values:
hostgroupid => id, # the id of a hostgroup host => 'host', # the name of a host state => 0, 1, 2, 3, 'ok, 'warning', 'critical', 'unknown' # 0 == 'ok', 3 == 'unknown' filter => 'handled' | 'unhandled' # filter by handled or unhandled services If you want all unhandled warnings, the filter would be { 'filter' => 'unhandled', 'state' => 'warning' } keys can also have multiple values: if you want only WARNINGS and CRITICALS { 'state' => [ 1, 2 ] }
Jose Luis Martinez CPAN ID: JLMARTIN CAPSiDE jlmartinez@capside.com http://www.pplusdomain.net
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
http://www.opsview.org/
http://docs.opsview.com/doku.php?id=opsview-community:api
To install Opsview::StatusAPI, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Opsview::StatusAPI
CPAN shell
perl -MCPAN -e shell install Opsview::StatusAPI
For more information on module installation, please visit the detailed CPAN module installation guide.