Chronograf
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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