Build Status Coverage Status

NAME

InfluxDB - Client library for InfluxDB

CAUTION

    The JSON write protocol is deprecated as of InfluxDB 0.9.1. It is
    still present but it will be removed when InfluxDB 1.0 is
    released. The line protocol is the primary write protocol for
    InfluxDB 0.9.1+.

This InfluxDB module can handle only JSON protocol.

If you want to use line protocol, please use InfluxDB::LineProtocol module.

SYNOPSIS

    use InfluxDB;
    
    my $ix = InfluxDB->new(
        host     => '127.0.0.1',
        port     => 8086,
        username => 'scott',
        password => 'tiger',
        database => 'test',
        # ssl => 1, # enable SSL/TLS access
        # timeout => 5, # set timeout to 5 seconds
    );
    
    $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
ssl => Bool (optional)
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, ...],
            ...
        ],
    }

The time and any other data fields which should be graphable must be numbers, not text. See "simple scalars" in JSON.

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.