Blog de dada

DevOps, bidouilleur et routard plein de logiciels libres

auto-hébergement

Installer Grafana, Prometheus et Node Exporter

Rédigé par dada / 31 janvier 2018 / 5 commentaires




Le monitoring, j'aime à dire que c'est ce que l'administrateur a de plus pervers : surveiller, voir et savoir tout ce qui se passe sur ses machines, sans limite, et de la façon qui lui est la plus agréable possible. Un admin, c'est un stalker, en fait.

De mon côté, après avoir testé Facette, Monitorix, Netdata et Munin, je joue en ce moment avec Grafana, Prometheus et les exporters qui vont avec. C'est l'objet de ce billet, ça tombe bien, alors voyons comment faire pour installer tout ça en quelques minutes.

Comprendre l'installation en quelques lignes

Vos serveurs vont avoir un exporter simple : le Node Exporter, qui va permettre à Prometheus de récupérer les différentes métriques qu'il partage. La bonne pratique consiste à installer Prometheus sur une serveur qui sera dédié à la collecte des informations. Si vous installez tout sur une seul et même machine, vous pourrez mettre du localhost dans presque tout ce qui suit. Grafana, quant à lui, va afficher ses données avec des jolies couleurs et dans des jolis graphiques.

Installer Prometheus

Pas de piège pour une Debian Stretch :
apt install prometheus 
C'est un peu plus compliqué pour une Jessie :
apt -t jessie-backports install prometheus 
Notez qu'essayer de lancer le service sous Jessie via systemd est foireux : il faut utiliser la bonne vieille méthode :
/etc/init.d/prometheus start 
Si vous ne faites pas ça et que vous avez des soucis, genre un service qui écoute déjà sur le 9090, vous ne verrez rien dans les logs.

A partir de là, vous devriez pouvoir accéder à Prometheus en tapant sur le port 9090 de votre serveur.



Quoi ? Jamais j'ai écrit que Prometheus était sexy ;-)

Installer Node Exporter

Prometheus ne sait pas collecter d'informations tout seul. Il lui faut des exporters. Le plus simple et le plus complet pour avoir une vision global de la situation d'une machine (CPU, RAM, Load, traffic, etc) est le bien nommé Prometheus Node Exporter. Pour l'installer :
apt install prometheus-node-exporter

Configurer le Node Exporter dans Prometheus

Maintenant que les deux premiers outils sont installés, il va falloir les faire bosser ensemble. On va simplement déclarer dans la configuration de Prometheus qu'il doit se mettre d'accord avec l'exporter :
vim /etc/prometheus/prometheus.yml
scrape_configs:
  - job_name: 'prometheus'

    scrape_interval: 5s
    scrape_timeout: 5s

    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node'
    static_configs:
      - targets: ['monserveur:9100','monserveurdeux:9100']

L'exemple de configuration ci-dessus est quasiment celle de base. Il faut noter que le job_name 'prometheus' est là pour expliquer que Prometheus est en local. Quant au job_name 'node',  il fait comprendre à Prometheus que le Node Exporter est présent sur les hosts cités entre crochets.

On sauvegarde tout ça et on recharge la configuration de Prometheus avec le curl qui va bien :
curl -X POST http://localhost:9090/-/reload
Si vous n'avez pas d'erreur, on va enfin s'attaquer à la partie artistique de l'opération : les graphiques !

Installer Grafana

L'installation est, là aussi, triviale :
apt-get install grafana 
C'est 'achement difficile, tout ça, hein ?

Configurer Nginx

Pour ne pas avoir à toujours taper le port de Grafana, voici un bout de conf pour Nginx :
server {
    listen 80;

        root /var/www/html/;

        server_name grafana.monserveur.tld;

        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_pass http://127.0.0.1:3000;
        }
}

Configurer Grafana

- Ajouter une data source

Grafana, ça marche tout seul. Une fois installé, il vit sa vie. Par contre, il va falloir le brancher à Prometheus, tout de même.
Comme blablater, c'est chiant, voici une capture d'écran de ce que vous devez faire :



