Générer des stats sur son infra salt

560 vues

Publié le

Mirror of présentation on http://slides.logilab.fr/salt-meetup-stats/

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
560
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
7
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Générer des stats sur son infra salt

  1. 1. Générer des stats sur son infra Salt • Arthur Lutz (Logilab) @arthurlutz Diapos : http://slides.logilab.fr/salt-meetup-stats/ 1
  2. 2. Problématique • Plus de 60 serveurs gérés par Salt • Plus de 5000 states en production • Pas de state.highstate automatique • Des états qui génèrent des states à appliquer • par exemple, ajouter un minion à notre master nécessite ensuite d'aller appliquer des highstates sur d'autres minions 2
  3. 3. Ce qu'on veut • Identifier les zones de notre infrastructure qui nécessitent des modifications • Garder une distance courte entre l'état souhaité et l'état appliqué • Intégrer ces métriques dans nos outils 3
  4. 4. On va toucher à • Runners • Outputters • Schedulers • Intégration à un logiciel tiers (munin) • Returners (pas fini) 4
  5. 5. Fichiers ├── README ├── _outputters │ ├── highstate_stats_json.py │ └── highstate_stats.py ├── _modules │ └── stats.py ├── runners │ └── stats.py ├── pillars │ └── schedule.sls ├── _returners │ └── file.py └── states ├── munin │ ├── init.sls │ ├── plugins │ │ └── salt_distance │ └── salt-distance.sls └── top.sls 5
  6. 6. Run # salt-run stats.highstate_test host1.logilab.fr : total 158, todo 20 (12.66%), no_changes 135 (85.44%), changes 0 (0.00%), failed 3 (1.90%) host2.logilab.fr : total 564, todo 2 (0.35%), no_changes 562 (99.65%), changes 0 (0.00%), failed 0 (0.00%) host3.logilab.fr : total 69, todo 3 (4.35%), no_changes 66 (95.65%), changes 0 (0.00%), failed 0 (0.00%) [snip] Total : total 5838, todo 332 (5.69%), no_changes 5488 (94.00%), changes 0 (0.00%), failed 12 (0.21%) 6
  7. 7. Interface utilisateur • Plusieurs points d'entrées • salt 'host' --out highstate_stats state.highstate test=True • salt-call --out highstate_stats state.highstate test=True • salt-run stats.highstate_test 'host' 7
  8. 8. Output JSON { "local": { "changes": 0, "total": 80, "todo": 3, "failed": 0, "no_changes": 77 } 8
  9. 9. Intégration munin • 1ere version: le plugin munin lance le salt-runner et utilise le JSON • 2ème version: scheduler salt + traitement du json produit par le plugin munin 9
  10. 10. Problèmes rencontrés • _outputters • salt.loader • state > module > outputter > retuner > etc • __salt__ et __opts__ • silent fails (fallbacks) 10
  11. 11. Bon points • Liste de discussion réactive • Code source facile à lire • Réactifs sur les rapports de bugs 11
  12. 12. Code source • https://bitbucket.org/arthurlogilab/salt-highstate-stats • Contributions bienvenues • Question ouverte : rester un projet tiers ou demander l'intégration dans salt 12
  13. 13. Futur • Tris • par nombre d'états à appliquer • par état qui génère beaucoup • Meilleure gestion du cache • Output en couleur • Progress bar • Histogrammes curses avec sparkl • Sonde nagios/shinken 13
  14. 14. Fin • Des questions ? • Des feature requests ? • Des patches ? Arthur Lutz (Logilab) @arthurlutz 14

×