Blog de dada

DevOps, bidouilleur et routard plein de logiciels libres

Comment prendre un peu de Python pour faire un Exporter Prometheus

Rédigé par dada / 20 juillet 2018 / Aucun commentaire



Faire un Exporter Prometheus, c'était un défi qui traînait dans ma longue-liste-des-choses-à-faire depuis longtemps. J'ai enfin mis les mains dedans. C'est moins terrifiant qu'on le croit, à condition de vouloir faire des choses simples. Voici donc quelques lignes pour vous expliquer comment s'en sortir.

Du Python 3

Il est possible de faire des Exporters dans un nombre dingue de langages. Pour des questions de curiosité et d'envie, j'ai choisi de le faire en Python, version 3. En plus, Prometheus fournit une bibliothèque qui va bien.

Une API

Un Exporter est capable d'interroger, entre autre, des API. Pour l'exemple et parce ce que j'avais envie de mieux connaître mon instance Mastodon, c'est l'API de l'alternative à Twitter que vous allez croiser ci-dessous.

La logique globale

Un Exporter, pour faire très simple, c'est un bout de code coincé dans une boucle infinie.
Oui, très simple.
Il va récupérer de l'information et la transmettre à Prometheus, puis récupérer de l'information et la transmettre à Prometheus, puis récupérer de l'information...

Exemple

Ici, on va pondre un bout de code qui va aller récupérer le nombre de comptes que je follow sur Mastodon :
r = requests.get("https://diaspodon.fr/api/v1/accounts/1")
data = json.loads(r.content.decode())
metric = Metric('following_count', 'Number of following account', 'gauge')
metric.add_sample('following_count', value=data["following_count"], labels={})
yield metric
Ce qu'il faut comprendre :
- La variable r contient le retour de l'appel à l'API Mastodon.
- La variable data contient en utilisable le JSON contenu dans r.
- La variable metric contient les données exploitables par Prometheus.

C'est la ligne qui est vraiment cruciale :
metric.add_sample('following_count', value=data["following_count"], labels={})
Les choses importantes :

- following_count sera le nom que vous pourrez retrouver dans Prometheus pour afficher la donnée
- value sera la valeur retournée quand vous appelez following_count

Lancer la bouche infinie

On va coincer ce bout de code dans une boucle :
class JsonCollector(object):
    def __init__(self):
        pass

    def collect(self):

        url = mastodon_host + 'api/v1/accounts/1'
        r = requests.get(url)
        data = json.loads(r.content.decode())
        metric = Metric('following_count', 'Number of following account', 'gauge')
        metric.add_sample('following_count', value=data["following_count"], labels={})
        yield metric

if __name__ == "__main__":
    start_http_server(9400)
    REGISTRY.register(JsonCollector())
    while True: time.sleep(1)
Et c'est tout quant à la création d'un Exporter ! Retrouvez le lien vers le code complet en fin de ce billet. Ou . Pour plus de visibilité, j'ai volontairement caché les modules à inclure.

Comment valider que ça fonctionne ?

Un curl et tout va :
root@server ~ # curl localhost:9400
# HELP following_count Number of following account
# TYPE following_count gauge
following_count 552.0

Brancher l'exporter à Prometheus

Tout va se faire, comme d'habitude, dans le prometheus.yml.

  - job_name: 'mastodon'
    static_configs:
      - targets: ['localhost:9400']
On ajoute le job, la target avec son port et on reload la bête.

Notez que j'ai utilisé le port 9400 dans mon exemple. C'est un choix personnel : vous pouvez le changer s'il est déjà utilisé par un de vos services.

Enfin, si tout s'est bien passé, vous devriez pouvoir appeler la variable following_count dans Prometheus !


Vous trouverez un snippet avec l'intégralité du code par ici.

Je retourne à mon code. Vous vous doutez bien qu'avez tout ça, il y a moyen de faire un bel Exporter complet pour Mastodon !

Des bisous,

Et si on parlait Fédiverse ?

Rédigé par dada / 14 juillet 2018 / 9 commentaires


De mon point de vue, ces derniers mois est apparue une dynamique incroyable dans le monde libriste. Le point de départ de cette dynamique ? Mastodon, le Twitter dont on peut se servir les yeux fermés. Le détail qui fait que ça tient dans la durée ? La langue utilisée : ActivityPub.

Au départ, nous n'avions que Mastodon, rejoint ensuite par Peertube, puis PixelfFed, puis Plume et enfin Prismo. Ces noms ne vous disent rien ? C'est normal, tout est encore en cours de développement et seuls les courageux font tourner ces applications. Patience.

