SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
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
On va toucher à 
• Runners 
• Outputters 
• Schedulers 
• Intégration à un logiciel tiers (munin) 
• Returners (pas fini) 
4
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

Weitere ähnliche Inhalte

Andere mochten auch

SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...SaltStack
 
Salt Stack pt. 2 : Configuration Management
Salt Stack pt. 2 : Configuration ManagementSalt Stack pt. 2 : Configuration Management
Salt Stack pt. 2 : Configuration ManagementUmberto Nicoletti
 
SaltStack - An open source software story
SaltStack - An open source software storySaltStack - An open source software story
SaltStack - An open source software storySaltStack
 
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)SaltStack
 
Gestion des vulnérabilités dans le cas de Shellshock
Gestion des vulnérabilités dans le cas de ShellshockGestion des vulnérabilités dans le cas de Shellshock
Gestion des vulnérabilités dans le cas de ShellshockJohan Moreau
 
A user's perspective on SaltStack and other configuration management tools
A user's perspective on SaltStack and other configuration management toolsA user's perspective on SaltStack and other configuration management tools
A user's perspective on SaltStack and other configuration management toolsSaltStack
 
Integration testing for salt states using aws ec2 container service
Integration testing for salt states using aws ec2 container serviceIntegration testing for salt states using aws ec2 container service
Integration testing for salt states using aws ec2 container serviceSaltStack
 
Scaling Docker with Kubernetes
Scaling Docker with KubernetesScaling Docker with Kubernetes
Scaling Docker with KubernetesCarlos Sanchez
 
WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...
WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...
WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...Brian Grant
 
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupStefan Schimanski
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to KubernetesImesh Gunaratne
 
Cap dementia slachevsky&oyarzo_08
Cap dementia slachevsky&oyarzo_08Cap dementia slachevsky&oyarzo_08
Cap dementia slachevsky&oyarzo_08Dann Arriaga
 
Ausdruecken
AusdrueckenAusdruecken
Ausdrueckenurmel801
 
Die Standalone Profis
Die Standalone ProfisDie Standalone Profis
Die Standalone ProfisFreelance
 
German German Book for school
German German Book for schoolGerman German Book for school
German German Book for schoolChiefA18
 
PROPUESTA DE SOLUCIÓN
PROPUESTA DE SOLUCIÓNPROPUESTA DE SOLUCIÓN
PROPUESTA DE SOLUCIÓNyuyuita
 
Wohin mit dem Atommüll? - Deutschland auf der Suche nach dem besten Endlagers...
Wohin mit dem Atommüll? - Deutschland auf der Suche nach dem besten Endlagers...Wohin mit dem Atommüll? - Deutschland auf der Suche nach dem besten Endlagers...
Wohin mit dem Atommüll? - Deutschland auf der Suche nach dem besten Endlagers...Oeko-Institut
 

Andere mochten auch (20)

SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
 
Salt Stack pt. 2 : Configuration Management
Salt Stack pt. 2 : Configuration ManagementSalt Stack pt. 2 : Configuration Management
Salt Stack pt. 2 : Configuration Management
 
SaltStack - An open source software story
SaltStack - An open source software storySaltStack - An open source software story
SaltStack - An open source software story
 
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
 
Gestion des vulnérabilités dans le cas de Shellshock
Gestion des vulnérabilités dans le cas de ShellshockGestion des vulnérabilités dans le cas de Shellshock
Gestion des vulnérabilités dans le cas de Shellshock
 
A user's perspective on SaltStack and other configuration management tools
A user's perspective on SaltStack and other configuration management toolsA user's perspective on SaltStack and other configuration management tools
A user's perspective on SaltStack and other configuration management tools
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
Integration testing for salt states using aws ec2 container service
Integration testing for salt states using aws ec2 container serviceIntegration testing for salt states using aws ec2 container service
Integration testing for salt states using aws ec2 container service
 
Scaling Docker with Kubernetes
Scaling Docker with KubernetesScaling Docker with Kubernetes
Scaling Docker with Kubernetes
 
WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...
WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...
WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...
 
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
 
Salt I et II
Salt I et IISalt I et II
Salt I et II
 
Cap dementia slachevsky&oyarzo_08
Cap dementia slachevsky&oyarzo_08Cap dementia slachevsky&oyarzo_08
Cap dementia slachevsky&oyarzo_08
 
