Chronograf
Jump to navigation
Jump to search
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/
- Ajoutant des entrées à la série cluster depuis le shell d’influx
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'
- Ajouter un graphique avec la requête SELECT * FROM cluster WHERE host='serverA'
- Ajouter un graphique avec la requête SELECT cpu FROM cluster WHERE host='serverA'
- Ajouter un graphique avec la requête SELECT cpu FROM cluster WHERE host='serverB'
- Ajouter un dashboard
- Ajouter les graphiques existants au dashboard
- Tester l’affichage dynamique des graphiques en 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
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