Pourquoi je trouve que c'est une dynamique incroyable ? Quand Facebook parle le Facebook et Twitter le Twitter, les applications dont je vous parle se sont mises d'accord pour parler l'ActivityPub. Elles ont ceci de génial qu'elles parlent le même langage.

Une vidéo vous plaît ? Remerciez son créateur depuis votre Mastodon. Le résultat ?

Sur Framatube :


Sur Mindpalace :


Ce qu'il faut comprendre ?

- Les deux captures d'écran proviennent de deux instances Peertube différentes (Framatube / Mindepalace)
- Les commentaires proviennent de 3 instances Mastodon différentes ( Framapiaf / Mamot / Diaspodon )
- Ces commentaires sont visibles sur ces 5 bouts d'internet différents !

Et ça, c'est tout simplement incroyable. Le pire, c'est qu'il s'agit d'un exemple limité. Seulement 5 bouts d'Internet entrent en jeu. Seulement.

D'ici quelques jours, Pixelfed sortira de son autarcie pour rejoindre la Fédiverse. Même s'il est actuellement possible de s'en servir (depuis mon instance, par exemple, ou celle de Valère), l'application n'est pas bavarde sur la Fédiverse.
Lorsqu'un de vos amis postera une photo sur cet Instagram honnête, vous en serez averti sur Mastodon et vous pourrez interagir avec, toujours parce que ces deux choses parlent l'ActivityPub.

Que dire de Plume ? Ce moteur de blog vous permettra de partagez vos écrits sur la Fédiverse, de citer directement des gens dans vos billets et de laisser les gens publier des commentaires depuis Mastodon. Le tout en toute transparence.

Prismo devrait aussi entrer dans ce grand capharnaüm : un Reddit dans la Fédiverse ! Vous voulez partager mon article (parce qu'il est franchement génial, n'est-ce pas ?) sur Prismo, les utilisateurs de Mastodon seront au courant et pourrons interagir !

Ce qui se profile devant nous est tout simplement génial.

Bloquer les pubs : j'ai installé Pi-Hole derrière une Freebox

Rédigé par dada / 05 juin 2018 / 8 commentaires




Étant coincé pendant encore quelques temps dans la maison familiale, j'ai du trouver des occupations. Première idée : installer un Pi-Hole.

L'idée derrière tout ça ? Trouver une utilité à l'une de mes 3 Raspberry Pi.
L'utilité derrière tout ça ? Mettre en place un système simple permettant aux membres de ma famille, qui passent souvent par cette baraque, de ne plus être emmerdés par les pubs et autres.

Je suis le "toi qui t'y connais en informatique" local. Ça m'ouvre des droits et des devoirs. Avec des géniteurs frôlant les 70 ans, je me dois de prendre en main certaines choses. J'ai déjà réussi à passer un ordinateur portable sous Debian pour l'une mais l'autre doit continuer à se servir d'un Windows. Ils sont bien au courant des histoires de pubs, de flicages et de contenus sponsorisés, mais bon, autant prendre le temps de mettre en place une petite bête qui va s'occuper de tout ça pour eux. Et je ne parle pas d'une branche qui ne jure que par Apple et dont certaines notions citées juste avant n'allument aucune lanterne.

Installer Pi-Hole

Si vous passez par Raspbian, prenez le temps de flasher sa carte SD avec la version Stretch de l'OS sans quoi vous ne pourrez pas vous servir de l'outil. Une sombre configuration de dnsmask plante la chose si vous n'êtes pas à jour.
Pensez aussi à faire un "apt update" avant de lancer l'installeur : j'avais des soucis avec les dépôts et Pi-Hole, sans rien m'expliquer, refusait de s'installer.

Pas de blabla autour de l'installation. Si vous avez une Raspberry et que vous passez par ce blog, vous devriez réussir à faire un curl et appuyer 6 fois sur la touche entrée.

Ajouter la blacklist manquante

J'ai ajouté une blacklist orientée francophones en plus de celles activées par défaut : Liste_fr + Easylist

Ça ne fait pas de mal.

Configuration de la Freebox

Pour que la Freebox utilise Pi-Hole, il faut aller faire un tour dans l'interface de gestion de la bestiole de Free. La capture d'écran qui va bien :



Voyez l'adresse sur serveur DNS 1 : il s'agit de l'IP de la Rasbperry.

Éviter les emmerdes