Ausdruecken
AusdrueckenAusdruecken
Ausdruecken
 
Die Standalone Profis
Die Standalone ProfisDie Standalone Profis
Die Standalone Profis
 
German German Book for school
German German Book for schoolGerman German Book for school
German German Book for school
 
Clase 4 otras civilizaciones (india)
Clase 4 otras civilizaciones (india)Clase 4 otras civilizaciones (india)
Clase 4 otras civilizaciones (india)
 
PROPUESTA DE SOLUCIÓN
PROPUESTA DE SOLUCIÓNPROPUESTA DE SOLUCIÓN
PROPUESTA DE SOLUCIÓN
 
Wohin mit dem Atommüll? - Deutschland auf der Suche nach dem besten Endlagers...
Wohin mit dem Atommüll? - Deutschland auf der Suche nach dem besten Endlagers...Wohin mit dem Atommüll? - Deutschland auf der Suche nach dem besten Endlagers...
Wohin mit dem Atommüll? - Deutschland auf der Suche nach dem besten Endlagers...
 

Ähnlich wie Générer des stats sur son infra salt

Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Kenny Dits
 
Game of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de donnéesGame of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de donnéesQuang Tu LE
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014Benoît de CHATEAUVIEUX
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720Romain Linsolas
 
Le monitoring de la performance front
Le monitoring de la performance frontLe monitoring de la performance front
Le monitoring de la performance frontJean-Pierre Vincent
 
Compte rendu chaberge
Compte rendu chabergeCompte rendu chaberge
Compte rendu chabergeshiruh
 
#12 et #13 Versioning et JaDOrT
#12 et #13 Versioning et JaDOrT#12 et #13 Versioning et JaDOrT
#12 et #13 Versioning et JaDOrTGuillaume Sauthier
 
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...Pierre-jean Texier
 
Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016Guillaume Nocent
 
[JSS2015] Query Store
[JSS2015] Query Store[JSS2015] Query Store
[JSS2015] Query StoreGUSS
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
 
Techdays 2013 : ALM et eCommerce, des challenges en continu
Techdays 2013 : ALM et eCommerce, des challenges en continuTechdays 2013 : ALM et eCommerce, des challenges en continu
Techdays 2013 : ALM et eCommerce, des challenges en continuvlabatut
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performancepkernevez
 
Techniques d'accélération des pages web
Techniques d'accélération des pages webTechniques d'accélération des pages web
Techniques d'accélération des pages webJean-Pierre Vincent
 
La migration continue vers Symfony
La migration continue vers SymfonyLa migration continue vers Symfony
La migration continue vers SymfonyFrancois Zaninotto
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Skype For Business - Nouveau client et Migration
Skype For Business - Nouveau client et MigrationSkype For Business - Nouveau client et Migration
Skype For Business - Nouveau client et MigrationEudes Olivier ROBERT
 
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...Benoit Jester
 
Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Julien Deneuville
 

Ähnlich wie Générer des stats sur son infra salt (20)

Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?
 
Game of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de donnéesGame of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de données
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720
 
Le monitoring de la performance front
Le monitoring de la performance frontLe monitoring de la performance front
Le monitoring de la performance front
 
Compte rendu chaberge
Compte rendu chabergeCompte rendu chaberge
Compte rendu chaberge
 
#12 et #13 Versioning et JaDOrT
#12 et #13 Versioning et JaDOrT#12 et #13 Versioning et JaDOrT
#12 et #13 Versioning et JaDOrT
 
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
 
Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016
 
[JSS2015] Query Store
[JSS2015] Query Store[JSS2015] Query Store
[JSS2015] Query Store
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 
Techdays 2013 : ALM et eCommerce, des challenges en continu
Techdays 2013 : ALM et eCommerce, des challenges en continuTechdays 2013 : ALM et eCommerce, des challenges en continu
Techdays 2013 : ALM et eCommerce, des challenges en continu
 
Paris RailsCamp 2009
Paris RailsCamp 2009Paris RailsCamp 2009
Paris RailsCamp 2009
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performance
 
Techniques d'accélération des pages web
Techniques d'accélération des pages webTechniques d'accélération des pages web
Techniques d'accélération des pages web
 
