SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Jonathan Raffre | Jean-Pascal Thiery
1
Exploitation de conteneurs en production
Qui sommes nous ?
Jean-Pascal Thiery
@jpthiery
2
Jonathan Raffre
@nekonyuu
Exploitation de conteneurs en production
Docker ? rkt ? kezako ?
Applications livrées en conteneurs
▼ L’évolution des paradigmes d’architecture motivent de plus en plus la livraison de conteneurs applicatifs
▽ Pattern microservices
▽ The Twelve-Factor App - https://12factor.net/
▼ Applications self-contained
▽ aucune dépendance avec l’environnement système !
▽ l’ensemble de l’environnement d’exécution peut être testé et versionné avec l’application
“Build, Ship, and Run Any App, Anywhere”
Docker
3
Exploitation de conteneurs en production
Des conteneurs en production ?
4
Exploitation de conteneurs en production
Qu’attend la production ?
“Ops Needs”
▼ Métrologie
▼ Supervision
▼ Alerting
5
Exploitation de conteneurs en production
Pourquoi la production a peur ?
Les limites de l’approche actuelle
▼ Un serveur est lié à une application de manière “permanente”
▼ Métriques d’application laissées au middleware (Tomcat,
Websphere)
▼ La supervision et la métrologie sont souvent liés
▽ Utilisation d’outils “tout-en-un”: Zabbix, HPOV, Centreon, ...
6
Exploitation de conteneurs en production
▼ Outils actuels conçus autour d’une approche serveur/agent
▽ Ils montrent déjà leurs limites en contexte cloud “scale-out”
▼ Centralisation de logs peu répandue
▼ Une approche centrée sur le serveur et non sur l’application dans son ensemble !
7
Pourquoi la production a peur ?
Les limites de l’approche actuelle
Exploitation de conteneurs en production
8
Nouveau paradigme
9
Exploitation de conteneurs en production
Nouvelles contraintes
Un référentiel système instable
▼ Un changement d’approche qui s’impose
▽ “J’installe comment mon agent de supervision / métriques ?”
▽ “Comment j’audite ce que les administrateurs font dans le conteneur ?”
▼ Une machine peut héberger plusieurs conteneurs d’applications différentes
▽ “Que fait le conteneur d91457f5-89d8-45da-a307-276792240224 ?”
▽ “À quelle application correspondent ces logs ?”
10
Exploitation de conteneurs en production
▼ Un conteneur n’est qu’une unité d’exécution de l’application
▼ La disparition et l’apparition de conteneurs est un phénomène normal
▽ La mise à jour d’un conteneur passe par son remplacement
▽ L’emplacement d’un conteneur n’est pas important pour son fonctionnement
▼ Leur emplacement ne doit pas être une information importante (sauf incident matériel)
▼ Un hôte héberge maintenant plusieurs applications, dont les logs n’ont rien à voir
▽ Nécessité d’identification de chaque ligne de log
11
Pet versus Cattle
La mort de la spécificité
Exploitation de conteneurs en production
▼ Les architectures microservices profitent de ce mouvement
▽ La disponibilité d’une application ne dépend plus d’un seul “service” système
▽ Nécessité de centraliser les logs et métriques pour une vision d’ensemble
▼ Les conteneurs démarrent, s’arrêtent, sont remplacés, se déplacent de serveur en serveur
▽ Le lien application/serveur est dynamique, il doit devenir non-important
▼ Nous devons implémenter une vue globale de l’application, agnostique des serveurs !
12
Application plutôt que serveurs
Une vision d’ensemble
Exploitation de conteneurs en production
▼ Un conteneur va changer régulièrement de serveur
▼ Un conteneur ne doit pas stocker de données métier, doit être immutable
▽ Les vérifications système liées à l’application deviennent caduques
▼ Les mises à jour de sécurité doivent être fait en amont, par l’intégration continue
▼ Qu’est-ce que je dois encore vérifier sur un conteneur ?
▼ Quid d’un modèle où les conteneurs se déclarent eux même et exposent leurs métriques ?
13
Panique à bord
“Ma supervision centralisée ne sert plus à rien ?!”
Vue d’ensemble de l’application
14
Exploitation de conteneurs en production
Pourquoi ?
Sélection des informations pertinentes
▼ Se focalise sur le point important d’une plateforme: le service qu’elle fournit
▼ Exposer des informations plus pertinentes et accessibles par le métier
15
Exploitation de conteneurs en production
Agrégation de logs
Construction d’une vue d’ensemble
16
▼ Centralisation des logs à un seul endroit
▽ Facilite leur exploration
▽ Permet de corréler simplement plusieurs évènements !
▼ Événements système : syslog/rsyslog
▼ Événements conteneurs :
▽ rkt : intégration avec journald + syslog
▽ docker : plugin syslog
▽ Logging sur stdout nécessaire
Exploitation de conteneurs en production
Agrégation de logs
Extraction depuis Docker - syslog log driver
▼ $ cat /etc/docker/daemon.json
{
"log-driver": "syslog"
}
▼ Tagger un conteneur
▽ docker run --log-opt tag=my-awesome-nginx nginx:latest
17
Exploitation de conteneurs en production
Agrégation de logs
Extraction depuis rkt - journald + syslog
▼ Forward des logs journald vers syslog
▽ $ cat /etc/systemd/journald.conf
[Journal]
ForwardToSyslog=yes
18
Exploitation de conteneurs en production
Agrégation de logs
Idée : Envoi vers Kafka avec rsyslog
▼ Kafka - File de messages distribuée
▽ Garantit la remise des logs et absorbe les pics de charge
▼ rsyslog : input et output Kafka (im/omkafka) depuis la v8.7.0
19
Exploitation de conteneurs en production
rsyslog
One daemon to rule them all
▼ Connu du monde Ops et réputé stable
▽ Installé ou disponible dans toutes les distributions
▽ Meilleure adoption opérationnelle
▼ Intégration système déjà effectuée par la distribution
▽ 50% de l’intégration déjà faite
▼ Il existe d'autres options ! - beats, fluentd
20
Exploitation de conteneurs en production
$ cat /etc/rsyslog.conf
template(
name="jsonLogFormat"
type="string"
string="{
%timegenerated:::date-rfc3339,jsonf:timestamp%,
%source:::jsonf:source_host%,
"message":"%timestamp% %app-name%:%msg:::json%",
"fields":{
%syslogfacility-text:::jsonf:facility%,
%syslogseverity-text:::jsonf:severity%,
%app-name:::jsonf:program%,
%procid:::jsonf:processid%
}
}"
action(type="omkafka" topic="app_log" partitions.auto="on" broker=[ kafka.1.xebia.io ] template="jsonLogFormat")
21
rsyslog
One daemon to rule them all
Exploitation de conteneurs en production
Agrégation de logs
Indexer et exploiter ces logs
22
Exploitation de conteneurs en production
Pitfalls
Logs Waterfall
▼ “Mais à quelle application correspond ce conteneur….?”
▽ Ajout de contexte
■ machine source, id du conteneur, service (via tag)
▽ Docker intègre la plupart de ces infos dans ses logs
https://docs.docker.com/engine/admin/logging/syslog/
▼ “J’ai trop de logs !”
▽ N'envoyez pas forcément tous vos logs
▽ … mais attention à ne pas trop filtrer pour le futur
23
Exploitation de conteneurs en production
▼ “Et mon agent d’APM/NewRelic/AppDynamics ?”
▽ Certains éditeurs fournissent des agents spécifiques à Docker
▽ La plupart des frameworks de métriques fournissent des méthodes d’export vers statsd
▽ Il devient aussi à la charge de l’application de remonter les métriques
24
Récupération de métriques
Réutiliser l'existant
Exploitation de conteneurs en production
Récupération de métriques
Avoir des indicateurs métiers et techniques
▼ Les logs nous permettent de voir les évènements de manière chronologique
▽ Quid des métriques système, business ?
▼ Il reste donc le problème des applications ...
25
Exploitation de conteneurs en production
▼ Applications : via des frameworks applicatifs
▽ metrics, kamon, scales, pyformance, ...
▽ Implémentation de métriques adaptées au fonctionnel !
▼ Système, conteneurs : via des daemons système
▽ telegraf, collectd, cAdvisor, …
▽ Ces outils se chargent de récupérer les métriques système typiques : CPU, RAM, Disque, …
▼ Agrégation des métriques : Stockage de séries de temps et requêtes
▽ Prometheus, InfluxDB, Carbon/Graphite
▽ Gestion de la rétention, de l'échantillonnage et du requêtage des données
Avec quel outil ?
26
Récupération de métriques
▼ Daemon de collecte de métriques
▽ Empreinte mémoire et CPU basse (développé en C)
▽ Open-Source et maintenu
▽ Plugins divers et variés pour la collecte et l'envoi
■ Système : CPUs, RAM, Disque
■ Middlewares : Varnish, Redis, MySQL, MongoDB, ...
■ Graphite, RabbitMQ, Kafka, InfluxDB, Prometheus, ...
■ https://collectd.org/wiki/index.php/Table_of_Plugins
Exploitation de conteneurs en production
Couteau suisse des métriques
27
Exemple: collectd
Exploitation de conteneurs en production
28
Hostname "my_server"
LoadPlugin syslog
LoadPlugin cpu
LoadPlugin df
LoadPlugin load
LoadPlugin memory
LoadPlugin network
LoadPlugin write_graphite
<Plugin tcpconns>
AllPortsSummary false
LocalPort "25"
RemotePort "25"
</Plugin>
<Plugin write_graphite>
<Node "graphitenode1">
Host "my_graphite"
Prefix "my.metrics.prod"
</Node>
</Plugin>
Couteau suisse des métriques
Exemple: collectd
Exploitation de conteneurs en production
Graph !
29
Récupération de métriques
Exploitation de conteneurs en production
▼ Testez, testez, testez !
▼ Nommage de vos métriques et labellisation
▽ Les dashboards dépendent de ce nommage
▽ Attention à ne pas surcharger la normalisation, les labels sont aussi là !
30
Pitfalls
Y U NO NORMALIZE
Exploitation de conteneurs en production
31
Architecture finale
Notification de problèmes
32
L’alerting
de manière intelligente
▼ Effectuer les checks sur des points névralgiques de la plateforme
▽ Accès aux points d'entrée critiques (sur HAProxy, Traefik, …)
■ Implémentation d'un endpoint validant la santé de l'application
■ Il sera utilisé par votre orchestrateur !
▽ Vérification de la présence d’une balise validant le fonctionnement “end-to-end”
■ À prévoir dans la conception des applications !
▽ Santé de vos systèmes de cluster (Mesos, Kubernetes, Swarm, …)
■ Via les métriques collectées précédemment !
33
Exploitation de conteneurs en production
L’alerting
pour être proactif
▼ Vue d'ensemble comme base de notre alerting
▼ Discuter des métriques fonctionnelles significatives et s'y restreindre
▽ Nombre de messages traités
▽ Temps de latence “end-to-end” d’une requête
▽ Ne pas tomber dans l'excès, limiter les alertes !
34
Exploitation de conteneurs en production
L’alerting
pour être proactif
▼ Surveiller les tendances, plutôt que des valeurs absolues
▽ Nombre moyen de messages selon les périodes (“rush hour”, nuit, …)
▽ Patterns d’utilisation CPU / réseau
▽ Taux de croissance de l'occupation disque
▽ Permet d’agir avant l’incident et de réduire les faux positifs
35
Exploitation de conteneurs en production
Attention
vous pourriez vous faire mal
▼ Ne multipliez pas les outils
▼ Infrastructure as Code
▽ Terraform/CloudFormation/Google Deploy Manager
▽ Ansible/SaltStack/Chef
▼ Faites usage au maximum de templating lorsque c’est possible
▽ Kibana + paramètres
▽ http://docs.grafana.org/reference/templating/
36
Exploitation de conteneurs en production
Attention
vous pourriez vous faire mal
▼ Ne sous-estimez pas la volumétrie des données que vous allez devoir gérer :
▽ Multitude de sources de données (nombre de serveurs, d’applications)
■ Load à un instant t importante
▽ Attention à la durée de rétention (logs et métriques)
37
Exploitation de conteneurs en production
38
39
Jonathan Raffre | Jean-Pascal Thiery
40

