This client library communicates with the InfluxDB HTTP API (ver 1.7) and is very small. Still lacking a few debugging features but has the important things for managing, reading from and writing to databases.
Add the following dependency to your project.clj file:
[dk.emcken.influxdb-client "0.1.1"]
Specify how the client reaches the InfluxDB API using a hash-map:
{:url \"http://localhost:8086\"}
Or if you have authentication also provide the username and password:
{:url \"http://localhost:8086\"
:username \"root\"
:password \"secret\"}
The following code examples assumes you are in the user namespace and have
required the library and a connection representation (conn):
user > (require '[dk.emcken.influxdb-client :as client :refer [unwrap query write]])
nil
user > (def conn {:url "http://localhost:8086"})
#'user/conn
Now check if you can read from the database:
user > (unwrap (query conn ::client/read "SHOW DATABASES"))
[{"series" [{"values" [["_internal"]], "columns" ["name"], "name" "databases"}], "statement_id" 0}
Managing the database requires a slightly different "method"
(::client/manage). The following creates 2 new databases:
user > (unwrap (query conn ::client/manage "CREATE DATABASE mydb"))
[{"statement_id" 0}]
If you already have the data you want to write in the Line Protocol:
user> (:status (write conn "mydb" "mymeas,mytag=1 myfield=90"))
204
If not you can use the convert namespace to generate Line Protocol syntax from
a hash-map.
user> (require '[dk.emcken.influxdb-client.convert :as convert])
nil
The following hash-maps are all valid point representations:
;; minimal data required by the Line Protocol
{:measurement "cpu"
:fields {:value 0.64}}
;; now also including a few tags
{:measurement "cpu"
:tags {:host "serverA" :region "us_west"}
:fields {:value 0.64}}
;; now with multiple fields and different data types along with a timestamp
{:measurement "cpu"
:fields {:value 0.64 :verified true :count 4}
:time 1434067467000000000}
Use point->line to construct a sigle line following the Line Protocol format:
user> (convert/point->line {:measurement "cpu" :fields {:value 0.64}})
"cpu value=0.64"
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |