Avant de commencer la mise en place de Grafana, il est préférable d'avoir au préalable installé et configuré Icinga2 afin d'avoir des informations à récupérer afin de pouvoir tester son bon fonctionnement. Pour ceux qui ne l'auraient pas encore fait, vous pouvez retrouver la documentation d'installation ici.
Il faut savoir que cette documentation parlera de l'installation de Grafana en utilisant son code source. La méthode est plus compliquée qu'en téléchargeant les paquets sur Internet ou en modifiant les sources.list, mais elle est plus sécurisée et surtout, il est possible de tout mettre en place sans aucun droit root/sudo. Cela demandera pas mal de configuration et de temps, mais le résultat sera le même en fin de compte.
/!\ Toute l'installation sera réalisée en tant qu'utilisateur n'ayant aucun droit root/sudo. Dans le cas où une commande est réalisée en tant que root, notamment pour l'installation de certains paquets, ils seront stockés dans /usr/local et donc inutilisable pour tout utilisateur non root qui n'aura pas les permissions requises /!\
Afin de pouvoir mettre en place Grafana, 3 outils seront nécessaires tout le long :
Go v1.9.2 (ou supérieur) Git NodeJS LTS
Tout d'abord, il va falloir récupérer Grafana afin de pouvoir l'installer. Pour cela, on va créer un dossier dans lequel on stockera ce dernier. Il fois ceci fait, il faudra indiquer dans le GOPATH le chemin exact du dossier que vous venez de créer grâce à la commande :
export GOPATH='/chemin/du/dossier' go get github.com/grafana/grafana
Si tout se passe bien, un téléchargement permettant de récupérer Grafana devrait se lancer. Dans le cas contraire, vérifiez bien que Go et Git soient bien installés et de bien avoir indiquer le chemin dans le GOPATH. Il est possible qu'un message s'affiche, indiquant :
package github.com/grafana/grafana: no buildable Go source files
Il s'agit tout simplement d'un avertissement qui ne représente aucun problème pour tout le reste de l'installation.
On va maintenant mettre en place le backend afin que Grafana puisse fonctionner correctement. Pour cela, il va falloir accéder au dossier qui a été créé lors du téléchargement via github. Le chemin devrait être similaire à :
cd $GOPATH/src/github.com/grafana/grafana
Une fois dans ce dernier, il faudra exécuter les 2 commandes suivantes :
go run build.go setup go run build.go build
Le backend est important puisque c'est lui qui fera le travail en arrière plan (d'où son nom). C'est ce qui permettra notamment d'obtenir des résultats que l'on doit afficher dans le frontend, que l'on va configurer maintenant.
Avant de commencer la mise en place de NodeJS, on pourra prévoir au préalable certains paquets qui seront nécessaires :
gcc et g++ 4.9.4 ou plus récent. Python 2.6 ou 2.7. GNU Make 3.81 or plus récent.
Pour cette étape, sur le site officiel de Grafana, il est seulement indiqué 3 simples commandes, mais en réalité, la configuration est bien plus compliqué que ça, notamment lorsque l'on doit réaliser le tout en tant que simple utilisateur. Tout d'abord, il faudra récupérer NodeJS. Pour cela, on va donc récupérer un clone sur github. Comme pour Grafana, il faudra faire en sorte que ce dernier soit téléchargé dans un endroit où un simple utilisateur possède les droits (dans son dossier home par exemple). On utilisera la commande suivante pour récupérer NodeJS :
git clone https://github.com/nodejs/node
Le téléchargement devrait prendre un peu de temps, puisque de nombreux fichiers doivent être récupérés. Une fois le tout récupéré, il faudra aller à l'intérieur du dossier (qui devrait s'appeler “node”). Ce dernier doit contenir plusieurs fichiers/dossiers, certains qui vont être nécessaire dans notre cas, notamment :
Les fichiers Makefile et Configure Les dossiers lib et bin
Ces derniers seront essentiels au bon fonctionnement de notre Grafana, et si quelque chose venait à leur arriver, il faudrait réinstaller tout du début.
Maintenant, il va falloir faire en sorte que NodeJS soit bien installé ainsi que “npm” qui est présent par la même occasion et qui nous sera bien utile tout le long de la mise en place. Avant toute chose, il faudra tout d'abord définir la version que vous voulez récupérer de NodeJS, sachant qu'il faut au moins une version v6.+ afin de pour faire fonctionner Grafana et en règle général, récupérer le plus récent et stable. Dans le cas de NodeJS, une version 10.0.0-pre existe, mais comme celle-ci n'est pas encore considéré comme stable, des problèmes lors de la mise en place de Grafana pourraient arriver, c'est pour cette raison qu'il est préférable d'utiliser la version v9.11.1 (à la date où cette documentation est rédigée. Il est probable que d'ici quelques semaines/mois, la version 10.0.0 devienne la plus stable, il faudra donc s'adapter en regardant sur le site officiel de NodeJS : https://nodejs.org/en/ ).
Une fois que en connaissance de la version que l'on souhaite installé, il faudra récupérer celle-ci via la commande :
git checkout v9.11.1 (dans notre cas)
Un message devrait indiquer que la version de NodeJS a changé. A ce moment-là, il faudra configurer NodeJS, le construire et l'installer. C'est pour cette raison que les fichiers Configure et Makefile sont importants. Pour cette étape qui est la plus importante de la mise en place, il faudra respecter une chose lors du choix de paramètre de la configuration : Il faudra y indiquer un préfixe qui représentera l'endroit où tout sera configuré. Dans notre cas, il est donc préférable d'y indiquer le dossier “node” dans lequel on se situe actuellement. Ensuite s'en suivra une phase de création et d'installation qui peut durer assez longtemps (jusqu'à 1h pour certains). Pour lancer tout ceci, il faudra taper les commandes suivantes :
./configure -prefix=/*chemin/dossier*/node make (cette commande prendra beaucoup de temps). make install
Comme pour toutes les autres commandes qui seront présentes dans la documentation, il faut bien évidemment remplacer “/*chemin/dossier*” par l'endroit où l'installation de nodejs a été faites.
Si le préfixe a bien été indiqué, lors de la finalisation du make et du make install, aucun message d'erreur ne devrait s'afficher. Dans le cas contraire, vérifier à nouveau pour vous assurer qu'il ne manque rien où qu'il n'y a pas de faute de frappe, et dans le cas contraire, vérifier sur Internet ce qui pourrait en être la cause (problème de version, un paramètre supplémentaire à rajouter en fonction de la version…).
Il va falloir maintenant vérifier les version de nodejs et de npm d'installé. Dans mon cas, j'avais rencontré un problème pour lequel j'ai passé pas mal de temps sans vraiment comprendre la raison, mais j'ai finit par le résoudre malgré tout, c'est pour cela qu'il est important faire cette vérification, à l'aide des commandes :
node -v npm -v
Si tout se passe bien, node devrait renvoyer comme résultat “v9.11.1” et npm “5.8.0” ou supérieur en fonction de la dernière version. Or, dans mon cas, npm renvoyait bien cette valeur mais node renvoyait “v10.0.0-pre” et ce peu importe la version que j'indiquais dans le “git checkout”. Pour pouvoir faire face à ce problème, il a fallu que je récupère un outil ayant pour nom “n” qui permet d'installer des versions plus anciennes, et de passer d'une version à une autre à l'aide d'une simple commande.
Pour récupérer n, il faudra encore utiliser la commande git de cette façon :
git clone https://github.com/tj/n
Si tout se passe bien, dans le dossier /node/lib/node_modules, un fichier “n” devrait apparaître. On va donc y accéder afin de pouvoir l'installer. Mais avant tout, il va falloir modifier le préfixe avant de lancer l'installation, autrement tout sera installé dans “/usr/local” et seul un utilisateur ayant les privilèges, root ou avec sudo pourra y accéder. Pour contourner ce problème, il faudra indiquer le paramètre suivant lors du make install :
PREFIX=/*chemin/dossier*/node make install
Si aucun message d'erreur ne s'affiche, cela veut dire que l'installation s'est bien déroulée, dans le cas contraire, il faudra alors se renseigner sur Internet afin de trouver la solution, puisque pour ma part, “n” s'est installé correctement de cette façon, alors que pour certaines personnes, ils se sont retrouvés avec différentes erreurs à corriger.
Afin de changer la version actuelle de NodeJS avec “n”, il existe plusieurs façon :
n 9.11.1 (pour installer une version en particulier) n latest (pour installer la dernière version existante) n stable (pour installer la dernière version STABLE existante)
Si l'on veut ensuite modifier la version en cours d'utilisateur, il suffit juste de simplement taper “n” et un menu devrait s'ouvrir dans lequel on peut circuler à l'aide des lettres “j” et “k” ou des flèches directionnelles. Il est possible que la modification ne se fasse pas automatiquement, et dans ce cas-là, relancer la console devrait résoudre ce dernier.
Normalement, si tout s'est bien déroulé jusqu'ici, on devrait avoir avoir “npm” et “node” à jour, grafana d'installer. On va donc pouvoir passer à l'étape suivante qui nécessitera l'installation de “yarn”. Pour cela, on va utiliser npm (c'est pour cette raison qu'il est si important qu'il soit à jour) grâce à la commande :
npm install -g yarn
Une fois ceci fait, afin de pouvoir faire marcher Grafana, de nombreux autres outils vont devoir être installés, une partie étant là pour remplacer des anciens installés automatiquement mais qui sont obsolètes maintenant :
npm install -g gulp gulp-util minimatch graceful-js gulp-watch eslint (Il peut être intéressant de taper les lignes suivantes après chaque installation afin qu'elles soient bien prises en compte) npm install yarn install
Avant de commencer la configuration de yarn, on va se pencher sur gulp et les quelques modifications qu'il va falloir apporter à ce dernier afin de pouvoir exécuter les scripts présents dans yarn. Après l'avoir installé à l'aide de la commande ci-dessus, dans le dossier “/node/lib/node_modules/gulp/bin”, il devrait y avoir un fichier qui a pour nom “gulp.js”. Afin de pouvoir aller plus loin, il est nécessaire de créer un nouveau fichier qui aura comme nom “gulpfile.js” dans lequel il faudra mettre indiquer des paramètres :
touch gulpfile.js #pour créer le fichier, puis y insérer les lignes suivantes
// grab our gulp packages
var gulp = require('gulp'),
gutil = require('gulp-util');
// create a default task and just log a message
gulp.task('default', function() {
return gutil.log('Gulp is running!')
});
gulp.task('default', ['watch']);
gulp.task('watch', function() {
gulp.watch('/home/adrien/node/bin/node_modules/**/*.js');
});
Une fois ceci fait, il faudra modifier le fichier “package.json” qui se situe dans le dossier “yarn”. Avec toutes les modifications faites au niveau des versions, il faudra les modifier afin qu'il n'y ai plus de conflit. Afin de faciliter la tâche, il est possible de retrouver le fichier à jour dans sa quasi globalité à l'adresse suivante : https://github.com/yarnpkg/yarn/blob/master/package.json
Dans mon cas, il a juste été nécessaire de modifier la ligne :
"eslint-plugin-babel":"^4.1.1",
Si certaines erreurs subsistent, il existe 2 commandes qui permettront de résoudre ces dernières en grande partie, puisqu'une page a été spécialement créé pour ceux-ci, que l'on peut retrouver comme ceci :
npm ls gulp-util npm issues gulp-util@x.x.x (x.x.x correspondant à la version de gulp-util qui est indiqué dans la première commande pour lequel il est affiché "deprecated", c'est à dire obsolète)
Il est d'ailleurs possible de faciliter grandement l'utilisation des commandes gulp, yarn et nodejs en modifiant le fichier ~/.bashrc et en y rajoutant les lignes :
alias yarn="/*chemin/dossier*/node/lib/node_modules/yarn/bin/yarn.js" alias gulp="/*chemin/dossier*/node/lib/node_modules/gulp/bin/gulp.js" NODE_PATH="/*chemin/dossier*/node/lib/node_modules:$NODE_PATH" PATH=$PATH:/*chemin/dossier*/node/lib/node_modules/gulp/bin
Afin de finaliser le tout, dans le fichier “package.json” se trouvant dans yarn, il faudra modifier la ligne de script suivante en y indiquant le PATH qui correspond à ce que vous avez indiqué dans le .bashrc:
"watch": "gulp watch",
De cette manière, il sera possible pour yarn d'exécuter les commandes se trouvant dans les fichiers gulp.js et gulpfile.js. Et on en aura d'ailleurs besoin puisque pour finaliser l'installation de Grafana, il faudra également lancer la commande :
yarn run watch