InfluxDB: Difference between revisions

From air
Jump to navigation Jump to search
Line 101: Line 101:




Agrégat temporel (les fonctions d'agrégat sont : count(), min(), max(), mean(), mode(), median(), distinct(), percentile(), histogram(), derivative(), sum(), stddev(), first(), last()).
Agrégat temporel
<pre>
<pre>
select sum(like) as number_of_likes, mean(star) as mean_of_star from log_lines
select sum(like) as number_of_likes, mean(star) as mean_of_star from log_lines
group by time(1m)
group by time(1m)
where time > now() - 1d
where time > now() - 1d
</pre>

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


Line 113: Line 118:
select * from log_lines, log_cpu;
select * from log_lines, log_cpu;
</pre>
</pre>

Jointure entre 2 séries
<pre>
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
</pre>



Supprimez les points de toutes les séries temporelles dont la date est antérieure de 24 heures.
Supprimez les points de toutes les séries temporelles dont la date est antérieure de 24 heures.
<pre>
<pre>
delete from /.*/ where time < now() - 24h
delete from /.*/ where time < now() - 24h
select * from /.*/
</pre>

Suppression d'une série
<pre>
drop series log_lines
</pre>
</pre>



Revision as of 20:38, 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

Fusion (merge) de séries

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


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