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