La migration continue vers Symfony
La migration continue vers SymfonyLa migration continue vers Symfony
La migration continue vers Symfony
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Skype For Business - Nouveau client et Migration
Skype For Business - Nouveau client et MigrationSkype For Business - Nouveau client et Migration
Skype For Business - Nouveau client et Migration
 
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...
 
Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?
 

Mehr von Arthur Lutz

Donnez des couleurs a votre terminal
Donnez des couleurs a votre terminalDonnez des couleurs a votre terminal
Donnez des couleurs a votre terminalArthur Lutz
 
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...Arthur Lutz
 
PyParis2018 - Python tooling for continuous deployment
PyParis2018 - Python tooling for continuous deploymentPyParis2018 - Python tooling for continuous deployment
PyParis2018 - Python tooling for continuous deploymentArthur Lutz
 
Pyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shiftPyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shiftArthur Lutz
 
Meetup Nantes Monitoring - janvier 2018 - netdata & sensu
Meetup Nantes Monitoring - janvier 2018 - netdata & sensuMeetup Nantes Monitoring - janvier 2018 - netdata & sensu
Meetup Nantes Monitoring - janvier 2018 - netdata & sensuArthur Lutz
 
Salt Paris Meetup - septembre 2017 - formulas and salt-cloud
Salt Paris Meetup  - septembre 2017 - formulas and salt-cloudSalt Paris Meetup  - septembre 2017 - formulas and salt-cloud
Salt Paris Meetup - septembre 2017 - formulas and salt-cloudArthur Lutz
 
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...Arthur Lutz
 
Meetup Python Nantes - les tests en python
Meetup Python Nantes - les tests en pythonMeetup Python Nantes - les tests en python
Meetup Python Nantes - les tests en pythonArthur Lutz
 
Python Nantes Meetup - Collecter les erreurs avec Sentry
Python Nantes Meetup -  Collecter les erreurs avec SentryPython Nantes Meetup -  Collecter les erreurs avec Sentry
Python Nantes Meetup - Collecter les erreurs avec SentryArthur Lutz
 
Collecter les erreurs de description d'infrastructure avec Salt et Sentry
Collecter les erreurs de description d'infrastructure avec Salt et SentryCollecter les erreurs de description d'infrastructure avec Salt et Sentry
Collecter les erreurs de description d'infrastructure avec Salt et SentryArthur Lutz
 
cfgmgmtcamp 2016 - Roll out active Supervision with Salt, Graphite and Grafana
cfgmgmtcamp 2016 - Roll out active Supervision with Salt, Graphite and Grafanacfgmgmtcamp 2016 - Roll out active Supervision with Salt, Graphite and Grafana
cfgmgmtcamp 2016 - Roll out active Supervision with Salt, Graphite and GrafanaArthur Lutz
 
FOSDEM 2016 - After describing your infrastructure as code, reuse that to mon...
FOSDEM 2016 - After describing your infrastructure as code, reuse that to mon...FOSDEM 2016 - After describing your infrastructure as code, reuse that to mon...
FOSDEM 2016 - After describing your infrastructure as code, reuse that to mon...Arthur Lutz
 
Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...
Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...
Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...Arthur Lutz
 
Debian meetup nantes 2015 : Salt pour gérer de nombreux serveurs debian
Debian meetup nantes 2015 : Salt pour gérer de nombreux serveurs debianDebian meetup nantes 2015 : Salt pour gérer de nombreux serveurs debian
Debian meetup nantes 2015 : Salt pour gérer de nombreux serveurs debianArthur Lutz
 
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...Arthur Lutz
 
Présentation "Outils agiles : revue de code & publication continue"
Présentation "Outils agiles : revue de code & publication continue"Présentation "Outils agiles : revue de code & publication continue"
Présentation "Outils agiles : revue de code & publication continue"Arthur Lutz
 
Présentation éclair "Retours d'experience data.bnf.fr" - datapride Nantes
Présentation éclair "Retours d'experience data.bnf.fr" - datapride NantesPrésentation éclair "Retours d'experience data.bnf.fr" - datapride Nantes
Présentation éclair "Retours d'experience data.bnf.fr" - datapride NantesArthur Lutz
 

Mehr von Arthur Lutz (17)

Donnez des couleurs a votre terminal
Donnez des couleurs a votre terminalDonnez des couleurs a votre terminal
Donnez des couleurs a votre terminal
 
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
 
