SlideShare a Scribd company logo
1 of 43
Download to read offline
#ContainerDayFR
Jonathan Raffre et Jean-Pascal Thiery
Monitoringde conteneurs en production
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Agenda
▼ Qu’avons-nous besoin de savoir sur une plateforme ?
▼ Comment y répondre ?
▼ … et dans le cas de conteneurs ?
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Qui sommes nous ?
Jonathan Raffre Jean-Pascal Thiery
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Ce que nous ne sommes pas
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Nos besoins d’exploitation
La métrologie
▼ “Je veux des métriques numériques sur l’état de la plateforme”
▼ Techniques
▽ Utilisation CPU, Disque, Réseau, ...
▼ Business
▽ Nombre de requêtes sur le serveur
▽ Nombre de commandes
▽ …
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Nos besoins d’exploitation
Le monitoring
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Nos besoins d’exploitation
Le monitoring
▼ “Je veux connaître les évènements majeurs ou à risque d’une plateforme, de manière
chronologique”
▽ L’application ‘awesomeAppOfTheDead’ a démarré à 9h03
▽ Le temps de réponse de l’application ‘awesomeAppOfTheDead’ est de
22ms à 9h25
▽ Le temps de réponse de l’application ‘awesomeAppOfTheDead’ est de
400ms à 10h02
▽ L’application ‘awesomeAppOfTheDead’ à rencontré une erreur de
connexion à la base de données à 10h05
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Nos besoins d’exploitation
L’alerting
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Nos besoins d’exploitation
L’alerting
▼ “Je veux être alerté des états anormaux et critiques de la plateforme,
que ce soit à partir des métriques ou des données de monitoring”
▽ Il reste moins de 5% d’espace disque sur une machine.
▽ Il n’y a plus de commande depuis plus de 20 mins (alors
qu’il y a toujours de l’activité normalement)
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Du conteneur dans nos architectures
Paris Container Day 2017 #ContainerDayFR
Monitoring de conteneurs en production
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Avant la mise en boîte
Le monitoring
▼ Agents de supervision contrôlés par un serveur
▽ Nouveau serveur -> opération sur le serveur de supervision
▼ Équilibre entre :
▽ Granularité des checks contre généricité
■ Vérification d’un point de montage inexistant ?
■ Seuils d’occupation RAM inadaptés pour un SGBD ?
▽ Complexité de maintenance
■ Cas spécifiques à maintenir
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Avant la mise en boîte
Le monitoring
▼ Monitoring des serveurs d’applications (Tomcat, Websphere, …)
▽ Déport des métriques de l’application vers le middleware
▽ Métriques pas toujours adaptées
▼ Centralisation de logs peu répandue
▽ Comment trouver mon erreur métier parmi les 40
serveurs de l’application ?
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Avant la mise en boîte
La métrologie
▼ Un serveur est lié à une application de manière “permanente”
▽ “Le serveur slvfrcrm01 héberge le CRM de la société”
▽ On “sait” que les logs de ce serveur sont liés au CRM
▼ Le monitoring et la métrologie sont souvent liés
▽ Utilisation d’outils “tout-en-un”: Zabbix, HPOV
Paris Container Day 2017 #ContainerDayFR
Monitoring de conteneurs en production
Prêt pour la prod ?
#ContainerDayFRParis Container Day 2017
Et le conteneur fut
Ce qui change
▼ Un conteneur contient une version allégée de l’OS
▽ Pas de noyau, de système de démarrage, …
▽ “J’installe comment mon agent Zabbix ?”
▽ “Il est où init.d ? bash?”
▽ “Comment j’audite ce que les utilisateurs font dans le conteneur ?”
▼ Une machine peut héberger plusieurs conteneurs d’applications différentes
▽ “Que fait le conteneur d91457f5-89d8-45da-a307-276792240224 ?”
▽ “A quelle application correspondent ces logs ?”
#ContainerDayFRParis Container Day 2017
Et le conteneur fut
Ce qui change
▼ Les architectures microservices profitent de ce mouvement
▽ Myriade de conteneurs possédant chacun une fonction métier
▽ Chaque log possède à lui seul peu de valeur
▽ 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
Paris Container Day 2017 #ContainerDayFR
Monitoring de conteneurs en production
#ContainerDayFRParis Container Day 2017
Au secours ! Tout ne fait que changer !
Un changement de paradigme
▼ La disparition et l’apparition de conteneurs est un phénomène normal
▽ La notion de “pet versus cattle” est en partie vraie ici
▽ Les conteneurs font partie du troupeau
■ Ils peuvent être remplacés à tout moment !
■ La mise à jour d’un conteneur passe par son remplacement
▼ Un hôte héberge maintenant plusieurs apps, dont les logs n’ont rien à voir
▽ Nécessité d’identification de chaque ligne de log
#ContainerDayFRParis Container Day 2017
Au secours ! Tout ne fait que changer !
Un changement de paradigme
▼ Mais comment je déclare tout cela dans mon monitoring/alerting ?!
▽ Un service va changer régulièrement d’adresse IP et de serveur
▽ Certaines vérifications n’ont plus de sens
■ Espace disque dans un conteneur ?
■ Mises à jour de sécurité dans un conteneur ?
▽ 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 ?
#ContainerDayFRParis Container Day 2017
Au secours ! Tout ne fait que changer !
Un changement de paradigme
▼ “Comment j’installe mon agent de collecte de métriques dans vos conteneurs ?”
▽ Est-ce réellement nécessaire qu’il soit dans le conteneur ?
▽ Et si l’on tentait de collecter ces infos depuis l’hôte ?
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Rendez-moi la vue
Construction d’une vue d’ensemble
▼ L'agrégation de l’ensemble des logs va nous permettre d’avoir une vision
d’ensemble
▼ Plusieurs outils sont disponibles pour l’acheminement de ces logs
▽ Events système: syslog/rsyslog
▽ Events conteneurs:
■ rkt: intégration avec journald + syslog
■ docker: plugin syslog
■ chacun fournit des capacités de tags sur les logs générés
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Rendez-moi la vue
Construction d’une vue d’ensemble
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Intégration
Docker + syslog log driver
▼ /etc/docker/daemon.json
▼ Les conteneurs ont des noms sans contexte (UUIDs, hashes…)
▽ docker run --log-opt tag=my-awesome-nginx
nginx:latest
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Intégration
rkt + journald + syslog
▼ “Forward” des logs journald vers syslog
▽ /etc/systemd/journald.conf
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Intégration
Système/Docker/rkt -> rsyslog -> Kafka
▼ rsyslog: omkafka depuis v8.7.0
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Intégration
One daemon to rule them all
▼ Pourquoi rsyslog ?
▽ Installé par défaut sur toutes les distributions Linux
▽ Protocole standard et flexible
▽ Intégration système déjà effectuée par la distribution
■ 50% de l’intégration déjà faite
▼ Autres options ?
▽ logstash-shipper
▽ fluentd
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Intégration
Les pitfalls du logging
▼ “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 !”
▽ filtrez tout log qui ne fournit pas d’info utile
▽ … mais attention à ne pas trop filtrer pour le futur
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Mais je veux des chiffres !
Agrégation de métriques
▼ Les logs nous permet de voir les évènements de manière chronologique
▽ Quid des métriques système, business ?
▼ “Mais tu nous dis qu’on ne peut pas mettre d’agents dans les conteneurs…”
▽ Docker/rkt fournissent des APIs pour les métriques système
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Mais je veux des chiffres !
Agrégation de métriques
▼ “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
■ metrics, kamon, datadog, node-statsd, …
▽ Il devient aussi à la charge de l’application de remonter les métriques
■ Contrôle plus fin sur les métriques que l’on veut voir !
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Mais je veux des chiffres !
Agrégation de métriques
▼ Comment récupérer et centraliser ces métriques ?
▽ collectd/telegraf/prometheus pour la récupération
■ listener statsd, collecte directe, ...
▽ InfluxDB/Prometheus/Carbon pour le stockage de métriques
▽ Prometheus/Grafana/Chronograf pour la visualisation
▽ possible de “mix’n’match”
▽ chacun fournit des capacités de tags sur les métriques collectées !
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Mais je veux des chiffres !
Voir tout, tout le temps
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
La collect(d)e
▼ collectd: daemon de collecte de métriques
▽ Codé en C
▽ Open source
▽ Communauté active
▽ beaucoup de plugins/connecteurs
■ CPUs, RAMs, Disk
■ Varnish, Redis
■ Graphite, Rabbitmq, kafka, InfluxDB, ...
■ https://collectd.org/wiki/index.php/Table_of_Plugins
des métriques
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
La collect(d)e
des métriques
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
La métrologie
ce qu’il ne faut pas oublier
▼ Choisir la bonne base de données selon votre besoin
▼ Attention au nommage de vos métriques et leur labellisation
▽ En cas de modification, vous devrez refaire TOUS vos dashboards
▽ => Normalisation des noms de métriques
■ Ne pas surcharger la normalisation, les labels sont aussi là !
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
L’alerting
pour être proactif
▼ Discuter des métriques fonctionnelles significatives
▽ Nombre de messages traités
▽ Temps de latence “end-to-end” d’une requête
▼ 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
▽ Permet d’agir avant l’incident et de réduire les faux positifs
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
L’alerting
de manière intelligente
▼ Effectuer les checks sur des points névralgiques de la plateforme
▽ Accès aux endpoints critiques (sur HAProxy, Traefik, …)
▽ Vérification de la présence d’une balise validant le fonctionnement
“end-to-end”
▽ Santé de vos systèmes de cluster (Mesos, K8S, Swarm, …)
Paris Container Day 2017 #ContainerDayFR
Monitoring de conteneurs en production
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Attention
vous pourriez vous faire mal
▼ Attention de ne pas tomber dans l’extrême de l’alerting
▽ ne pas faire de checks détaillés par conteneur
■ trop d’informations tue l’information
■ privilégier les visions d’ensemble, concises et
simplifiées
▽ Healthchecks déjà effectués par vos orchestrateurs !
#ContainerDayFRParis Container Day 2017
Monitoring de conteneurs en production
Attention
vous pourriez vous faire mal
▼ Ne multipliez pas les outils
▼ Automatiser votre infrastructure avec de l’Infra As Code
▽ Terraform/CloudFormation/Google Deploy Manager
▽ Ansible/Puppet/Salt Stack/Chef
▼ Faites usage au maximum de templating lorsque c’est possible
▽ Kibana + paramètres
▽ http://docs.grafana.org/reference/templating/
#ContainerDayFRParis Container Day 2017
Monitoring 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 source de données (nombre de serveurs, d’applications)
■ Une charge à un instant t importante
▽ La durée de la rétention des données (logs et métriques)
#ContainerDayFR
Monitoring de conteneurs en production
Questions ?
#ContainerDayFR
Jonathan Raffre et Jean-Pascal Thiery
Monitoringde conteneurs en production

