Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Surveiller ses applications en production

Surveiller ses applications en production

Alexandre Salomé

October 28, 2016
Tweet

More Decks by Alexandre Salomé

Other Decks in Technology

Transcript

  1. Surveiller ses applications en production Alexandre Salomé

  2. /me • Architecte SI chez Auchan Retail France • Développeur

    PHP depuis mes 15 ans
  3. Et vous ?

  4. Sommaire • Un peu de théorie • Les solutions du

    marché • Quoi surveiller ? • Alerting • Notre solution chez Auchan Retail France
  5. Un peu de théorie

  6. Métriques vs Événements

  7. Métriques vs Événements

  8. Métriques • Un nombre qui change dans le temps •

    Appelé aussi time-series data • Nom + heure = valeur
  9. Métriques : Exemples • Métriques système ◦ Load average ◦

    Utilisation de la RAM ◦ I/O Disque • Métriques service ◦ Nombre de requêtes SQL ◦ Cache hits et misses • Métriques applicatives ◦ Nombre d’inscription ◦ Durée de génération d’une page
  10. Métriques : Aggrégation • Important quand on fait une requête

    • Différents agrégats ◦ Somme ◦ Moyenne ◦ Max ◦ Min ◦ 90th percentile • Utilisable pour réduire le stockage ◦ Toutes les minutes, maintenant à 1 semaine ◦ Toutes les 15 minutes, 1 semaine à 1 mois ◦ Toutes les heures, 1 mois à 6 mois ◦ Tous les jours de 6 mois à ...
  11. Métriques : Dérivée Certaines métriques sont des séries croissantes. •

    Nombre de requête SQL • Traffic réseau Pour avoir un débit, vous devez calculer la dérivée :
  12. Métriques vs Événements

  13. Événements Un événement est un message de votre application, votre

    système ou votre service. Il est au format texte : 2016-09-06 20:47:13 - Alexandre is preparing slides for the conference
  14. Événements : exemples • Logs Linux • Logs Apache ou

    Nginx • Logs Symfony • Logs MySQL • Slow query logs
  15. Événements : extraction de champs On analyse les messages avec

    une expression régulière : 2016-01-14 12:34:32 boston-01: User “alice” connected to the application from IP 12.34.56.78 On obtient une table de données : Date 2016-01-14 Time 12:34:32 Server boston-01 Event type login Username alice IP 12.34.56.78
  16. Événements : extraction de champs • Logstash fournit un ensemble

    d’expressions régulières embarquées : Exemple : lecture les logs Apache/Nginx grok { match => { "message" => "%{COMBINEDAPACHELOG}" } }
  17. Métriques et Événements > Comparaison Les métriques sont bien pour

    : • Time series data • Consolidation dans le temps • Mathématiques • Taille de stockage Nombres Les événements sont bien pour : • Stocker n’importe quel message • Extraire les champs pour indexation/requêtage Texte
  18. Les solutions du marché

  19. Stockages de métriques • ++ Graphite : aggrégat • +

    InfluxDB : clustering • OpenTSDB : scalable • Promotheus
  20. Métriques du système et des services Une bonne solution :

    collectd • Plugins pour les métriques système et service : CP, RAM, load average, réseau, MySQL, Apache, AMQP, Carbon, Température CPU, Système de fichiers, Disque, IRQ, NFS, PostgreSQL, Syslog, MongoDB, Redis, Nombre de fichiers, … • Vous pouvez ajouter des métriques personnalisées en utilisant le plugin Exec Envoie toutes les métriques au stockage
  21. Métriques du système et des services Une solution complète :

    Zabbix • Des agents pour collecter • Un appli Web pour être alerté • Push par Mail/SMS/autre • Extraction complète de métriques ◦ Métriques système ◦ Métriques des services ◦ Appels à distance
  22. Temporisation des métriques avec StatsD • Une application Node.JS pour

    temporiser les envois de métrique • Beaucoup de backends disponibles • Supporte différents types de métriques ◦ Counters (+1, +3, +2) ◦ Sampling ◦ Gauges (200, +3, -2) • Un protocole UDP très simple • Envoie les métriques toutes les X secondes • Optimise la performance des applications
  23. Metrics depuis votre application • <3 m6web/statsd <3 • https://packagist.org/search/?q=<your-solution>

  24. Événements : connaissez-vous ELK ? • ElasticSearch est le stockage

    • LogStash traite les logs • Kibana fait l’affichage
  25. À voir également... Stockage d’événements : • Graylog • Fluentd

    Awesome Sysadmin : https://github.com/kahun/awesome-sysadmin
  26. Un bon départ

  27. Un bon départ : les métriques

  28. Un bon départ : les événements

  29. Un bon échec critique • Les métriques sont des événements

    • 1 heure = 10 MB • 1 jour = 200 MB • 1 semaine = 1.5 GB
  30. Quoi surveiller ?

  31. Tout ce qui change peut être mesuré • Mesurez n’importe

    quoi, mesurez tout • 3 niveaux : ◦ Système : Le système Debian/Archlinux/whatever que vous utilisez ◦ Services : Apache, MySQL, Docker, Nginx, Redis, … ◦ Applications : Votre application PHP How to Measure Anything: Finding the Value of Intangibles in Business By Douglas W. Hubbard
  32. Système Métriques • Load average • RAM • Utilisation disque

    • IOWait • Utilisation réseau • Inodes Événements • Logs système
  33. Services Métriques • MySQL ◦ Nombre de requêtes ◦ Cache

    hit/miss • Apache ◦ Nombre de requêtes ◦ Busy/idle workers • HAProxy • Redis • …. Événements • Apache|Nginx access logs • Apache|Nginx error logs • MySQL logs • ElasticSearch logs • ...
  34. Applications Métriques • Mémoire/Durée par URL • Utilisation de fonctionnalités

    • Métriques personnalisées ◦ Inscription ◦ Tunnel de commande Événements • Logs applicatifs • Logs personnalisés ◦ Registration & GeoIP ◦ Détails de commande ◦ Détails de fonctionnalités
  35. Application : mesures génériques pour votre appli http://bit.ly/2ciZDLI

  36. Application : mesures génériques pour votre appli http://bit.ly/2ciZDLI

  37. Application : mesures génériques pour votre appli http://bit.ly/2ciZDLI

  38. Métriques applicatives • Utilisez des événements ◦ Ne couplez pas

    votre application à votre monitoring • M6Web/StatsdBundle rend cela configurable (dans Symfony) : m6_statsd: clients: default: Events: forum.read: increment : mysite.forum.read
  39. Événements applicatifs • Utilisez un log unique pour router vos

    messages vers votre stack et créez des tableaux de bord • Exemple : le channel deprecated pour les messages de dépréciation
  40. Channel de dépréciation http://bit.ly/2c8oWpk

  41. Channel de dépréciation http://bit.ly/2c8oWpk

  42. Channel de dépréciation

  43. Quoi mesurer ? • Performance du système et des services

    ◦ Load average ◦ Disque libre • Erreurs système et services ◦ Erreurs syslog ◦ Status HTTP >= 500 • Comportement utilisateur ◦ Utilisation des fonctionnalités ◦ Nombre d’inscriptions ◦ Nombre de pages vues
  44. Alerting

  45. Un petit mot sur l’alerting • C’est bien de mesurer,

    c’est mieux d’être alerté • Définissez des règles, soyez notifié quand une règle n’est pas respectée • Ne mettez pas vos alertes à 95% : si votre système de fichier est rempli à 95%, votre système est déjà en souffrance ◦ Préférez 60% • Traiter un problème avant qu’il ne survienne évite de faire une récupération sur erreur • Les règles d’alerte peuvent être complexes ◦ En heures ouvrées, on envoie un mail ◦ Sinon, on envoie un SMS au téléphone du responsable IT ◦ Si le responsable est en vacances, on envoie à son backup
  46. Alerting Grafana • Depuis la version 3.1.0 • Pour l’instant,

    ne supporte que Graphite
  47. Notre solution chez Auchan Retail France

  48. Notre stack • Splunk pour les événements • Zabbix pour

    les métriques
  49. Zabbix • Utilisé pour la surveillance du système et des

    services
  50. Splunk • ELK + $$$ = Splunk • Toute l’entreprise

    peut l’utiliser • Extraction de champ à la volée ◦ Interface Web pour configurer • Langage de requête puissant : ◦ index=apache sourcetype=frontend | timechart count BY host ◦ index=apache sourcetype=frontend host=auchan.fr | stats avg(response_time) BY path • Éditeur de graphe puissant • Data models → Tableaux croisés dynamiques pour le métier
  51. Conclusion • Surveillez tout ce qui change • Instrumentalisez votre

    application • Surveillez vos composantes métier critiques • Créez des tableaux de bord décisionnels • Alertez vous à 60%, pas à 95% • Si vous avez de l’argent, achetez Splunk
  52. Ayé Merci beaucoup!

  53. Questions & Réponses

  54. Crédits photo • Andrew Malone - Measuring - https://flic.kr/p/aqhCH8 •

    Sebastian Schulze - SymfonyLive 2010 - https://flic.kr/p/7Ef7vx • KimManleyOrt - At the Math Grad House - https://flic.kr/p/m2UBWH • Usehung - Chemistry - https://flic.kr/p/4uT7Er • Cybjorg - Gauges - https://flic.kr/p/5r3LuJ • Shan Ambrose - alert - https://flic.kr/p/cAk4KC • Nicolas Buffler - Projet 365 - 209/365 - https://flic.kr/p/mkHfLF • Derek Bridges - Questions - https://flic.kr/p/5DeuzB