générer des stats sur son infra salt

14
Générer des stats sur son infra Salt Arthur Lutz (Logilab) @arthurlutz Diapos : http://slides.logilab.fr/salt-meetup-stats/ 1

Upload: arthur-lutz

Post on 13-Jul-2015

216 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Générer des stats sur son infra salt

Générer des stats sur son infra Salt• Arthur Lutz (Logilab) @arthurlutz

Diapos : http://slides.logilab.fr/salt-meetup-stats/

1

Page 2: Générer des stats sur son infra salt

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

Page 3: Générer des stats sur son infra salt

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

Page 5: Générer des stats sur son infra salt

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

Page 6: Générer des stats sur son infra salt

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

Page 7: Générer des stats sur son infra salt

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

Page 8: Générer des stats sur son infra salt

Output JSON{

"local": {

"changes": 0,

"total": 80,

"todo": 3,

"failed": 0,

"no_changes": 77

}

8

Page 9: Générer des stats sur son infra salt

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

Page 10: Générer des stats sur son infra salt

Problèmes rencontrés• _outputters

• salt.loader

• state > module > outputter > retuner > etc

• __salt__ et __opts__

• silent fails (fallbacks)

10

Page 11: Générer des stats sur son infra salt

Bon points• Liste de discussion réactive

• Code source facile à lire

• Réactifs sur les rapports de bugs

11

Page 12: Générer des stats sur son infra salt

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

Page 13: Générer des stats sur son infra salt

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

Page 14: Générer des stats sur son infra salt

Fin• Des questions ?

• Des feature requests ?

• Des patches ?

Arthur Lutz (Logilab) @arthurlutz

14