NAME
Opsview::StatusAPI - Module to help you query the Opsview Status API
SYNOPSIS
use
Opsview::StatusAPI;
my
$api
= Opsview::StatusAPI->new(
'user'
=>
'opsview_user'
,
'password'
=>
'opsview_password'
,
'host'
=>
'opsview.example.com'
,
'secure'
=> 1
);
my
$status
=
$api
->hostgroup();
DESCRIPTION
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.
CONSTRUCTOR
new(user => 'user', 'password' => 'pass', 'host' => 'host.name.com', secure => [0|1])
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
METHODS
host($hostname [, $filter])
retrieve monitoring information for $hostname. Additionally apply a filter.
This is really a shortcut for:
$api
->service({
'host'
=>
$hostname
, ...filter... })
user([$value])
Set/Retrieve the user for the API.
password([$value])
Set/Retrieve the password for the API.
service($filter)
service()
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 ...
]
}
hostgroup()
hostgroup($hostgroup_id)
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.
The returned data structure will be something like this:
{
'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'
},
...
]
}
FILTERS
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 ] }
AUTHOR
COPYRIGHT
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.
SEE ALSO
http://www.opsview.org/
http://docs.opsview.com/doku.php?id=opsview-community:api