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
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.