Quelques notes sur la collecte de metrics

http://fr.slideshare.net/jiboumans/...

Un module puppet pour le graphite-report

graphite_reporter

https://forge.puppetlabs.com/evenup...

Le monitoring pour la validation des logiciels :

http://fr.slideshare.net/Biodec/mon...

  • "si cela bouge, vous pouvez le surveiller"
  • Le réseau
  • La machine
  • L'application

'Pourquoi ?'

  • Apprendre de son infrastructure
  • Anticiper les pannes
  • Accélérer les changements

Différence entre metric et event

Metric :

  • Temps + Nom + valeur
  • Evénément : Temps + Nom

graphite : La solution tout en un , pour surveiller des données en temps réel

  • Le stockage des données est rapide / efficace
  • Récupération rapide

Comment est composé graphite :

  • Graphite web : le front-end web, pour visualiser les données
  • Carbon : Ecoute les données, les agrège, les stocke sur le disque

Graphite, quelques notes sur son fonctionnement

tester le bon fonctionnement de Graphite :
echo "test.count 4 `date +%s`" | nc -q0 127.0.0.1 2003

Regarder dans l'interface :

graphite1.jpg

Pour activer Graphite :
LoadPlugin "write_graphite" 
<Plugin write_graphite>
       <Node "pinatubo">
               Host "127.0.0.1"
               Port "2003"
               Protocol "tcp"
               LogSendErrors true
               Prefix "collectd"
               Postfix "collectd"
               StoreRates true
               AlwaysAppendDS false
               EscapeCharacter "_"
       </Node>
</Plugin>
Dashboard

A priori, on peut fabriquer des dashboards

Exemple :

  • refresh toutes les 10 secondes du CPU idle

dashboard.jpg

Nommer le dashboard et obtenir une url :

http://localhost/dashboard/test