En commentaire : cliquez sur le menu en haut à gauche de Grafana pour ajouter une nouvelle data source et récupérer les informations que vous voyez dans la capture.
Vous remarquerez que le port mis en place est bien celui de Prometheus et pas celui du Node Exporter : Grafana ne communique pas avec Node Exporter (sur le port 9100), mais uniquement avec Prometheus.

On arrive à la fin. Maintenant que l'exporter balance des informations, que Prometheus en est conscient et que Grafana arrive à échanger avec Prometheus, on va pouvoir mettre en place un dashboard pour profiter des graphiques !

- Installer le dashboard Node Exporter Full

Ici, c'est aussi simple (mais pourquoi est-ce que je m'emmerde à écrire ce billet si c'est si simple ?!), pour installer un dashboard, allez dans le Menu de Grafana, puis Dashboard et enfin Import. Je dis bien Import, pas New. Enfin, ajoutez le nombre 1860 dans la premier champ pour faire apparaître la fenêtre suivante :



Bon, j'ai aussi cliqué n'importe-où sur la fenêtre pour que Grafana prenne en compte la nouvelle information et, finalement, affiche la capture ci-dessus.

On a fait le tour. Tout est bon. Vous pouvez aller sur la page d'accueil de Grafana, cliquer sur le nom de votre nouveau dashboard et profiter du spectacle !



Streamer sa musique librement

Rédigé par dada / 05 décembre 2017 / 14 commentaires


Il existe des tonnes de façon d'apprécier sa musique sans pour autant la traîner sur des CD ou sur la carte mémoire de son téléphone. Les plus simples consistent à prendre un abonnement chez Deezer ou chez Spotify mais, manque de chance, c'est plein de DRM et ça ne fonctionne pas partout sur la planète. Oui, je reste un grand traumatisé de Spotify : je n'ai jamais réussi à écouter mes playlists alors que je vadrouillais en Syrie (avant !).

Du coup, voici ma solution. Ce n'est peut-être pas la plus simple mais elle me permet de combiner Nextcloud, Sonerezh et Power Ampache. Avec tout ça, j'écoute ma musique via une interface web et via une application mobile partout où je veux et je contrôle tout. Le seul souci, c'est que ça me coûte cher en musique.

Nextcloud ?

Pour n'avoir qu'à copier/coller mes dernières trouvailles dans un répertoire de mon PC. Il va être parcouru par le client de synchronisation : son contenu va donc directement être envoyé sur le serveur de streaming. C'est simple, facile et pour les feignants. En plus, ça fait déjà un backup.

Music ?

C'est l'application qui permet de lire ses fichiers audios dans NC. Ça fait du bon boulot, mais c'est moche et assez lent. Je préfère carrément Sonerezh. Ceci-dit, elle supporte l'API d'Ampache, et ça, c'est cool. Vous le voyez arriver, le lien avec Power Ampache ?

Power Ampache ?

Là, c'est le Graal. Votre NC est configuré, Music fournit l'API d'Ampache : Power Ampache va tout récupérer. Vous avez maintenant du streaming audio de qualité sur votre Smartphone. Bah oui, ça supporte le FLAC, tout ça !
Ah, et pensez à cocher "Offline Songs" si ça vous embête de pomper votre forfait 3/4G.

Sonerezh ?

Quand votre NC récupère vos fichiers audios, vous y avez accès via Music et Power Ampache, mais pas via une belle et rapide interface web. C'est là que Sonerezh débarque.
Pour que ça marche, il faut lui dire d'aller récupérer le contenu de votre répertoire Musique qui est dans Nextcloud, tout simplement.
Perso, je suis passé par le principe du stockage externe de Nextcloud pour que tous les partis puissent se parler, et que je puisse faire du gros copier/coller depuis mon PC sans avoir jamais à me connecter au serveur.

Qu'est-ce que ça donne ?

Sonerezh :



Power Ampache :


Tout cela n'est pas parfait, mais c'est de la bonne bidouille ! Du logiciel libre et un peu d'idées pour ne plus jamais se prendre le choux à gérer sa musique entre le local et le distant. Y'a sans doute plus simple, mais bon, une fois que ce système est en place, on n'a plus qu'à vérifier les tags avec EasyTAG et à faire un copier/coller. Cool.