Alors, quand on commence à faire ce genre de bêtise, il faut garder à l'esprit qu'une coupure de courant, ça arrive. Que ce passera-t-il si la Raspberry ne redémarre pas ? Plus "d'internet" pour les utilisateurs, le téléphone qui sonne, les "tu es responsable !".

- Configurer la réservation de l'adresse IP de la Raspberry pour ne pas perdre le Pi-Hole

Pour que l'IP de la Rasbperry ne change pas, vous devez impérativement la réserver. Ça se fait dans l'interface de la Freebox, dans la gestion de baux statiques.

- Activer la connexion SSH vers la Raspberry en cas de besoin

Cette configuration ne se fait pas depuis l'interface de la Freebox mais depuis le site Free.fr. Dans la rubrique de configuration du routeur, redirigez l'accès SSH depuis l'extérieur vers l'IP de la Rasbperry Pi et le port SSH que vous utilisez (22 par défaut).

- Préparer un mail avec des captures d'écran en cas de crash du Pi-Hole alors que vous faites le tour de la Jamaïque

Pour ce dernier point, je vous laisse aller à vote imagination pour trouver la solution la plus simple pour expliquer à des proches en colères comment corriger la situation en votre absence. C'est sportif, j'en suis conscient.

Notes étonnantes

  • L'utilisation d'une Raspberry Pi de vieille génération ne ralentie pas la navigation des 10 appareils branchés sur le réseau.
  • Si vous êtes utilisateurs de uBlock, sachez que ce dernier bloque directement depuis le navigateur les requêtes qui devraient être élimées par le Pi-Hole (cf ici).

Et voilà, fin du billet. Vous pouvez vous lancer dans l'aventure si ça vous chante et que vous êtes prêt à prendre des responsabilités dans le digital familiale. Moi, je vais jouer avec Funkwhale maintenant.

Des bisous

Il n'y a pas que le libre

Rédigé par dada / 14 mai 2018 / 18 commentaires


Au delà du libre, et j’exclus de facto l'open source que je conchie, il y a le monde dans lequel il évolue : le nôtre. Un système économique, une société, une République, le concept de Démocratie, etc. Ce monde là, il est impératif de le comprendre si nous voulons défendre les valeurs de notre idéal libriste.

Pourquoi ? Parce qu'il est primordial de s'armer contre l'argumentaire archaïque de celles et ceux qui n'en veulent pas ou qui simplement ne le comprennent pas, voire qui ne l'imaginent pas. Sans arme, le partage, le collectif et nos conditions de vie s’écrouleront dans un marasme égoïste où chacune et chacun ne pense qu'à sa gueule. Et le libre, là-dedans, disparaîtra. Je ne vous cache pas que si le libre en vient à disparaître, ça ne sera pas notre plus gros problème, mais quand même.

Pour s'armer, il n'y a pas 36 000 possibilités : il faut lire, il faut regarder des choses que j'apparente à de la bouffe pour le cerveau. Au diable les émissions relaxantes, la soupe Netflix, les Youtubeurs à la con et le reste. Allez chercher de quoi comprendre.

Du Droit, de la Philosophie, de la Sociologie, de l'Histoire ou encore de l'Économie, du Marketing, du Management : c'est tout cela et bien plus encore dont vous avez besoin pour ne pas vous laisser aller.

Ça vous emmerde déjà ? Dites vous que celui ou celle qui comprend ces choses là vous emmerde déjà bien plus.

Voici une liste de choses et d'autres que je vous conseille de lire ou de regarder :
Il y en a d'autres, c'est certain. Trouvez-les et partagez-les !

Allez donc fermer le clapet de ceux et celles qui vous disent que prendre du temps pour lire et regarder des documentaires, c'est de la merde, que ça ne sert à rien dans la vie. Montrez-leur que c'est important, si vous en avez le courage. Vous, par contre, votre petite personne, faites l'effort d'apprendre et surtout de comprendre.

Perdu ? Vous ne savez pas par où commencer ? Trouvez le sujet du moment qui vous plaît et regardez s'il est traité quelque part. Il l'est sans doute. Vous déroulerez la pelote de laine tout naturellement, comme disent les anciens.

Un dernier détail : pas d'extrémisme, pas de haine. Ne vous enfermez pas dans une idéologie unique : continuez à regarder et à lire ce que les intellectuels à deux balles appellent le « mainsteam ». C'est ce que les gens autour de vous connaissent. Ne vous déconnectez pas de leur vision du monde si vous voulez pouvoir continuer à les comprendre.

