Générer des stats sur son infra salt

Post on 13-Jul-2015

216 views 0 download

Transcript of 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

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

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

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

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

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

Output JSON{

"local": {

"changes": 0,

"total": 80,

"todo": 3,

"failed": 0,

"no_changes": 77

}

8

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

Problèmes rencontrés• _outputters

• salt.loader

• state > module > outputter > retuner > etc

• __salt__ et __opts__

• silent fails (fallbacks)

10

Bon points• Liste de discussion réactive

• Code source facile à lire

• Réactifs sur les rapports de bugs

11

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

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

Fin• Des questions ?

• Des feature requests ?

• Des patches ?

Arthur Lutz (Logilab) @arthurlutz

14