More Related Content

What's hot

Migration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers git
Geoffrey Bachelet
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Ludovic Piot
 

What's hot (18)

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 !
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
 
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)
 
Chroniques de formation : Scaling Code Labs avec Swarm et Compose
Chroniques de formation : Scaling Code Labs avec Swarm et ComposeChroniques de formation : Scaling Code Labs avec Swarm et Compose
Chroniques de formation : Scaling Code Labs avec Swarm et Compose
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016
Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016
Rancher, l'orchestrateur qui vous veut du bien -- BreizhCamp2016
 
MariaDB à l'assaut des developpeurs
MariaDB à l'assaut des developpeursMariaDB à l'assaut des developpeurs
MariaDB à l'assaut des developpeurs
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
 
Paris Container Day 2016 : De la construction au déploiement d’applications...
Paris Container Day 2016 :  De la construction au déploiement d’applications...Paris Container Day 2016 :  De la construction au déploiement d’applications...
Paris Container Day 2016 : De la construction au déploiement d’applications...
 
Migration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers git
 
Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?
 
Devoxx 17 - Orchestration de conteneurs : le choix des armes !
Devoxx 17 - Orchestration de conteneurs : le choix des armes !Devoxx 17 - Orchestration de conteneurs : le choix des armes !
Devoxx 17 - Orchestration de conteneurs : le choix des armes !
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Gdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetesGdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetes
 
Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?
 
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
 