Des jolis graphes à Facette 0.4.0 et RRD

Rédigé par dada / 15 août 2017 / 9 commentaires


En 2015, j'étais tombé sur Facette, un outil plutôt bien foutu pour afficher l'état de mon serveur sans avoir à m'y connecter. En 2015, après quelques mésaventures, j'avais passé mon système de monitoring sous Monitorix. Eh bien, en 2017, avec la sortie de Facette 0.4rc1 (puis rc2 le temps de rédiger le billet), je retourne à mon premier amour !

Pourquoi ? Parce que cette version 0.4 est totalement retravaillée de l'intérieur, que ses jolis graphiques me manquent et que Monitorix, aussi simple soit-il, n'est pas vraiment une solution flexible. Je vous propose ici de quoi bien commencer, vu que la doc m'a filé mal au crâne.

Installer Facette

Pour les utilisateurs de Debian Jessie en amd64, voici le wget qui va bien. Pour les autres, faites un tour par ici.
wget https://github.com/facette/facette/releases/download/0.4.0rc2/facette_0.4.0rc2_jessie-amd64.deb
Pour installer le paquet :
dpkg -i facette_0.4.0rc2_jessie-amd64.deb 

Installer les dépendances RRD

Il est possible de remplir Facette avec Graphite, Influxdb, Kairosdb, ou encore Facette lui-même. J'ai choisi RDD, parce que.
apt-get install rrdtool rrdcached collectd 

Configurer Nginx

Facette a besoin d'un ReverseProxy pour fonctionner : en voici un exemple.

Configurer RRD

Installer les dépendances de RRD ne suffit pas, voici les quelques étapes supplémentaires pour faire fonctionner le bousin :

Créez les répertoires rrdcached :
mkdir /var/run/rrdcached/
On donne les bons droits à l'utilisateur facette :
chown facette: /var/run/rrdcached
Ajoutez ces lignes dans /etc/default/rrdcached :
OPTS="-s facette"
OPTS="$OPTS -l unix:/var/run/rrdcached/rrdcached.sock"
OPTS="$OPTS -j /var/lib/rrdcached/journal/ -F"
OPTS="$OPTS -w 1800 -z 1800 -f 3600 -t 4"
Cela permet, en gros, à Facette d'utiliser RRD.

Relancez RRDcached.
/etc/init.d/rrdcached restart 
Avec un ps, on vérifie que tout est comme on veut :
root@serveur:~# ps faux | grep rrd
root     14476  0.0  0.0  12736  2204 pts/0    S+   20:33   0:00                      \_ grep rrd
root     14465  0.0  0.0 138288  2632 ?        Ssl  20:33   0:00 /usr/bin/rrdcached -s facette -l unix:/var/run/rrdcached/rrdcached.sock -j /var/lib/rrdcached/journal/ -F -w 1800 -z 1800 -f 3600 -t 4 -p /var/run/rrdcached.pid

Configurer RRD comme fournisseur / provider

Allez dans le panneau d'administration de Facette et configurez RRD avec les informations que vous venez de mettre en place :

- Dossier de base
/var/lib/collectd/rrd

- Socket du démon rrdcached
/var/run/rrdcached/rrdcached.sock

- Motif de correspondance
(?P<source>[^/]+)/(?P<metric>.+).rrd

Voilà ! Vous devriez maintenant pouvoir commencer à faire vos propres graphiques :


Vous arriverez sans doutes à mettre en place vos graphiques comme des grands et à les afficher dans des collections, pas besoin d'expliquer comment faire.

Je reviens rapidement sur les fournisseurs de données. J'ai dit que Facette pouvait être de la partie, en plus de RRD et des autres. Cela veut dire que plusieurs instances bien configurées peuvent être agrégées sur un même serveur. C'était déjà une option bien chouette à l'époque, ça l'est toujours aujourd'hui : avoir une unique page pour, par exemple, surveiller tout le trafic réseau ! 

Mastodon : Oops! An unexpected error occured

Rédigé par dada / 14 avril 2017 / 3 commentaires




