{{indexmenu_n>1}}
# Graphes des services
Cette page présente l'infrastructure de Picasoft du point de vue des services déployés via Docker sur nos machines.
## Ouaaaaais ! Des schémas !
Picasoft utilise actuellement 5 machines virtuelles pour déployer ses services en production. D'autres machines sont utilisées à des fins de tests. Ces machines sont :
* `pica01`, `pica02` et `pica03`, généralistes.
* `media`, pour les services consommateurs d'espace disque (multimédias...).
* `monitoring`, pour les services "techniques" ou restreints (LDAP, mail, Cloud...).
Le nombre de services augmentant, il est difficile d'avoir une vue d'ensemble ce qui tourne et surtout, où ça tourne.
L'infrastructure étant dynamique, il est impossible de maintenir des diagrammes de l'infrastructure à la main sans les rendre rapidement obsolètes. Nous utilisons l'outil [Docker Graph Bot](https://gitlab.utc.fr/picasoft/projets/graph-bot) pour générer automatiquement des diagrammes des machines de production. Ils sont générés chaque jour.
* Les graphes sont très larges ; il n'existe pas de solution fiable pour générer automatiquement des graphes avec une largeur acceptable quand le nombre de services augmente.
* Par service, on entend à la fois les services publics (reliés à un port public ou à une URL sur le graphe) et les services "adminsys".
## Ils sont où les beaux schémas ?
* [Services de pica01](https://uploads.picasoft.net/graph_output/pica01.dot.png)
* [Services de pica02](https://uploads.picasoft.net/graph_output/pica02.dot.png)
* [Services de pica03](https://uploads.picasoft.net/graph_output/pica03.dot.png)
* [Service de media](https://uploads.picasoft.net/graph_output/media.dot.png)
* [Services de monitoring](https://uploads.picasoft.net/graph_output/monitoring.dot.png)
Si jamais un graphe n'est plus généré (la date est trop ancienne, par exemple), il faut sans doute [[technique:docker:admin:socket-certs|renouveler le certificat pour se connecter au socket Docker à distance]].
La légende pour mieux comprendre :
{{https://uploads.picasoft.net/graph_output/legend.dot.png?300&nocache}}
## Ça sert à quoi ton truc ?
Ces schémas ne serviront sans doute pas à tout le monde, mais je vais prendre mon exemple.
### Je veux savoir où tourne Etherpad
Soit je le sais par cœur, soit je vais me connecter sur toutes les machines une par une et je fais des `docker ps`, soit je regarde les graphes et je cherche visuellement un conteneur Etherpad.
Perso, je trouve que ça va plus vite avec la deuxième option.
### Vérifier qu'il n'y a pas d'incohérences
On voit assez vite ce qui est suspect sur le graphe :
* Un port de la machine connecté directement à un conteneur web au lieu de passer par [[technique:docker:general:traefik|Traefik]]
* Une base de données accessible depuis l'extérieur (dans le réseau de Traefik)
* Un conteneur de base de données sans volumes (= données perdues à la recréation du conteneur)
Les graphes montrent bien les volumes. Ça m'est arrivé de parcourir un graphe et de voir un conteneur `postgresql` avec deux volumes attachés : un nommé, et un non-nommé. C'était à cause d'une faute de frappe dans un fichier de configuration.
Bref, je pense que c'est un bon outil d'adminsys.
### Transparence pour le public
Même s'il faut quelques bases technique pour interpréter le graphe (image ? conteneur ? réseau Docker ? etc), il donne une vision quasi instantanée de notre infrastructure :
* Quels services tournent
* Avec quelle version
* Quel conteneur a accès à quel autre
* etc.
C'est pour le T de Transparent des CHATONS. Ça nous évite de maintenir laborieusement, à la main, une liste des conteneurs en production sur nos machines.