20200225 bbl-docker-packaging-natif
20200225 bbl-docker-packaging-natif20200225 bbl-docker-packaging-natif
20200225 bbl-docker-packaging-natif
 

Viewers also liked

The missing piece : when Docker networking and services finally unleashes so...
 The missing piece : when Docker networking and services finally unleashes so... The missing piece : when Docker networking and services finally unleashes so...
The missing piece : when Docker networking and services finally unleashes so...
Adrien Blind
 
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
Adrien Blind
 

Viewers also liked (20)

Full stack automation - TIAD 2015
Full stack automation - TIAD 2015Full stack automation - TIAD 2015
Full stack automation - TIAD 2015
 
Docker: Redistributing DevOps cards, on the way to PaaS
Docker: Redistributing DevOps cards, on the way to PaaSDocker: Redistributing DevOps cards, on the way to PaaS
Docker: Redistributing DevOps cards, on the way to PaaS
 
Identity & Access Management in the cloud
Identity & Access Management in the cloudIdentity & Access Management in the cloud
Identity & Access Management in the cloud
 
Dockercon Europe 2014 - Continuous Delivery leveraging on Docker CaaS
Dockercon Europe 2014 - Continuous Delivery leveraging on Docker CaaSDockercon Europe 2014 - Continuous Delivery leveraging on Docker CaaS
Dockercon Europe 2014 - Continuous Delivery leveraging on Docker CaaS
 
