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

43
#ContainerDayFR Jonathan Raffre et Jean-Pascal Thiery Monitoring de conteneurs en production

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

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

#ContainerDayFR

Jonathan Raffre et Jean-Pascal Thiery

Monitoring de conteneurs en production

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

#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 ?

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Qui sommes nous ?

Jonathan Raffre Jean-Pascal Thiery

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Ce que nous ne sommes pas

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Nos besoins d’exploitationLa 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

▽ …

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Nos besoins d’exploitationLe monitoring

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Nos besoins d’exploitationLe 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

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Nos besoins d’exploitationL’alerting

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Nos besoins d’exploitationL’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)

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Du conteneur dans nos architectures

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

Paris Container Day 2017 #ContainerDayFR

Monitoring de conteneurs en production

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Avant la mise en boîteLe 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

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Avant la mise en boîteLe 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 ?

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Avant la mise en boîteLa 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

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

Paris Container Day 2017 #ContainerDayFR

Monitoring de conteneurs en production

Prêt pour la prod ?

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

#ContainerDayFRParis Container Day 2017

Et le conteneur futCe 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 ?”

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

#ContainerDayFRParis Container Day 2017

Et le conteneur futCe 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

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

Paris Container Day 2017 #ContainerDayFR

Monitoring de conteneurs en production

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

#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

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

#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 ?

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

#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 ?

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Rendez-moi la vueConstruction 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

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Rendez-moi la vueConstruction d’une vue d’ensemble

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

IntégrationDocker + 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

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Intégrationrkt + journald + syslog

▼ “Forward” des logs journald vers syslog

▽ /etc/systemd/journald.conf

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

IntégrationSystème/Docker/rkt -> rsyslog -> Kafka

▼ rsyslog: omkafka depuis v8.7.0

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

IntégrationOne 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

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

IntégrationLes 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

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

#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

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

#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 !

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

#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 !

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Mais je veux des chiffres !Voir tout, tout le temps

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

#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

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

La collect(d)edes métriques

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

La métrologiece 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à !

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

L’alertingpour ê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

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

L’alertingde 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, …)

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

Paris Container Day 2017 #ContainerDayFR

Monitoring de conteneurs en production

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Attentionvous 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 !

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Attentionvous 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/

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

#ContainerDayFRParis Container Day 2017

Monitoring de conteneurs en production

Attentionvous 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)

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

#ContainerDayFR

Monitoring de conteneurs en production

Questions ?

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

#ContainerDayFR

Jonathan Raffre et Jean-Pascal Thiery

Monitoring de conteneurs en production