NAME

Splunk::HEC - A simple wrapper for the Splunk HTTP Event Collector (HEC) API

SYNOPSIS

use Splunk::HEC;

my $hec = Splunk::HEC->new(
  url => 'https://mysplunkserver.example.com:8088/services/collector/event',
  token => '12345678-1234-1234-1234-1234567890AB'
);

my $res = $hec->send(event => {message => 'Something happened', severity => 'INFO'});
if ($res->is_success)  { say $res->content }
elsif ($res->is_error) { say $res->reason }

DESCRIPTION

Splunk::HEC is a simple HTTP client wrapper for the Splunk HEC API;

ATTRIBUTES

Splunk::HEC implements the following attributes.

url

my $url = $hec->url;
$url   = $hec->url('https://mysplunkserver.example.com:8088/services/collector/event');

Full URL to Splunk HEC endpoint (required).

token

my $token = $hec->token;
$token   = $hec->token('12345678-1234-1234-1234-1234567890AB');

Splunk HEC authentication token (required)

timeout

my $timeout = $hec->timeout;
$timeout = $hec->timeout(300);

Timeout in seconds when talking to Splunk HEC. (optional, default 60s)

METHODS

Splunk::HEC implements the following methods.

new

my $hec = Splunk::HEC->new;
my $hec = Splunk::HEC->new(url => 'value', token => 'value');
my $hec = Splunk::HEC->new({name => 'value'});

This is the constructor used to create the Splunk::HEC object. You can pass it either a hash or a hash reference with attribute values.

send

# single event
$res = $hec->send(event => 'event1', time => $epoch, source => 'datasource', sourcetype => '', index => 'data-index');

# multiple events (array of hashrefs)
$res = $hec->send(
  {event => 'event1', time => $epoch, source => 'datasource', sourcetype => '', index => 'data-index'},
  {event => 'event2', time => $epoch, source => 'datasource', sourcetype => '', index => 'data-index'}
);

Send one or more events to HEC. If multiple events are provided at once, they are sent using HEC batch mode. Passed events are converted into Splunk::HEC::Request objects prior to being encoded and sent. Once HEC responds, it returns a Splunk::HEC::Response object.

See the attributes of Splunk::HEC::Request for supported event attributes and default settings.

client

my $hec = Splunk::HEC->new;
my $client = $hec->client;

Returns the HTTP client

ENVIRONMENT VARIABLES

Splunk::HEC provides configuration via the following environment variables.

SPLUNK_HEC_URL

Full URL to Splunk HEC endpoint (required).

SPLUNK_HEC_TOKEN

Splunk HEC authentication token (required)

SPLUNK_HEC_TIMEOUT

Timeout in seconds when talking to Splunk HEC. (optional, default 60s)

SEE ALSO

Splunk::HEC::Request, Splunk::HEC::Response, Splunk::HEC, HTTP::Tiny, JSON::XS