InfluxDB: Difference between revisions

From air
Jump to navigation Jump to search
Line 107: Line 107:
where time > now() - 1d
where time > now() - 1d
</pre>
</pre>
<pre>
select star, sum(like) as number_of_likes from log_lines
group by star, time(1m)
where time > now() - 1d
</pre>

Remplissage des intervalles vides de points (avec fill())
<pre>
select count(like) from events
group by time(1h) fill(0)
where time > now() - 24h
<pre>



Fusion (merge) de séries
Fusion (merge) de séries
Line 125: Line 138:
inner join page_views_per_minute
inner join page_views_per_minute
</pre>
</pre>

Création d'un [http://influxdb.com/docs/v0.8/api/continuous_queries.html Requêtes continues]
<pre>
select count(star) from log_lines group by time(10m), star
into log_lines.count_per_star.10m
</pre>

<pre>
select * from log_lines.count_per_star.10m
</pre>

<pre>
drop continuous query <id>
</pre>






Revision as of 20:49, 30 October 2014

http://influxdb.com/

https://github.com/influxdb/influxdb

open-source distributed time series database with no external dependencies.

(metrics, events, and analytics)

developped in Go language

Voir https://speakerdeck.com/pauldix/introducing-influxdb-an-open-source-distributed-time-series-database

Demo sur http://play.influxdb.com/ (source code)

InfluxDB @ AIR

Installation

http://influxdb.com/download/

On OS X

brew update
brew install influxdb

Démarrage

influxdb -config=/usr/local/etc/influxdb.conf

Naviguez sur http://localhost:8083/ username : root & password : root

Pensez à changer ces valeurs quand vous mettez influxdb en production

Premiers Pas

Via l'interface Web

Depuis l'interface web, Créez une base : mydb

Depuis Database > Explore Data

Depuis write point, Ajoutez un point dans la série temporelle log_lines

{ "line":"here's some useful log info from paul@influx.com", "like":1, "star": 5 }

puis un autre

{ "line":"here's another useful log info from paul@influx.com", "like":2, "star": 4 }

puis un autre

{ "line":"here's some useful log info from didier@donsez.com", "like":1, "star": 5 }

Exécutez les requêtes suivantes depuis read point:


La liste des séries temporelles

list series
select * from /.*/ limit 1


Les points de la série log_lines

select line from log_lines
select like, star from log_lines


Les deux points les plus récents

select * from log_lines limit 2;

Les points de la série log_lines dont la colonne line contient paul@influx.com

select line from log_lines where line =~ /paul@influx.com/

Les points de la série log_lines dont la colonne like est supérieure à 1

select line from log_lines where like > 1

Les points de la série log_lines des 24 dernières heures

select * from log_lines
where time > now() - 24h


Agrégat temporel (les fonctions d'agrégat sont : count(), min(), max(), mean(), mode(), median(), distinct(), percentile(), histogram(), derivative(), sum(), stddev(), first(), last()).

select sum(like) as number_of_likes, mean(star) as mean_of_star from log_lines 
group by time(1m)
where time > now() - 1d
select star, sum(like) as number_of_likes from log_lines 
group by star, time(1m)
where time > now() - 1d

Remplissage des intervalles vides de points (avec fill())

select count(like) from events
group by time(1h) fill(0)
where time > now() - 24h
<pre>


Fusion (merge) de séries
<pre>
select count(type) from user_events merge admin_events group by time(10m)


Attention, cette requête n'est pas un produit cartésien (SQL)

select * from log_lines, log_cpu;

Jointure entre 2 séries

select errors_per_minute.value / page_views_per_minute.value as error_rate_per_minute.
from errors_per_minute
inner join page_views_per_minute

Création d'un Requêtes continues

select count(star) from log_lines group by time(10m), star 
into log_lines.count_per_star.10m
select * from log_lines.count_per_star.10m
drop continuous query <id>


Supprimez les points de toutes les séries temporelles dont la date est antérieure de 24 heures.

delete from /.*/ where time < now() - 24h
select * from /.*/ 

Suppression d'une série

drop series log_lines

Via l'interface REST

curl -G 'http://localhost:8086/db/mydb/series?u=root&p=root&pretty=true' --data-urlencode "q=select * from log_lines"

Avec Grafana

http://influxdb.com/docs/v0.7/ui/grafana.html

Téléchargez Grafana

Modifiez config.example.js avec

datasources: {
  'eu-metrics': {
    type: 'influxdb',
    url: 'http://localhost:8086/db/mydb',
    username: 'test',
    password: 'test',
  },
  'grafana': {
    type: 'influxdb',
    url: 'http://localhost:8086/db/grafana',
    username: 'test',
    password: 'test',
    grafanaDB: true
  },
},

et Sauvegardez dans config.js

Ouvrez index.html

Premières Requêtes

Node.js

Node-RED