Resources attached to the Road To DevOps tutorial
https://blog.noobtoroot.xyz/road-to-devops/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
3.6 KiB
129 lines
3.6 KiB
2 years ago
|
# Docker
|
||
|
|
||
|
![Schema Docker Swarm](images/docker-wave-whale.svg "Schema Docker Swarm")
|
||
|
|
||
|
**Monitoring des conteneurs**
|
||
|
|
||
|
Maxime Poullain • Christian Tritten
|
||
|
|
||
|
|
||
|
|
||
|
## Monitorer des conteneurs
|
||
|
|
||
|
Pourquoi c'est différent ?
|
||
|
|
||
|
|
||
|
Avec l'introduction des conteneurs et des microservices,
|
||
|
le monitoring doit pouvoir gérer des applications souvent éphémères et en perpétuelle fluctuation.
|
||
|
|
||
|
|
||
|
Les solutions de monitoring ont donc besoin de s'adapter pour continuer à fournir des données pertinentes.
|
||
|
|
||
|
|
||
|
### Le monitoring sans conteneurs
|
||
|
|
||
|
![Stack Monitoring](images/monitoring2.png) <!-- .element: width="1000px" -->
|
||
|
|
||
|
Les outils de monitoring classiques permettent une couverture complète des éléments à surveiller.
|
||
|
|
||
|
|
||
|
### Le monitoring avec conteneurs
|
||
|
|
||
|
![Stack Monitoring](images/monitoring3.png) <!-- .element: width="500px" -->
|
||
|
|
||
|
Les éléments propres à la couche des conteneurs ne peuvent pas être monitorés avec les outils classiques.
|
||
|
Par exemple, il serait difficile de suivre la consommation mémoire de l'application A.
|
||
|
|
||
|
|
||
|
## Quelques outils
|
||
|
|
||
|
Pour se faciliter la tâche
|
||
|
|
||
|
|
||
|
### Docker Stats
|
||
|
|
||
|
Docker propose un équivalent de la commande `top` permettant d'afficher les statistiques des conteneurs en cours d'exécution sur l'hôte.
|
||
|
|
||
|
Bien que pratique, ceci n'est pas adapté à une grosse infrastructure.
|
||
|
|
||
|
|
||
|
`docker stats`
|
||
|
<!-- .slide: data-state="medium-code" -->
|
||
|
```
|
||
|
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
|
||
|
5098617c3654 0.05% 0B / 0B 0.00% 648B / 0B 0B / 0B 0
|
||
|
b2d0efcb5151 1.00% 0B / 0B 0.00% 648B / 0B 0B / 0B 0
|
||
|
cbdb1069b241 0.10% 0B / 0B 0.00% 648B / 0B 0B / 0B 0
|
||
|
```
|
||
|
|
||
|
|
||
|
### ctop
|
||
|
|
||
|
Métriques des conteneurs dans une interface à la _top_
|
||
|
|
||
|
![ctop](images/ctop.gif)
|
||
|
|
||
|
|
||
|
### Node-Exporter
|
||
|
|
||
|
![Prometheus](images/prometheus.png) <!-- .element: width="100px" -->
|
||
|
|
||
|
* Outil de collecte de métriques système
|
||
|
* Développé par Prometheus
|
||
|
* C'est l'équivalent d'un collectd
|
||
|
* Facile à déployer sur chaque hôte (sous forme de conteneur)
|
||
|
|
||
|
|
||
|
### cadvisor
|
||
|
|
||
|
![cadvisor](images/cadvisor.jpg) <!-- .element: width="120px" -->
|
||
|
|
||
|
* Outil de monitoring de conteneurs
|
||
|
* Développé par Google
|
||
|
* Supporte nativement Docker
|
||
|
* Collecte et exporte les métriques des conteneurs présents sur l'hôte
|
||
|
* C'est un peu l'équivalent d'un `docker stats --all`
|
||
|
* Facile à déployer sur chaque hôte (sous forme de conteneur)
|
||
|
|
||
|
|
||
|
### Prometheus
|
||
|
|
||
|
![Prometheus](images/prometheus.png) <!-- .element: width="100px" -->
|
||
|
|
||
|
* Projet initié en 2012 chez Soundcloud
|
||
|
* Interroge les agents _Node-Exporter_ et _cAdvisor_ des différents hôtes
|
||
|
* Stocke les données de type time-series dans ses propres bases
|
||
|
* Permet la configuration d'alertes via l'outil _Alert-Manager_ de Prometheus
|
||
|
* Peut être lancé en tant que conteneur (1 seule instance pour un cluster ou plus)
|
||
|
|
||
|
|
||
|
### Alert Manager
|
||
|
|
||
|
![Prometheus](images/prometheus.png) <!-- .element: width="100px" -->
|
||
|
|
||
|
* Outil de gestion et routage d'alertes
|
||
|
* Développé par Prometheus
|
||
|
* Se couple avec un serveur Prometheus
|
||
|
* Supporte les notifications par Email/Webhook/Slack/...
|
||
|
|
||
|
|
||
|
### Grafana
|
||
|
|
||
|
![grafana](images/grafana.png) <!-- .element: width="120px" -->
|
||
|
|
||
|
* Outil de conception et visualisation de tableaux de bord
|
||
|
* Développé par Grafana Labs
|
||
|
* Peut exploiter une base InfluxBD ou Prometheus
|
||
|
* Peut être lancé en tant que conteneur (1 seule instance pour un cluster ou plus)
|
||
|
|
||
|
|
||
|
<!-- .slide: data-background="images/grafana-dashboard.png" data-state="nologo-slide" -->
|
||
|
|
||
|
|
||
|
### Exemple de solution complète
|
||
|
|
||
|
![Stack Monitoring](images/monitoring.png) <!-- .element: width="850px" -->
|
||
|
|
||
|
|
||
|
[https://github.com/stefanprodan/swarmprom](https://github.com/stefanprodan/swarmprom)
|