Contenu connexe

Tendances

XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc Divad
XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc DivadXebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc Divad
XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc DivadPublicis Sapient Engineering
 
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic LadeuXebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic LadeuPublicis Sapient Engineering
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureParis Container Day
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?rfelden
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ ekino
 
Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreStephane Manciot
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Publicis Sapient Engineering
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière Cellenza
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureMicrosoft
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryDamien Goldenberg
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECSylia Baraka
 
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, LinuxYasmine Amrani
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Publicis Sapient Engineering
 

Tendances (20)

XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc Divad
XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc DivadXebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc Divad
XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc Divad
 
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic LadeuXebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse Faure
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+
 
Symposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec MicrosoftSymposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec Microsoft
 
Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvre
 
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous Delivery
 
12-Factor
12-Factor12-Factor
12-Factor
 
Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPEC
 
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 

Similaire à XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thierry et Jonathan Raffre

Monitoring de conteneurs en production - Jonathan Raffre & Jean-Pascal Thiery
Monitoring de conteneurs en production - Jonathan Raffre & Jean-Pascal ThieryMonitoring de conteneurs en production - Jonathan Raffre & Jean-Pascal Thiery
Monitoring de conteneurs en production - Jonathan Raffre & Jean-Pascal ThieryParis Container Day
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Alexandre Touret
 
Plateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallPlateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallCloudOps2005
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx FranceMarc Bojoly
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Alexandre Touret
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfHamida Rebai Trabelsi
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014Benoît de CHATEAUVIEUX
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
Volcamp 2023 - Compter les moutons à grande échelle
Volcamp 2023 - Compter les moutons à grande échelleVolcamp 2023 - Compter les moutons à grande échelle
Volcamp 2023 - Compter les moutons à grande échelleKarim Bogtob
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienRachid Zarouali
 
Saas Libre
Saas LibreSaas Libre
Saas Libregrolland
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiquesdenier
 

Similaire à XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thierry et Jonathan Raffre (20)

Monitoring de conteneurs en production - Jonathan Raffre & Jean-Pascal Thiery
Monitoring de conteneurs en production - Jonathan Raffre & Jean-Pascal ThieryMonitoring de conteneurs en production - Jonathan Raffre & Jean-Pascal Thiery
Monitoring de conteneurs en production - Jonathan Raffre & Jean-Pascal Thiery
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 
Plateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallPlateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de Montréall
 
Perf university
Perf universityPerf university
Perf university
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Volcamp 2023 - Compter les moutons à grande échelle
Volcamp 2023 - Compter les moutons à grande échelleVolcamp 2023 - Compter les moutons à grande échelle
Volcamp 2023 - Compter les moutons à grande échelle
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicien
 
