The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Build Status Coverage Status

NAME

InfluxDB - Client library for InfluxDB

SYNOPSIS

    use InfluxDB;
    
    my $ix = InfluxDB->new(
        host     => '127.0.0.1',
        port     => 8086,
        username => 'scott',
        password => 'tiger',
        database => 'test',
    );
    
    $ix->write_points(
        data => {
            name    => "cpu",
            columns => [qw(sys user idle)],
            points  => [
                [20, 50, 30],
                [30, 60, 10],
            ],
        },
    ) or die "write_points: " . $ix->errstr;
    
    my $rs = $ix->query(
        q => 'select * from cpu',
        time_precision => 's',
    ) or die "query: " . $ix->errstr;
    
    # $rs is ArrayRef[HashRef]:
    # [
    #   {
    #     columns => ["time","sequence_number","idle","sys","user"],
    #     name => "cpu",
    #     points => [
    #       ["1391743908",6500001,10,30,60],
    #       ["1391743908",6490001,30,20,50],
    #     ],
    #   },
    # ]
    
    my $hrs = $ix->as_hash($rs); # or InfluxDB->as_hash($rs);
    # convert into HashRef for convenience
    # {
    #   cpu => [
    #     {
    #       idle   => 10,
    #       seqnum => 6500001,
    #       sys    => 30,
    #       time   => "1391743908",
    #       user   => 60
    #     },
    #     {
    #       idle   => 30,
    #       seqnum => 6490001,
    #       sys    => 20,
    #       time   => "1391743908",
    #       user   => 50
    #     }
    #   ]
    # }

DESCRIPTION

This module `InfluxDB` is a client library for InfluxDB <http://influxdb.org>.

METHODS

Class Methods

new(%args:Hash) :InfluxDB

Creates and returns a new InfluxDB client instance. Dies on errors.

%args is following:

host => Str
port => Int (default: 8086)
username => Str
password => Str
database => Str
timeout => Int (default: 120)
debug => Bool (optional)

Instance Methods

write_points(%args:Hash) :Bool

Write to multiple time series names.

data => ArrayRef[HashRef] | HashRef

HashRef like following:

    {
        name    => "name_of_series",
        columns => ["col1", "col2", ...],
        points  => [
            [10.0, 20.0, ...],
            [10.9, 21.3, ...],
            ...
        ],
    }
time_precision => "s" | "m" | "u" (optional)

The precision timestamps should come back in. Valid options are s for seconds, m for milliseconds, and u for microseconds.

delete_points(name => Str) :Bool

Delete ALL DATA from series specified by name

query(%args:Hash) :ArrayRef

q => Str

The InfluxDB query language, see: http://influxdb.org/docs/query_language/

time_precision => "s" | "m" | "u" (optional)

The precision timestamps should come back in. Valid options are s for seconds, m for milliseconds, and u for microseconds.

chunked => Bool (default: 0)

Chunked response.

as_hash($result:ArrayRef[HashRef]) :HashRef

Utility instance/class method for handling result of query.

Takes result of query()(ArrayRef) and convert into following HashRef.

    {
      cpu => [
        {
          idle => 10,
          seqnum => 6500001,
          sys => 30,
          time => "1391743908",
          user => 60
        },
        {
          idle => 30,
          seqnum => 6490001,
          sys => 20,
          time => "1391743908",
          user => 50
        }
      ]
    }

create_continuous_query(q => Str, name => Str) :ArrayRef

Create continuous query.

    $ix->create_continuous_query(
        q    => "select mean(sys) as sys, mean(usr) as usr from cpu group by time(15m)",
        name => "cpu.15m",
    );

list_continuous_queries() :ArrayRef

List continuous queries.

drop_continuous_query(id => Str) :ArrayRef

Delete continuous query that has specified id.

You can get id of continuous query by list_continuous_queries().

switch_database(database => Str) :Bool

Switch to another database.

switch_user(username => Str, password => Str) :Bool

Change your user-context.

create_database(database => Str) :Bool

Create database. Requires cluster-admin privileges.

list_database() :ArrayRef[HashRef]

List database. Requires cluster-admin privileges.

    [
      {
        name => "databasename",
        replicationFactor => 1
      },
      ...
    ]

delete_database(database => Str) :Bool

Delete database. Requires cluster-admin privileges.

list_series() :ArrayRef[HashRef]

List series in current database

create_database_user(name => Str, password => Str) :Bool

Create a database user on current database.

delete_database_user(name => Str) :Bool

Delete a database user on current database.

update_database_user(name => Str [,password => Str] [,admin => Bool]) :Bool

Update a database user on current database.

list_database_users() :ArrayRef

List all database users on current database.

show_database_user(name => Str) :HashRef

Show a database user on current database.

create_cluster_admin(name => Str, password => Str) :Bool

Create a database user on current database.

delete_cluster_admin(name => Str) :Bool

Delete a database user on current database.

update_cluster_admin(name => Str, password => Str) :Bool

Update a database user on current database.

list_cluster_admins() :ArrayRef

List all database users on current database.

status() :HashRef

Returns status of previous request, as following hash:

code => Int

HTTP status code.

message => Str

HTTP status message.

status_line => Str

HTTP status line (code . " " . message).

content => Str

Response body.

errstr() :Str

Returns error message if previous query was failed.

host() :Str

Returns hostname of InfluxDB server.

port() :Str

Returns port number of InfluxDB server.

username() :Str

Returns current user name.

database() :Str

Returns current database name.

ENVIRONMENT VARIABLES

IX_DEBUG

Print debug messages to STDERR.

AUTHOR

HIROSE Masaaki <hirose31@gmail.com>

REPOSITORY

https://github.com/hirose31/p5-InfluxDB

    git clone https://github.com/hirose31/p5-InfluxDB.git

patches and collaborators are welcome.

SEE ALSO

http://influxdb.org

COPYRIGHT

Copyright HIROSE Masaaki

LICENSE

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