Skynet vs planet of apes
Skynet vs planet of apesSkynet vs planet of apes
Skynet vs planet of apes
 
Docker cloud hybridation & orchestration
Docker cloud hybridation & orchestrationDocker cloud hybridation & orchestration
Docker cloud hybridation & orchestration
 
When Docker Engine 1.12 features unleashes software architecture
When Docker Engine 1.12 features unleashes software architectureWhen Docker Engine 1.12 features unleashes software architecture
When Docker Engine 1.12 features unleashes software architecture
 
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
 
The missing piece : when Docker networking and services finally unleashes so...
 The missing piece : when Docker networking and services finally unleashes so... The missing piece : when Docker networking and services finally unleashes so...
The missing piece : when Docker networking and services finally unleashes so...
 
Introduction to Unikernels at first Paris Unikernels meetup
Introduction to Unikernels at first Paris Unikernels meetupIntroduction to Unikernels at first Paris Unikernels meetup
Introduction to Unikernels at first Paris Unikernels meetup
 
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
 
Petit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projetsPetit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projets
 
DevOps at scale: what we did, what we learned at Societe Generale
DevOps at scale: what we did, what we learned at Societe GeneraleDevOps at scale: what we did, what we learned at Societe Generale
DevOps at scale: what we did, what we learned at Societe Generale
 
Continous delivery at docker age
Continous delivery at docker ageContinous delivery at docker age
Continous delivery at docker age
 
Living the Nomadic life - Nic Jackson
Living the Nomadic life - Nic JacksonLiving the Nomadic life - Nic Jackson
Living the Nomadic life - Nic Jackson
 
Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]
Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]
Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]
 
Advanced Task Scheduling with Amazon ECS - Julien Simon
Advanced Task Scheduling with Amazon ECS - Julien SimonAdvanced Task Scheduling with Amazon ECS - Julien Simon
Advanced Task Scheduling with Amazon ECS - Julien Simon
 
Docker, cornerstone of an hybrid cloud?
Docker, cornerstone of an hybrid cloud?Docker, cornerstone of an hybrid cloud?
Docker, cornerstone of an hybrid cloud?
 
Production FS: Adapt or die - Claudia Beresford & Tiago Scolar
Production FS: Adapt or die - Claudia Beresford & Tiago ScolarProduction FS: Adapt or die - Claudia Beresford & Tiago Scolar
Production FS: Adapt or die - Claudia Beresford & Tiago Scolar
 
There is no container - Ori Pekelman
There is no container - Ori PekelmanThere is no container - Ori Pekelman
There is no container - Ori Pekelman
 

Similar to Monitoring de conteneurs en production - Jonathan Raffre & Jean-Pascal Thiery

Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
boulonvert
 
MongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptxMongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptx
MongoDB
 
Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6
MongoDB
 
Enib cours c.a.i. web - séance #6 : autour de la webapp
Enib   cours c.a.i. web - séance #6 : autour de la webappEnib   cours c.a.i. web - séance #6 : autour de la webapp
Enib cours c.a.i. web - séance #6 : autour de la webapp
Horacio Gonzalez
 

Similar to Monitoring de conteneurs en production - Jonathan Raffre & Jean-Pascal Thiery (20)

XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
 
REX Cassandra et Spark au service de la musique en ligne (Français)
REX Cassandra et Spark au service de la musique en ligne (Français)REX Cassandra et Spark au service de la musique en ligne (Français)
REX Cassandra et Spark au service de la musique en ligne (Français)
 
API Management
API ManagementAPI Management
API Management
 
Denodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie APIDenodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie API
 
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
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
meetup devops aix marseille du 16/05/23
meetup devops aix marseille du 16/05/23meetup devops aix marseille du 16/05/23
meetup devops aix marseille du 16/05/23
 
Microservices IRL - Devoxx-fr 2016
Microservices IRL - Devoxx-fr 2016Microservices IRL - Devoxx-fr 2016
Microservices IRL - Devoxx-fr 2016
 
Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...
 
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
 
MongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptxMongoDB 3.6 Customer Deck pptx.pptx
MongoDB 3.6 Customer Deck pptx.pptx
 
Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6
 
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOCore Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
 
Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?
 
Ippon: Doing multi-criteria queries on a Cassandra application (Français)
Ippon: Doing multi-criteria queries on a Cassandra application (Français)Ippon: Doing multi-criteria queries on a Cassandra application (Français)
Ippon: Doing multi-criteria queries on a Cassandra application (Français)
 
Requêtes multi-critères avec Cassandra
Requêtes multi-critères avec CassandraRequêtes multi-critères avec Cassandra
Requêtes multi-critères avec Cassandra
 
Enib cours c.a.i. web - séance #6 : autour de la webapp
Enib   cours c.a.i. web - séance #6 : autour de la webappEnib   cours c.a.i. web - séance #6 : autour de la webapp
Enib cours c.a.i. web - séance #6 : autour de la webapp
 
Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...
 
Cas d'étude - Zabbix Toulouse #1 - ZUG
Cas d'étude - Zabbix Toulouse #1 - ZUGCas d'étude - Zabbix Toulouse #1 - ZUG
Cas d'étude - Zabbix Toulouse #1 - ZUG
 