Des bisous,

Classé dans : Édito / Mots clés : aucun

Partagez vos réseaux !

Rédigé par dada / 08 avril 2018 / 1 commentaire


L'émulation autour de la Fédiverse, Mastodon (mon mien) et PeerTube en tête, nous donne une opportunité qu'il ne faudrait pas rater. En ce dimanche d'avril, je sors mon clavier pour vous rappeler quelques petites choses qui feront du bien à notre joli monde.

Les informations circulent à une vitesse incroyable entre nous : les libristes et les simples utilisateurs. Cela fait un an qu'une grosse partie d'entre nous est allée poser le baluchon de sa vie sociale numérique sur le dos du mammouth. Loin de s'essouffler, le réseau continue d'accueillir de nouveaux utilisateurs. Malgré ce joli constat, il nous faut garder le rythme pour ne pas finir comme mon premier amour : diaspora* (mon mien).

Attention, diaspora* tient toujours la route. Il y a un noyau d'utilisateurs actifs et des nouveaux arrivants qui en font un réseau très intéressant, mais on est loin du nombre d'utilisateurs actifs de Mastodon. J'ajoute aussi que l'origine de la source du semi-échec de diaspora* est difficile à déterminer : le mauvais timing ? Une équipe qui n'a malheureusement pas tenue la charge ? La communauté qui n'a pas réussi à s'organiser ? Bref, compliqué.

Pour continuer le mouvement, pour faire venir toujours plus de gens, je vous propose une hygiène de vie : lorsque vous avez envie de partager quelque chose comme un billet de blog (coucou !), un article de presse, une vidéo, etc, forcez-vous à balancer un lien vers un toot. Nous avons besoin de visibilité. La masse a en tête Facebook, Twitter et Youtube parce que c'est là qu'est le contenu partagé. Le contenu en lui même n'y est pas. Mastodon peut devenir un vecteur important de partage d'information, de culture, si les internautes y passent régulièrement et deviennent familier avec la Fédiverse.

Les utilisateurs déjà dans la place n'hésitent pas à partager des articles de presse ou de blog avec un rapide commentaire. Vous voulez partager cet article avec vos amis ? Envoyez le lien vers le toot ! Les vieux de la vielle diront que c'est une étape inutile pour atteindre le contenu, mais la visibilité qu'il apporte à la Fédiverse est très important.

Utilisateurs assidus de Mastodon ? Partagez ! L’activité y est déjà difficile à suivre, ça défile vraiment dans tous les sens aux heures de pointes, mais c'est insuffisant. Partagez dans tous les domaines. Dire que la majorité de la Fédiverse est composée de libristes, c'est vrai mais on y trouve aussi des photographes, des gens engagés politiquement, des designers, TV5 Monde, Reflets et même des fans de Rugby ! Vous avez des centres d'intérêts ? Faites nous l'honneur de les partager avec nous !
Plus vous serez actifs, plus nous aurons de liens à partager avec l'extérieur de la Fédiverse, plus la Fédiverse sera connue, plus les gens viendront nous rejoindre et plus nous aurons d'actifs, et donc de liens à partager. Une histoire de boule de neige.

Le cas de Peertube est unique : cette beauté commence à être utilisée par des grands comptes : DataGueule, LQDN, Thinkerview et j'en passe.
Ces comptes publient autant sur Youtube que sur PeerTube. C'est à nous de choisir quel lien sera envoyé à nos potos. Simplement, choisissez celui de l'alternative libre. C'est simple, efficace, et ça me permet de rêver du jour où la vidéo sur Peertube aura plus de vue que celle qui traîne sur la plateforme de Google/Alphabet.

En exemple, pour ce qu'il vaut, allez voir mon précédent billet : je partage une vidéo et une citation. Les deux viennent de PeerTube et de Mastodon. Simple.

Tout ce que je raconte ne fera pas venir les grands comptes qui traînent sur Facebook et Twitter pour ne faire que du Personal Branding, comme disent nos amis anglophones. Ne viendrons peut-être jamais non plus les marques qui paient des espaces publicitaires cachés en posts ou tweets. Dommage ? Posez-vous cette question : est-ce vraiment un mal ?

Bref, viendez ! Mon instance Mastodon et mon nœud diaspora* sont ouverts aux inscriptions !

PS : pour les utilisateurs de Twitter et de Mastodon. Faites vous violence et arrêtez de poster de l'oiseau bleu vers le Mammouth : c'est rageant. Faites l'inverse !