Si, par curiosité, vous avez monté votre instance Mastodon pour vérifier l'intérêt du nouveau réseau social libre du moment, vous êtes peut-être tombés sur cette erreur à la relance des services. Tout semble bien se passer mais votre timeline publique et vos notifications ne marchent plus. Enfin, elles ne contiennent que les événements en cours, pas les passés.

Oops! An unexpected error occured

Comme contexte, j'ai rencontré ce souci lors du passage à la 1.1.2. N'ayant pas fait le passage à la 1.1.1, vous aurez peut-être déjà fait une partie de ce que je vais raconter ci-dessous.

Mettre à jour Ruby et réinstaller ses dépendances

Ces opérations se font avec l'utilisateur dédié à Mastodon, pas en root.

Pour ruby :
rbenv install 2.4.1 
Pour ses dépendances :
gem install bundler 
bundle install --deployment --without development test 
yarn install && yarn upgrade 
Si vous avez le regard perçant, vous avez remarqué la présence du yarn upgrade qui va vous éviter l'erreur à l'origine de l'écriture de ce billet.

Nettoyer et recompiler les assets

Le nettoyage :
RAILS_ENV=production bundle exec rails assets:clean 
La recompilation :
RAILS_ENV=production bundle exec rails assets:precompile 
Une fois tout ça fait, vous pouvez relancer votre instance Mastodon et revenir tooter parmi nous !

Installer Collabora Online avec Nextcloud

Rédigé par dada / 05 avril 2017 / 17 commentaires




Le soleil repointe le bout de son nez et je ne trouve plus le temps de sortir des billets. L'apéro passe avant tout mais malgré ça, j'ai quand même pas mal joué avec mon serveur.
D'abord, j'ai changé de crémerie, encore, pour laisser tomber mon C1 chez Scaleway pour une Kimsufi aux caractéristiques bien plus rigolotes : adieu l'ARM, coucou le Core i3. Ça m'a permis de mettre en place l'objet de ce billet : Collabora Online dans Nextcloud via Docker !

je présuppose que votre machine tourne sous Debian Jessie (what else ?) avec Nextcloud 11.0.2.

Installer Docker

Je suis passé par l'installation de Docker CE. Ça permet d'avoir une version plus récentes de la bête.

On commence par les dépendances qui vont bien :
apt-get install apt-transport-https ca-certificates curl software-properties-common 
On enchaîne sur la clé GPG du dépôt :
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
On ajoute le dépôt dan le sources.list :
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" 
Pour finir, on installe notre nouveau jouet et c'est parti !
apt-get update && apt-get install docker-ce

Mise en place du conteneur de Collabora

On le télécharge :
docker pull collabora/code 
On le lance :
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=votre\\.instance\\.com' --restart always --cap-add MKNOD collabora/code 
C'est pendant cette étape que je me suis le plus pris la tête... Ils disent de lancer docker avec pour paramètre un sous-domaine pour Collabora alors qu'il ne le faut pas, pas chez moi du moins. En fait, comme Collabora tourne sur le même serveur que mon instance, pas besoin de sous-domaine.

Configurer votre Vhost

Pour Nginx, ajoutez ces lignes dans votre vhost : (snippet ici).

    # static files     
    location ^~ /loleaflet {
        proxy_pass https://127.0.0.1:9980;
        proxy_set_header Host $http_host;
    }       
    # WOPI discovery URL
        location ^~ /hosting/discovery {
        proxy_pass https://127.0.0.1:9980;
        proxy_set_header Host $http_host;    
    }        
    # websockets, download, presentation and image upload
    location ^~ /lool {        
        proxy_pass https://127.0.0.1:9980;
        proxy_set_header Upgrade $http_upgrade;  
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
   }
Pour Apache2. c'est trop long alors cliquez sur snippet !

Et voilà pour le plus chiant !

Activer Collabora

Maintenant, pour terminer, allez donc activer l'application en la configurant avec le sous-domaine de votre instance : https://votre.instance.com. Pensez bien à cliquer sur "Appliquer" si vous ne voulez pas risquer de devenir chèvre...

Tous ces efforts vous permettront de cliquer paisiblement sur ces 3 nouvelles options :



Amusez-vous bien !