Monitoring de conteneurs en production - Jonathan Raffre & Jean-Pascal Thiery

  • 1. #ContainerDayFR Jonathan Raffre et Jean-Pascal Thiery Monitoringde conteneurs en production
  • 2. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Agenda ▼ Qu’avons-nous besoin de savoir sur une plateforme ? ▼ Comment y répondre ? ▼ … et dans le cas de conteneurs ?
  • 3. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Qui sommes nous ? Jonathan Raffre Jean-Pascal Thiery
  • 4. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Ce que nous ne sommes pas
  • 5. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Nos besoins d’exploitation La métrologie ▼ “Je veux des métriques numériques sur l’état de la plateforme” ▼ Techniques ▽ Utilisation CPU, Disque, Réseau, ... ▼ Business ▽ Nombre de requêtes sur le serveur ▽ Nombre de commandes ▽ …
  • 6. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Nos besoins d’exploitation Le monitoring
  • 7. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Nos besoins d’exploitation Le monitoring ▼ “Je veux connaître les évènements majeurs ou à risque d’une plateforme, de manière chronologique” ▽ L’application ‘awesomeAppOfTheDead’ a démarré à 9h03 ▽ Le temps de réponse de l’application ‘awesomeAppOfTheDead’ est de 22ms à 9h25 ▽ Le temps de réponse de l’application ‘awesomeAppOfTheDead’ est de 400ms à 10h02 ▽ L’application ‘awesomeAppOfTheDead’ à rencontré une erreur de connexion à la base de données à 10h05
  • 8. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Nos besoins d’exploitation L’alerting
  • 9. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Nos besoins d’exploitation L’alerting ▼ “Je veux être alerté des états anormaux et critiques de la plateforme, que ce soit à partir des métriques ou des données de monitoring” ▽ Il reste moins de 5% d’espace disque sur une machine. ▽ Il n’y a plus de commande depuis plus de 20 mins (alors qu’il y a toujours de l’activité normalement)
  • 10. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Du conteneur dans nos architectures
  • 11. Paris Container Day 2017 #ContainerDayFR Monitoring de conteneurs en production
  • 12. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Avant la mise en boîte Le monitoring ▼ Agents de supervision contrôlés par un serveur ▽ Nouveau serveur -> opération sur le serveur de supervision ▼ Équilibre entre : ▽ Granularité des checks contre généricité ■ Vérification d’un point de montage inexistant ? ■ Seuils d’occupation RAM inadaptés pour un SGBD ? ▽ Complexité de maintenance ■ Cas spécifiques à maintenir
  • 13. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Avant la mise en boîte Le monitoring ▼ Monitoring des serveurs d’applications (Tomcat, Websphere, …) ▽ Déport des métriques de l’application vers le middleware ▽ Métriques pas toujours adaptées ▼ Centralisation de logs peu répandue ▽ Comment trouver mon erreur métier parmi les 40 serveurs de l’application ?
  • 14. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Avant la mise en boîte La métrologie ▼ Un serveur est lié à une application de manière “permanente” ▽ “Le serveur slvfrcrm01 héberge le CRM de la société” ▽ On “sait” que les logs de ce serveur sont liés au CRM ▼ Le monitoring et la métrologie sont souvent liés ▽ Utilisation d’outils “tout-en-un”: Zabbix, HPOV
  • 15. Paris Container Day 2017 #ContainerDayFR Monitoring de conteneurs en production Prêt pour la prod ?
  • 16. #ContainerDayFRParis Container Day 2017 Et le conteneur fut Ce qui change ▼ Un conteneur contient une version allégée de l’OS ▽ Pas de noyau, de système de démarrage, … ▽ “J’installe comment mon agent Zabbix ?” ▽ “Il est où init.d ? bash?” ▽ “Comment j’audite ce que les utilisateurs font dans le conteneur ?” ▼ Une machine peut héberger plusieurs conteneurs d’applications différentes ▽ “Que fait le conteneur d91457f5-89d8-45da-a307-276792240224 ?” ▽ “A quelle application correspondent ces logs ?”
  • 17. #ContainerDayFRParis Container Day 2017 Et le conteneur fut Ce qui change ▼ Les architectures microservices profitent de ce mouvement ▽ Myriade de conteneurs possédant chacun une fonction métier ▽ Chaque log possède à lui seul peu de valeur ▽ 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
  • 18. Paris Container Day 2017 #ContainerDayFR Monitoring de conteneurs en production
  • 19. #ContainerDayFRParis Container Day 2017 Au secours ! Tout ne fait que changer ! Un changement de paradigme ▼ La disparition et l’apparition de conteneurs est un phénomène normal ▽ La notion de “pet versus cattle” est en partie vraie ici ▽ Les conteneurs font partie du troupeau ■ Ils peuvent être remplacés à tout moment ! ■ La mise à jour d’un conteneur passe par son remplacement ▼ Un hôte héberge maintenant plusieurs apps, dont les logs n’ont rien à voir ▽ Nécessité d’identification de chaque ligne de log
  • 20. #ContainerDayFRParis Container Day 2017 Au secours ! Tout ne fait que changer ! Un changement de paradigme ▼ Mais comment je déclare tout cela dans mon monitoring/alerting ?! ▽ Un service va changer régulièrement d’adresse IP et de serveur ▽ Certaines vérifications n’ont plus de sens ■ Espace disque dans un conteneur ? ■ Mises à jour de sécurité dans un conteneur ? ▽ 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 ?
  • 21. #ContainerDayFRParis Container Day 2017 Au secours ! Tout ne fait que changer ! Un changement de paradigme ▼ “Comment j’installe mon agent de collecte de métriques dans vos conteneurs ?” ▽ Est-ce réellement nécessaire qu’il soit dans le conteneur ? ▽ Et si l’on tentait de collecter ces infos depuis l’hôte ?
  • 22. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Rendez-moi la vue Construction d’une vue d’ensemble ▼ L'agrégation de l’ensemble des logs va nous permettre d’avoir une vision d’ensemble ▼ Plusieurs outils sont disponibles pour l’acheminement de ces logs ▽ Events système: syslog/rsyslog ▽ Events conteneurs: ■ rkt: intégration avec journald + syslog ■ docker: plugin syslog ■ chacun fournit des capacités de tags sur les logs générés
  • 23. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Rendez-moi la vue Construction d’une vue d’ensemble
  • 24. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Intégration Docker + syslog log driver ▼ /etc/docker/daemon.json ▼ Les conteneurs ont des noms sans contexte (UUIDs, hashes…) ▽ docker run --log-opt tag=my-awesome-nginx nginx:latest
  • 25. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Intégration rkt + journald + syslog ▼ “Forward” des logs journald vers syslog ▽ /etc/systemd/journald.conf
  • 26. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Intégration Système/Docker/rkt -> rsyslog -> Kafka ▼ rsyslog: omkafka depuis v8.7.0
  • 27. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Intégration One daemon to rule them all ▼ Pourquoi rsyslog ? ▽ Installé par défaut sur toutes les distributions Linux ▽ Protocole standard et flexible ▽ Intégration système déjà effectuée par la distribution ■ 50% de l’intégration déjà faite ▼ Autres options ? ▽ logstash-shipper ▽ fluentd
  • 28. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Intégration Les pitfalls du logging ▼ “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 !” ▽ filtrez tout log qui ne fournit pas d’info utile ▽ … mais attention à ne pas trop filtrer pour le futur
  • 29. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Mais je veux des chiffres ! Agrégation de métriques ▼ Les logs nous permet de voir les évènements de manière chronologique ▽ Quid des métriques système, business ? ▼ “Mais tu nous dis qu’on ne peut pas mettre d’agents dans les conteneurs…” ▽ Docker/rkt fournissent des APIs pour les métriques système
  • 30. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Mais je veux des chiffres ! Agrégation de métriques ▼ “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 ■ metrics, kamon, datadog, node-statsd, … ▽ Il devient aussi à la charge de l’application de remonter les métriques ■ Contrôle plus fin sur les métriques que l’on veut voir !
  • 31. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Mais je veux des chiffres ! Agrégation de métriques ▼ Comment récupérer et centraliser ces métriques ? ▽ collectd/telegraf/prometheus pour la récupération ■ listener statsd, collecte directe, ... ▽ InfluxDB/Prometheus/Carbon pour le stockage de métriques ▽ Prometheus/Grafana/Chronograf pour la visualisation ▽ possible de “mix’n’match” ▽ chacun fournit des capacités de tags sur les métriques collectées !
  • 32. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Mais je veux des chiffres ! Voir tout, tout le temps
  • 33. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production La collect(d)e ▼ collectd: daemon de collecte de métriques ▽ Codé en C ▽ Open source ▽ Communauté active ▽ beaucoup de plugins/connecteurs ■ CPUs, RAMs, Disk ■ Varnish, Redis ■ Graphite, Rabbitmq, kafka, InfluxDB, ... ■ https://collectd.org/wiki/index.php/Table_of_Plugins des métriques
  • 34. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production La collect(d)e des métriques
  • 35. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production La métrologie ce qu’il ne faut pas oublier ▼ Choisir la bonne base de données selon votre besoin ▼ Attention au nommage de vos métriques et leur labellisation ▽ En cas de modification, vous devrez refaire TOUS vos dashboards ▽ => Normalisation des noms de métriques ■ Ne pas surcharger la normalisation, les labels sont aussi là !
  • 36. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production L’alerting pour être proactif ▼ Discuter des métriques fonctionnelles significatives ▽ Nombre de messages traités ▽ Temps de latence “end-to-end” d’une requête ▼ 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 ▽ Permet d’agir avant l’incident et de réduire les faux positifs
  • 37. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production L’alerting de manière intelligente ▼ Effectuer les checks sur des points névralgiques de la plateforme ▽ Accès aux endpoints critiques (sur HAProxy, Traefik, …) ▽ Vérification de la présence d’une balise validant le fonctionnement “end-to-end” ▽ Santé de vos systèmes de cluster (Mesos, K8S, Swarm, …)
  • 38. Paris Container Day 2017 #ContainerDayFR Monitoring de conteneurs en production
  • 39. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Attention vous pourriez vous faire mal ▼ Attention de ne pas tomber dans l’extrême de l’alerting ▽ ne pas faire de checks détaillés par conteneur ■ trop d’informations tue l’information ■ privilégier les visions d’ensemble, concises et simplifiées ▽ Healthchecks déjà effectués par vos orchestrateurs !
  • 40. #ContainerDayFRParis Container Day 2017 Monitoring de conteneurs en production Attention vous pourriez vous faire mal ▼ Ne multipliez pas les outils ▼ Automatiser votre infrastructure avec de l’Infra As Code ▽ Terraform/CloudFormation/Google Deploy Manager ▽ Ansible/Puppet/Salt Stack/Chef ▼ Faites usage au maximum de templating lorsque c’est possible ▽ Kibana + paramètres ▽ http://docs.grafana.org/reference/templating/
  • 41. #ContainerDayFRParis Container Day 2017 Monitoring 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 source de données (nombre de serveurs, d’applications) ■ Une charge à un instant t importante ▽ La durée de la rétention des données (logs et métriques)
  • 42. #ContainerDayFR Monitoring de conteneurs en production Questions ?
  • 43. #ContainerDayFR Jonathan Raffre et Jean-Pascal Thiery Monitoringde conteneurs en production