Saas Libre
Saas LibreSaas Libre
Saas Libre
 
Meetup PM2 @delicious-insights
Meetup PM2 @delicious-insightsMeetup PM2 @delicious-insights
Meetup PM2 @delicious-insights
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
 

Plus de Publicis Sapient Engineering

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainPublicis Sapient Engineering
 
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurXebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurPublicis Sapient Engineering
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...Publicis Sapient Engineering
 
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin Publicis Sapient Engineering
 
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?Publicis Sapient Engineering
 
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?Publicis Sapient Engineering
 
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéXebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéPublicis Sapient Engineering
 
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...Publicis Sapient Engineering
 
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !Publicis Sapient Engineering
 
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizXebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizPublicis Sapient Engineering
 
XebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéXebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéPublicis Sapient Engineering
 
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectXebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectPublicis Sapient Engineering
 
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...Publicis Sapient Engineering
 
XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018Publicis Sapient Engineering
 
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...Publicis Sapient Engineering
 
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...Publicis Sapient Engineering
 

Plus de Publicis Sapient Engineering (20)

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
 
Xebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to CloudXebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to Cloud
 
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurXebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
 
XebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern InfrastructureXebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern Infrastructure
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
 
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
 
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
 
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
 
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéXebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
 
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
 
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
 
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizXebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
 
XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture
 
XebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéXebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilité
 
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectXebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID Connect
 
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
 
XebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an aprèsXebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an après
 
XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018
 
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
 
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
 

XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thierry et Jonathan Raffre

  • 1. Jonathan Raffre | Jean-Pascal Thiery 1
  • 2. Exploitation de conteneurs en production Qui sommes nous ? Jean-Pascal Thiery @jpthiery 2 Jonathan Raffre @nekonyuu
  • 3. Exploitation de conteneurs en production Docker ? rkt ? kezako ? Applications livrées en conteneurs ▼ L’évolution des paradigmes d’architecture motivent de plus en plus la livraison de conteneurs applicatifs ▽ Pattern microservices ▽ The Twelve-Factor App - https://12factor.net/ ▼ Applications self-contained ▽ aucune dépendance avec l’environnement système ! ▽ l’ensemble de l’environnement d’exécution peut être testé et versionné avec l’application “Build, Ship, and Run Any App, Anywhere” Docker 3
  • 4. Exploitation de conteneurs en production Des conteneurs en production ? 4
  • 5. Exploitation de conteneurs en production Qu’attend la production ? “Ops Needs” ▼ Métrologie ▼ Supervision ▼ Alerting 5
  • 6. Exploitation de conteneurs en production Pourquoi la production a peur ? Les limites de l’approche actuelle ▼ Un serveur est lié à une application de manière “permanente” ▼ Métriques d’application laissées au middleware (Tomcat, Websphere) ▼ La supervision et la métrologie sont souvent liés ▽ Utilisation d’outils “tout-en-un”: Zabbix, HPOV, Centreon, ... 6
  • 7. Exploitation de conteneurs en production ▼ Outils actuels conçus autour d’une approche serveur/agent ▽ Ils montrent déjà leurs limites en contexte cloud “scale-out” ▼ Centralisation de logs peu répandue ▼ Une approche centrée sur le serveur et non sur l’application dans son ensemble ! 7 Pourquoi la production a peur ? Les limites de l’approche actuelle
  • 8. Exploitation de conteneurs en production 8
  • 10. Exploitation de conteneurs en production Nouvelles contraintes Un référentiel système instable ▼ Un changement d’approche qui s’impose ▽ “J’installe comment mon agent de supervision / métriques ?” ▽ “Comment j’audite ce que les administrateurs font dans le conteneur ?” ▼ Une machine peut héberger plusieurs conteneurs d’applications différentes ▽ “Que fait le conteneur d91457f5-89d8-45da-a307-276792240224 ?” ▽ “À quelle application correspondent ces logs ?” 10
  • 11. Exploitation de conteneurs en production ▼ Un conteneur n’est qu’une unité d’exécution de l’application ▼ La disparition et l’apparition de conteneurs est un phénomène normal ▽ La mise à jour d’un conteneur passe par son remplacement ▽ L’emplacement d’un conteneur n’est pas important pour son fonctionnement ▼ Leur emplacement ne doit pas être une information importante (sauf incident matériel) ▼ Un hôte héberge maintenant plusieurs applications, dont les logs n’ont rien à voir ▽ Nécessité d’identification de chaque ligne de log 11 Pet versus Cattle La mort de la spécificité
  • 12. Exploitation de conteneurs en production ▼ Les architectures microservices profitent de ce mouvement ▽ La disponibilité d’une application ne dépend plus d’un seul “service” système ▽ Nécessité de centraliser les logs et métriques pour une vision d’ensemble ▼ Les conteneurs démarrent, s’arrêtent, sont remplacés, se déplacent de serveur en serveur ▽ Le lien application/serveur est dynamique, il doit devenir non-important ▼ Nous devons implémenter une vue globale de l’application, agnostique des serveurs ! 12 Application plutôt que serveurs Une vision d’ensemble
  • 13. Exploitation de conteneurs en production ▼ Un conteneur va changer régulièrement de serveur ▼ Un conteneur ne doit pas stocker de données métier, doit être immutable ▽ Les vérifications système liées à l’application deviennent caduques ▼ Les mises à jour de sécurité doivent être fait en amont, par l’intégration continue ▼ Qu’est-ce que je dois encore vérifier sur un conteneur ? ▼ Quid d’un modèle où les conteneurs se déclarent eux même et exposent leurs métriques ? 13 Panique à bord “Ma supervision centralisée ne sert plus à rien ?!”
  • 14. Vue d’ensemble de l’application 14
  • 15. Exploitation de conteneurs en production Pourquoi ? Sélection des informations pertinentes ▼ Se focalise sur le point important d’une plateforme: le service qu’elle fournit ▼ Exposer des informations plus pertinentes et accessibles par le métier 15
  • 16. Exploitation de conteneurs en production Agrégation de logs Construction d’une vue d’ensemble 16 ▼ Centralisation des logs à un seul endroit ▽ Facilite leur exploration ▽ Permet de corréler simplement plusieurs évènements ! ▼ Événements système : syslog/rsyslog ▼ Événements conteneurs : ▽ rkt : intégration avec journald + syslog ▽ docker : plugin syslog ▽ Logging sur stdout nécessaire
  • 17. Exploitation de conteneurs en production Agrégation de logs Extraction depuis Docker - syslog log driver ▼ $ cat /etc/docker/daemon.json { "log-driver": "syslog" } ▼ Tagger un conteneur ▽ docker run --log-opt tag=my-awesome-nginx nginx:latest 17
  • 18. Exploitation de conteneurs en production Agrégation de logs Extraction depuis rkt - journald + syslog ▼ Forward des logs journald vers syslog ▽ $ cat /etc/systemd/journald.conf [Journal] ForwardToSyslog=yes 18
  • 19. Exploitation de conteneurs en production Agrégation de logs Idée : Envoi vers Kafka avec rsyslog ▼ Kafka - File de messages distribuée ▽ Garantit la remise des logs et absorbe les pics de charge ▼ rsyslog : input et output Kafka (im/omkafka) depuis la v8.7.0 19
  • 20. Exploitation de conteneurs en production rsyslog One daemon to rule them all ▼ Connu du monde Ops et réputé stable ▽ Installé ou disponible dans toutes les distributions ▽ Meilleure adoption opérationnelle ▼ Intégration système déjà effectuée par la distribution ▽ 50% de l’intégration déjà faite ▼ Il existe d'autres options ! - beats, fluentd 20
  • 21. Exploitation de conteneurs en production $ cat /etc/rsyslog.conf template( name="jsonLogFormat" type="string" string="{ %timegenerated:::date-rfc3339,jsonf:timestamp%, %source:::jsonf:source_host%, "message":"%timestamp% %app-name%:%msg:::json%", "fields":{ %syslogfacility-text:::jsonf:facility%, %syslogseverity-text:::jsonf:severity%, %app-name:::jsonf:program%, %procid:::jsonf:processid% } }" action(type="omkafka" topic="app_log" partitions.auto="on" broker=[ kafka.1.xebia.io ] template="jsonLogFormat") 21 rsyslog One daemon to rule them all
  • 22. Exploitation de conteneurs en production Agrégation de logs Indexer et exploiter ces logs 22
  • 23. Exploitation de conteneurs en production Pitfalls Logs Waterfall ▼ “Mais à quelle application correspond ce conteneur….?” ▽ Ajout de contexte ■ machine source, id du conteneur, service (via tag) ▽ Docker intègre la plupart de ces infos dans ses logs https://docs.docker.com/engine/admin/logging/syslog/ ▼ “J’ai trop de logs !” ▽ N'envoyez pas forcément tous vos logs ▽ … mais attention à ne pas trop filtrer pour le futur 23
  • 24. Exploitation de conteneurs en production ▼ “Et mon agent d’APM/NewRelic/AppDynamics ?” ▽ Certains éditeurs fournissent des agents spécifiques à Docker ▽ La plupart des frameworks de métriques fournissent des méthodes d’export vers statsd ▽ Il devient aussi à la charge de l’application de remonter les métriques 24 Récupération de métriques Réutiliser l'existant
  • 25. Exploitation de conteneurs en production Récupération de métriques Avoir des indicateurs métiers et techniques ▼ Les logs nous permettent de voir les évènements de manière chronologique ▽ Quid des métriques système, business ? ▼ Il reste donc le problème des applications ... 25
  • 26. Exploitation de conteneurs en production ▼ Applications : via des frameworks applicatifs ▽ metrics, kamon, scales, pyformance, ... ▽ Implémentation de métriques adaptées au fonctionnel ! ▼ Système, conteneurs : via des daemons système ▽ telegraf, collectd, cAdvisor, … ▽ Ces outils se chargent de récupérer les métriques système typiques : CPU, RAM, Disque, … ▼ Agrégation des métriques : Stockage de séries de temps et requêtes ▽ Prometheus, InfluxDB, Carbon/Graphite ▽ Gestion de la rétention, de l'échantillonnage et du requêtage des données Avec quel outil ? 26 Récupération de métriques
  • 27. ▼ Daemon de collecte de métriques ▽ Empreinte mémoire et CPU basse (développé en C) ▽ Open-Source et maintenu ▽ Plugins divers et variés pour la collecte et l'envoi ■ Système : CPUs, RAM, Disque ■ Middlewares : Varnish, Redis, MySQL, MongoDB, ... ■ Graphite, RabbitMQ, Kafka, InfluxDB, Prometheus, ... ■ https://collectd.org/wiki/index.php/Table_of_Plugins Exploitation de conteneurs en production Couteau suisse des métriques 27 Exemple: collectd
  • 28. Exploitation de conteneurs en production 28 Hostname "my_server" LoadPlugin syslog LoadPlugin cpu LoadPlugin df LoadPlugin load LoadPlugin memory LoadPlugin network LoadPlugin write_graphite <Plugin tcpconns> AllPortsSummary false LocalPort "25" RemotePort "25" </Plugin> <Plugin write_graphite> <Node "graphitenode1"> Host "my_graphite" Prefix "my.metrics.prod" </Node> </Plugin> Couteau suisse des métriques Exemple: collectd
  • 29. Exploitation de conteneurs en production Graph ! 29 Récupération de métriques
  • 30. Exploitation de conteneurs en production ▼ Testez, testez, testez ! ▼ Nommage de vos métriques et labellisation ▽ Les dashboards dépendent de ce nommage ▽ Attention à ne pas surcharger la normalisation, les labels sont aussi là ! 30 Pitfalls Y U NO NORMALIZE
  • 31. Exploitation de conteneurs en production 31 Architecture finale
  • 33. L’alerting de manière intelligente ▼ Effectuer les checks sur des points névralgiques de la plateforme ▽ Accès aux points d'entrée critiques (sur HAProxy, Traefik, …) ■ Implémentation d'un endpoint validant la santé de l'application ■ Il sera utilisé par votre orchestrateur ! ▽ Vérification de la présence d’une balise validant le fonctionnement “end-to-end” ■ À prévoir dans la conception des applications ! ▽ Santé de vos systèmes de cluster (Mesos, Kubernetes, Swarm, …) ■ Via les métriques collectées précédemment ! 33 Exploitation de conteneurs en production
  • 34. L’alerting pour être proactif ▼ Vue d'ensemble comme base de notre alerting ▼ Discuter des métriques fonctionnelles significatives et s'y restreindre ▽ Nombre de messages traités ▽ Temps de latence “end-to-end” d’une requête ▽ Ne pas tomber dans l'excès, limiter les alertes ! 34 Exploitation de conteneurs en production
  • 35. L’alerting pour être proactif ▼ Surveiller les tendances, plutôt que des valeurs absolues ▽ Nombre moyen de messages selon les périodes (“rush hour”, nuit, …) ▽ Patterns d’utilisation CPU / réseau ▽ Taux de croissance de l'occupation disque ▽ Permet d’agir avant l’incident et de réduire les faux positifs 35 Exploitation de conteneurs en production
  • 36. Attention vous pourriez vous faire mal ▼ Ne multipliez pas les outils ▼ Infrastructure as Code ▽ Terraform/CloudFormation/Google Deploy Manager ▽ Ansible/SaltStack/Chef ▼ Faites usage au maximum de templating lorsque c’est possible ▽ Kibana + paramètres ▽ http://docs.grafana.org/reference/templating/ 36 Exploitation de conteneurs en production
  • 37. Attention vous pourriez vous faire mal ▼ Ne sous-estimez pas la volumétrie des données que vous allez devoir gérer : ▽ Multitude de sources de données (nombre de serveurs, d’applications) ■ Load à un instant t importante ▽ Attention à la durée de rétention (logs et métriques) 37 Exploitation de conteneurs en production
  • 38. 38
  • 39. 39
  • 40. Jonathan Raffre | Jean-Pascal Thiery 40