PyParis2018 - Python tooling for continuous deployment
PyParis2018 - Python tooling for continuous deploymentPyParis2018 - Python tooling for continuous deployment
PyParis2018 - Python tooling for continuous deployment
 
Pyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shiftPyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shift
 
Meetup Nantes Monitoring - janvier 2018 - netdata & sensu
Meetup Nantes Monitoring - janvier 2018 - netdata & sensuMeetup Nantes Monitoring - janvier 2018 - netdata & sensu
Meetup Nantes Monitoring - janvier 2018 - netdata & sensu
 
Salt Paris Meetup - septembre 2017 - formulas and salt-cloud
Salt Paris Meetup  - septembre 2017 - formulas and salt-cloudSalt Paris Meetup  - septembre 2017 - formulas and salt-cloud
Salt Paris Meetup - septembre 2017 - formulas and salt-cloud
 
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...
 
Meetup Python Nantes - les tests en python
Meetup Python Nantes - les tests en pythonMeetup Python Nantes - les tests en python
Meetup Python Nantes - les tests en python
 
Python Nantes Meetup - Collecter les erreurs avec Sentry
Python Nantes Meetup -  Collecter les erreurs avec SentryPython Nantes Meetup -  Collecter les erreurs avec Sentry
Python Nantes Meetup - Collecter les erreurs avec Sentry
 
Collecter les erreurs de description d'infrastructure avec Salt et Sentry
Collecter les erreurs de description d'infrastructure avec Salt et SentryCollecter les erreurs de description d'infrastructure avec Salt et Sentry
Collecter les erreurs de description d'infrastructure avec Salt et Sentry
 
cfgmgmtcamp 2016 - Roll out active Supervision with Salt, Graphite and Grafana
cfgmgmtcamp 2016 - Roll out active Supervision with Salt, Graphite and Grafanacfgmgmtcamp 2016 - Roll out active Supervision with Salt, Graphite and Grafana
cfgmgmtcamp 2016 - Roll out active Supervision with Salt, Graphite and Grafana
 
FOSDEM 2016 - After describing your infrastructure as code, reuse that to mon...
FOSDEM 2016 - After describing your infrastructure as code, reuse that to mon...FOSDEM 2016 - After describing your infrastructure as code, reuse that to mon...
FOSDEM 2016 - After describing your infrastructure as code, reuse that to mon...
 
Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...
Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...
Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...
 
Debian meetup nantes 2015 : Salt pour gérer de nombreux serveurs debian
Debian meetup nantes 2015 : Salt pour gérer de nombreux serveurs debianDebian meetup nantes 2015 : Salt pour gérer de nombreux serveurs debian
Debian meetup nantes 2015 : Salt pour gérer de nombreux serveurs debian
 
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...
Pyconfr2015 : Marre de faire du C++ sur une Arduino ? Faites du Python avec M...
 
Présentation "Outils agiles : revue de code & publication continue"
Présentation "Outils agiles : revue de code & publication continue"Présentation "Outils agiles : revue de code & publication continue"
Présentation "Outils agiles : revue de code & publication continue"
 
Présentation éclair "Retours d'experience data.bnf.fr" - datapride Nantes
Présentation éclair "Retours d'experience data.bnf.fr" - datapride NantesPrésentation éclair "Retours d'experience data.bnf.fr" - datapride Nantes
Présentation éclair "Retours d'experience data.bnf.fr" - datapride Nantes
 

Générer des stats sur son infra salt

  • 1. Générer des stats sur son infra Salt • Arthur Lutz (Logilab) @arthurlutz Diapos : http://slides.logilab.fr/salt-meetup-stats/ 1
  • 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. 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. On va toucher à • Runners • Outputters • Schedulers • Intégration à un logiciel tiers (munin) • Returners (pas fini) 4
  • 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. 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. 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. Output JSON { "local": { "changes": 0, "total": 80, "todo": 3, "failed": 0, "no_changes": 77 } 8
  • 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. Problèmes rencontrés • _outputters • salt.loader • state > module > outputter > retuner > etc • __salt__ et __opts__ • silent fails (fallbacks) 10
  • 11. Bon points • Liste de discussion réactive • Code source facile à lire • Réactifs sur les rapports de bugs 11
  • 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. 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. Fin • Des questions ? • Des feature requests ? • Des patches ? Arthur Lutz (Logilab) @arthurlutz 14