Chronograf



Interface de visualisation de séries temporelles stockées dans une base de données InfluxDB. Permet de créer des dashboards à partir des graphiques définis.

https://influxdata.com/time-series-platform/chronograf/

=Installation=

Il faut préalablement installer InfluxDB.

wget https://s3.amazonaws.com/get.influxdb.org/chronograf/chronograf_0.10.0-rc2_amd64.deb sudo dpkg -i chronograf_0.10.0-rc2_amd64.deb

Si besoin, Configurer Chronograf en éditant le fichier /opt/etc/chronograf.toml

Démarrer Chronograf sudo service chronograf start ps wwwax | grep chronograf

Remarque: Chronograf stocke ses informations dans ~/chronograf.db

Utilisation
Naviguer sur https://localhost:10000/

CREATE DATABASE mycluster SHOW DATABASES USE mycluster SHOW SERVERS INSERT cluster,host=serverA,region=us_west cpu=0.64,mem=0.67,disk=0.20 INSERT cluster,host=serverB,region=us_west cpu=0.50,mem=0.99,disk=0.30 INSERT cluster,host=serverA,region=us_west cpu=0.64,mem=0.60,disk=0.20 INSERT cluster,host=serverB,region=us_west cpu=0.53,mem=0.97,disk=0.29 INSERT cluster,host=serverA,region=us_west cpu=0.64,mem=0.70,disk=0.21 INSERT cluster,host=serverB,region=us_west cpu=0.50,mem=0.80,disk=0.22 SELECT * FROM cluster SELECT * FROM cluster WHERE host='serverA'
 * 1) Ajoutant des entrées à la série cluster depuis le shell d’influx

INSERT cluster,host=serverA,region=us_west cpu=0.64,mem=0.30,disk=0.10 INSERT cluster,host=serverB,region=us_west cpu=0.50,mem=0.95,disk=0.50 INSERT cluster,host=serverA,region=us_west cpu=0.64,mem=0.60,disk=0.20 INSERT cluster,host=serverB,region=us_west cpu=0.53,mem=0.97,disk=0.19 INSERT cluster,host=serverA,region=us_west cpu=0.64,mem=0.60,disk=0.21 INSERT cluster,host=serverB,region=us_west cpu=0.40,mem=0.80,disk=0.4
 * 1) Ajouter un graphique avec la requête SELECT * FROM cluster WHERE host='serverA'
 * 2) Ajouter un graphique avec la requête SELECT cpu FROM cluster WHERE host='serverA'
 * 3) Ajouter un graphique avec la requête SELECT cpu FROM cluster WHERE host='serverB'
 * 4) Ajouter un dashboard
 * 5) Ajouter les graphiques existants au dashboard
 * 6) Tester l’affichage dynamique des graphiques en ajoutant des entrées à la série cluster depuis le shell d’influx

Utilisation en continu
Exécuter les 2 scripts Node.js suivants dans 2 terminaux.

npm install mqtt npm install influxdb

node mqtt2influxdb.js

node mqttpub.js

mqtt2influxdb.js // MQTT to InfluxDB bridge // (c) Didier DONSEZ, 2015-2016

// Tested with InfluxDB v0.9

var mqtt = require('mqtt') var influx = require('influx');

var mqtt_url = 'mqtt://test.mosquitto.org'; var topic = 'test/influxdb';

var dbhost = 'localhost'; var database = 'xnet'; var username = 'root'; var password = 'root';

var seriesName = 'cluster'; var tags = { "host":"serverA","region":"us_west"};

var dbInflux = influx( { // single-host configuration  host : dbhost,  port : 8086, // optional, default 8086  protocol : 'http', // optional, default 'http'  username : username,  password : password,  database : database })

client = mqtt.connect(mqtt_url);

client.on('connect', function {

console.log("Connected to " + mqtt_url);

client.subscribe(topic).on('message', function (topic, message) { 	var date=new Date;    console.log(date.toISOString+" <-- "+ message);    var values = JSON.parse(message);    values.time = date;	dbInflux.writePoint(seriesName, values, tags, function(err, response) { if(err) throw err; })  });

// TODO add other event handlers here

});

console.log("MQTT to InfluxDB bridge is started");

mqttpub.js var mqtt = require('mqtt')

var mqtt_url = 'mqtt://test.mosquitto.org'; var topic = 'test/influxdb'; var publishing_period = 1000; // in ms

client = mqtt.connect(mqtt_url);

//client.subscribe(topic);

var mem = Math.random; var disk = Math.random; var cpu;

function publish {

mem = mem+(Math.random/10)-0.05; if(mem<0) { mem=0 }; if(mem>1) { mem=1 };

disk = disk+(Math.random/20)-0.025; if(disk<0) { disk=0 }; if(disk>1) { disk=1 };

cpu = Math.random;

var message= { cpu: cpu, mem: mem, disk: disk, };

client.publish(topic, JSON.stringify(message)); console.log(new Date.toISOString+" --> "+ JSON.stringify(message)); setTimeout(publish, publishing_period); }

publish;

console.log("MQTT publishing is started");

=Utilisation avancée avec Telegraf= TODO

=Arret de Chronograf= sudo service chronograf stop