On peut aussi :

  • Envoyer chaque graph par mail
  • Avoir une url directe pour chaque grah : [
Ressources

lsyncd

https://code.google.com/p/lsyncd/

Intéressant :

Synchronisation d'un répertoire local vers distant, a travers ssh.. en utilisant inotify pour voir les modifications.

  • Utilise du code lua pour la config

Voir la doc : https://github.com/axkibe/lsyncd/wi...

Exemple d'utilisation :

Fichier de conf :

conf.lua
sync{
       default.rsyncssh,
       source="/tmp/a/",
       host="root@192.168.0.13",
       targetdir="/tmp/a/"
}
lsyncd -nodaemon conf.lua
L'exemple temps réel :
settings {
       maxProcesses=4, 
}
sync{
       default.rsyncssh,
       source="/tmp/a/",
       host="root@192.168.0.13",
       targetdir="/tmp/a/",
       delay=0 
}
lsyncd -nodaemon conf.lua

de l'autre coté faire un

watch -n1 ls -la /tmp/a

Sélections de slides

Apache Traffic server

Content routing :

  • Distance / network hops
    • Network link Quality / speed
    • Availability of content in cache

Serveur de cache Generation 1 chez Comcast :

  • 192 Go ram
  • 24 disques 900 Go SAS
  • 2 X 10 GE
Voiture et linux embarqué :

Votre voiture sera bientôt autonome..

  • Slide 2 : beaucoup d'électronique dans les voitures..

http://events.linuxfoundation.org/s...

Xen sur ARM

http://events.linuxfoundation.org/s...

Ganetti

http://events.linuxfoundation.org/s...

Ca a l'air d'être intéressant ce système..


** Slide 15 : Kernel préemptif

Quand on passe le kernel en mode temps réel, il n'est pas :

  • D'une meilleure latence
  • Plus rapide

Il est juste plus prévisible et déterminable

Xen 4.4

http://events.linuxfoundation.org/s...

Haute dispo

http://events.linuxfoundation.org/s...

  • VRRP : ok keepalived
  • Ucarp
  • Master/backup election

Quelques notes puppet iis8/Windows

Quelques notes (en vrac) désolé

iis
  • https://github.com/eToro/puppet-enableiis/blob/master/manifests/init.pp

lié à ce package : https://forge.puppetlabs.com/puppet...

DISM : c'estun peu le apt de windows "(DISM.exe) is used to enable or disable Windows features on Windows 7, Windows Server 2008 R2."

Un package générique windows :

https://forge.puppetlabs.com/counsy...

  • installer java
windows::java
  • Gérer les règles de firewall windows :
windows::firewall_rule

ex : autoriser ping

windows::firewall_rule { 'ICMP Ping':
 protocol => 'icmpv4:8,any',
}
Sql server 2012

L'exemple en dit beaucoup :

class {'windows_sql':
 features            => 'SQL,RS_SHP,RS_SHPWFE,TOOLS',
 pid                 => 'SYOUR-PRODU-CTKEY-OFSQL-2012S',
 sqlsysadminaccounts => 'SQLAdmin',
 agtsvcaccount       => 'svc_sqlagt',
 isopath             => 'C:\\Users\\Administrator\\Desktop\\SQLServer2012SP1-FullSlipstream-ENU-x64.iso',
 sqlsvcaccount       => 'svc_sqlsvc',
 securitymode        => 'sql',
 sapwd               => 'MySup3rGre@tp@ssw0rDO3nOT',
 mode                => 'master',
}
Monter / démonter un iso :

https://forge.puppetlabs.com/jrivie...

Ex : windows_isos{'SQLServer':

 ensure   => present,
 isopath  => 'C:\\Users\\Administrator\\Desktop\\SQLServer2012SP1-FullSlipstream-ENU-x64.iso',
}
reboot

tout est dans le titre https://forge.puppetlabs.com/puppet...

Un exemple :

package { 'Microsoft .NET Framework 4.5':
 ensure => installed,
 ...
 notify => Reboot'after_run', 
} 
package { 'Microsoft Windows SDK for Windows 7 (7.0)':
 ensure => installed,
 ...
 notify => Reboot'after_run', 
}
reboot { 'after_run':
 apply  => finished,
}
powershell

https://forge.puppetlabs.com/puppet...

nsclient

pratique pour icinga

https://forge.puppetlabs.com/openta...

Installer le client avec les valeurs par défaut :

include 'nsclient'

Serveurs icinga autorisés

class { 'nsclient':
  allowed_hosts => '10.21.0.0/22','10.21.4.0/22', 
}
Installer graphite, pour avoir des metrics

https://forge.puppetlabs.com/openta...

Voir ce script

Les data collectées

Exemple visuel ici : https://www.hostedgraphite.com/ Voir la version libre : http://graphite.wikidot.com/

Puppet : Regardons un peu les modules de la puppetforge

Le module le plus téléchargé : puppetlabs/vcsrepo

https://forge.puppetlabs.com/puppet...

Ce module sert à déployer du code, depuis un gestionnaire de code (git, svn & co) qui est hébergé sur un serveur central.

Module https://forge.puppetlabs.com/puppet...

Gestion des packages

  • installation
  • déinstallation
  • gestion des packages externes
module Firewall https://forge.puppetlabs.com/puppet...
  • Gestion des règles firewall
    • Protocole tcp/udp / ports / accept / drop
Module : erwbgy/limits https://forge.puppetlabs.com/erwbgy...

Gestion des paramètres/limites dans :

/etc/security/limits.conf
Module : thias/sysctl https://forge.puppetlabs.com/thias/...

Gestion de /etc/sysctl.conf

Exemple : sysctl { 'net.ipv4.ip_forward': value => '1' }

Module pour Haproxy https://forge.puppetlabs.com/puppet...

Gestion de la configuration haproxy

Quelques notes Puppet

Continuous delivery ou Intégration continue

  • Le code source est partagé, via un logiciel de gestion du cote, donc git !
  • Les dév intégrent leurs modifications, on appelle cela des commit (git commit), afin d'avoir un historique des modifications.
  • Des tests d'intégration : est-ce que tout fonctionne ? tests de manière automatique.

Une série de bonnes pratiques :

  • Maintenir un dépôt unique de code source versionné
  • Automatiser les compilations
  • Rendre les compilations auto-testantes
  • Tout le monde commit tous les jours
  • Tout commit doit compiler le tronc (trunk) sur une machine d'intégration
  • Maintenir une cycle de compilation court
  • Tester dans un environnement de production cloné
  • Rendre disponible facilement le dernier exécutable
  • Tout le monde doit voir ce qui se passe
  • Automatiser le déploiement

DAns la même lignée : Smoetest

Smoke testing (software)

Voir aussi :

  • Ecrire un test automatique, pour avoir un résultat : OK / KO

Cet article http://www.agiliste.fr/fiches/livra... liste les bénéfices :

  • Feedback rapide : Plus un défaut est corrigé tard, plus il coûte cher (investiguer, reproduire le défaut, revenir sur du code qui n’est pas forcément le sien, qualifier/estimer/arbitrer/planifier/livrer/tester la correction, etc). Le pipeline de Continuous Delivery offre un feedback rapide et évite ainsi des gaspillages parfois considérables. Un feedback quasi immédiat au niveau de l’Intégration Continue et à la semaine au niveau de l’utilisateur final.
  • Meilleure qualité : Il n’est pas surprenant d’apprendre que les équipes ayant mis en place l’intégralité d’un pipeline de Continuous Delivery en plus de piloter les développements par les tests parviennent aux termes de 6 mois de développement avec une quantité d’anomalies se comptant sur les doigts d’une main. A tel point qu’un outil de suivi d’anomalie ou même un indicateur de volume d’anomalies deviennent tout bonnement inutiles. Le Graal de toute équipe de développement en somme.
  • Moins de stress : Le stress porte principalement sur 2 aspects. Les jalons à tenir qui maintiennent un niveau de stress dans la durée et croissant. Et la livraison qui repose sur une procédure généralement très manuelle et porteuse de nombreux changements (le fruits de plusieurs semaines ou mois de travail). En cas de livraison hebdomadaire avec des procédures automatisées, ces facteurs de stress sont considérablement réduits.
  • Bouton « Retour en arrière » : L’automatisation complète de la livraison à partir d’un binaire déjà construit (identique pour chaque environnement) rend la procédure de livraison rapide quelque soit la version visée. En cas de problème avec la livraison de la dernière version, on pourra revenir en arrière facilement grâce à cette même procédure qui aura alors pour cible les binaires de la version précédente.
  • Week-end pour soi : L’automatisation complète et la fiabilisation de la procédure de livraison rendent cette dernière rapide et presque anecdotique. Si rapide qu’il devient inutile de mobiliser une équipe entière tout un samedi pour assurer la livraison avant que les utilisateurs reprennent le travail.
  • Meilleure relation client – fournisseur : Nous l’avons évoqué en introduction l’objectif premier est la satisfaction du client (et des utilisateurs). Une fois att-eint, le principal bénéfice qui en découle est l’acquisition d’une relation de confiance voire de « réel plaisir à travailler ensemble » entre l’équipe de développement, le client et les utilisateurs.

Possibilité d’audit de la livraison : Comment auditer une procédure de livraison manuelle qui s’est mal déroulée ? On ne peut pas se reposer sur la procédure papier car elle ne nous dit pas où une erreur humaine à pu se glisser. En revanche une procédure automatique est auditable.

Pour résumer l'automatisation du déploiement :

  • Moins d'erreurs humaines
  • Moins de stress (sources d'erreur)
  • Moins de tâches répétitives
  • Les tests permettent d'avoir un retour sur le déploiement :OK / KO, on peut aussi à partir des tests, faire un dashboard : vert/rouge

Pour le dev, 3 branches :

  • developpement
  • testing
  • production

Quelques slides puppet orientés windows

Résumé :

  • Cesser de faire de la ligne de commande
  • module puppet powershell
  • On peut installer des packages (applications windows)
    • choisir la version : ex dotnet 4.5
Chocolatey

Une sorte de apt pour windows : https://chocolatey.org/

Résumé :

Un mix intéressant :

  • Puppet / Chocolatey

Résumé :

  • Deux moyens pour installer le système :
  • The Install from CMD.exe as Administrator:
@powershell -NoProfile -ExecutionPolicy unrestricted - Command "iex " && SET PATH=% PATH%;%ALLUSERSPROFILE%chocolateybin
  • ou via Powershell as Administrator:
iex  Reads like Dickens, doesnt it?!
  • installer java
cinst javaruntime
  • installer un client TFTP
cinst -source windowsfeature TFTP
  • "Les humains ne sont pas bons pour les tâches répétitives" sous entendu : ils font des erreurs
  • Utilisation de puppet couplé à chocolatey :
package { 'javaruntime': ensure => 'latest’, provider => ‘chocolatey’, }

Et voilà, la machine windows aura toujours le dernier package java installé

Mémo : Draftsight installation

apt-get install libuuid1:i386 libice6:i386 libsm6:i386 libxt6:i386 libaudio2:i386 libgtk2.0-0:i386 libcanberra-gtk-module:i386 libcanberra-gtk0:i386 libglu1-mesa:i386

+

apt-get install libstdc++6:i386

+

apt-get install libgtk2.0-0:i386
apt-get install libglu1-mesa:i386

debug de l'appli , la lancer via

/opt/dassault-systemes/DraftSight/Linux/DraftSight

Quelques notes sur docker

Notes un peu en vrac

C'est quoi Docker ?

C'est un conteneur d'applications, que les dockers peuvent décharger du bateau :)

On peut prendre :

  • Du code source
  • Des applications
  • Toutes les dépendances liées

Et en faire un objet unique

Qui deviens alors déplaçable facilement :

  • Serveur dédié
  • Cloud (EC2, Google, etc..)

Isolation des processus

Depuis le kernel 3.8 il est possible de faire de l'isolation des processus, cette fonctionnalité s'appelle : LXC

  • Cela ressemble aux VMs
  • Une sorte de chroot avec des stéroïdes
  • Cela ressemble à des processus normaux

Les containers

  • Démarrent en quelques secondes
  • xxx Containers disponibles sur une seule machine

Différences avec les VM

Cas d'une VM :

  • Applications
  • Librairies
  • Système d'exploitation (kernel)
  • Hyperviseur
  • Kernel
  • Matériel

Docker :

  • On a pas le clone de xx Système d'exploitations
  • Donc pas de processus doublons etc..
  • On ne fait que de l'isolation de processus

Est-ce prêt pour la prod ?

De ce qu'en dit cette personne, plusieurs points négatifs :

  • Plus de supervision "classique" des process, genre avec nrpe
  • Augmentation de la complexité de votre système, car il faut l'intégrer

Faisons un essai debian

Source : http://fr.slideshare.net/dotCloud/d...

apt-get install docker.io

en root

docker pull ubuntu
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              14.10               f14704ad99b8        3 days ago          226.8 MB 
ubuntu              utopic              f14704ad99b8        3 days ago          226.8 MB  
ubuntu              14.04.1             96864a7d2df3        3 days ago          205.1 MB
ubuntu              14.04               96864a7d2df3        3 days ago          205.1 MB 
ubuntu              trusty              96864a7d2df3        3 days ago          205.1 MB 
ubuntu              latest              96864a7d2df3        3 days ago          205.1 MB
ubuntu              precise             ec966722cde4        3 days ago          103.8 MB 
ubuntu              12.04.5             ec966722cde4        3 days ago          103.8 MB 
ubuntu              12.04               ec966722cde4        3 days ago          103.8 MB 
ubuntu              12.10               c5881f11ded9        3 months ago        172.2 MB
ubuntu              quantal             c5881f11ded9        3 months ago        172.2 MB 
ubuntu              13.04               463ff6be4238        3 months ago        169.4 MB 
ubuntu              raring              463ff6be4238        3 months ago        169.4 MB
ubuntu              13.10               195eb90b5349        3 months ago        184.7 MB
ubuntu              saucy               195eb90b5349        3 months ago        184.7 MB
ubuntu              10.04               3db9c44f4520        5 months ago        183 MB
ubuntu              lucid               3db9c44f4520        5 months ago        183 MB

Premier test

docker run ubuntu:14.04 echo "test"
test

Premier test : installation d'un haproxy

docker run -i -t ubuntu bash
apt-get update
apt-get install memcached
 docker commit `docker ps -q -l` vieux/memcached
docker run -d -p 11211 -u daemon vieux/memcached memcached
docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                      NAMES
42406b200a36        vieux/memcached:latest   "memcached"         6 seconds ago       Up 5 seconds        0.0.0.0:49153->11211/tcp    desperate_torvalds
telnet localhost 49153 
stats

on est bien sur un memcache

Petite conclusion

C'est très intéressant pour déployer des applications simples sur xxx machines.

Je pense à :

  • Des owncloud derrière un haproxy
  • Des serveurs Lamps de dev / de prod
  • Un wordpress tout packagé prêt à l'emploi

C'est une logique intéressante, car elle ne nécessite pas à chaque fois d'automatiser l'installation complète d'un système d'exploitation complet.

AVec toutes les lenteurs et toute la complexité qui va avec

- page 1 de 262