NAME

Sensu::API::Client - API client for the Sensu monitoring framework

SYNOPSIS

use Try::Tiny;
use Sensu::API::Client;

my $api = Sensu::API::Client->new(url => 'http://user:pass@host:port');

# Retrieve current events
my $events = $api->events;
foreach my $e (@$events) {
    printf("%s, %s, %d\n", $e->{client}, $e->{check}, $e->{status});

    # Resolve them
    $api->resolve($e->{client}, $e->{check});
}

# Retrieve envents for a single client
my $client_events = $api->events('my-client');

# Get a list of clients
my $clients = $api->clients;
foreach my $c (@$clients) {
    printf("%s, %s\n", $c->{name}, $c->{address});
}

# Get a single client
my $client;
try {
    # Some methods throw an exception if the object is not found
    $client = $api->client('my-client');
} catch {
    if ($_ =~ /404/) {
        warn 'my-client not found';
    } else {
        warn "Something bad happened: $_";
    }
};

# Get check result history for a client
my $hist = $api->client_history('my-client');

# Delete it
try {
    $api->delete_client('my-client');
} catch {
    if ($_ =~ /404/) {
        warn 'my-client not found';
    } else {
        warn "Something bad happened: $_";
    }
};

DESCRIPTION

Set of modules to access the REST API provided by the Sensu monitoring framework. Currently supports the version 0.12 of the Sensu API.

All methods throw exceptions in case of errors. Not passing a required parameter is considered to be an error.

METHODS

new

Returns an instance of Sensu::API::Client.

Required Arguments

url

It is the URL where the API resides. It accepts user and password for basic authentication. Example: http://admin:secret@localhost:4567

events($client)

Returns an arrayref containing events. Each event is a hashref with the following keys: client, check, occurrences, output, status and flapping.

The client name is an optional arbument to filter the result by Sensu client.

event($client, $check)

Returns a single event.

Both arguments are required.

Throws an exception "404" if the event does not exist.

resolve($client, $check)

Resolves an event identified by client and check.

Both arguments are required.

Throws an exception "404" if the event does not exist.

info

Returns a hashref containing info about the API service.

Docs about the returned data: http://sensuapp.org/docs/0.12/api-info

stashes

Returns an arrayref containing all the stashes. Each stash is a hash containing the following keys: path (string), content (hashref), expire (integer).

stash($path)

Returns a single stash as a hashref.

Throws an exception "404" if the stash does not exist.

create_stash(%args)

Creates a stash.

Arguments

path

Required. String. The path identifying this stash.

content

Required. Hashref. Set of key values stored in the stash.

expire

Optional. Integer. Time in seconds before the stash expires and is deleted.

delete_stash($path)

Deletes a stash.

Argument required.

health(%args)

Returns a boolean. Checks the health of the API to see if it can connect to Redis and RabbitMQ.

Takes parameters for minimum consumers and maximum messages and checks RabbitMQ.

Arguments

consumers

Required. Integer. Minimum number of consumers to consider the service healthy.

messages

Required. Integer. Maximum number of messages in queue to consider the service healthy.

client($name)

Returns a single client as a hashref. Each one contains the following keys: name (string), address (string), subscriptions (arrayref), timestamp (integer).

Name is required.

Throws an exception "404" if the client is not found.

clients

Returns an arrayref with a list of clients.

delete_client($name)

Deletes a client, resolving all its events. It returns inmediately, but the actual deletion is delayed.

Name is required.

Throws an exception "404" if the client is not found.

client_history($name)

Returns an arrayref with the historic results for each check of a client. Each element in the list contains the following keys: check (string), last_status (integer), last_execution (integer), history (arrayref with status codes).

Name is required.

check($name)

Returns a check as a hashref containing: name (string), command (string), subscribers (arrayref), interval (integer).

Name is required

Throws an exception "404" if the check does not exist.

checks

Returns the list of checks.

request($name, @subscribers)

Issues a check request.

The name of the check, and an arrayref of subscribers are required.

SEE ALSO

AUTHOR

  • Miquel Ruiz <mruiz@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Miquel Ruiz.

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