Instrumentez !
description
Transcript of Instrumentez !
Instrumentez !
IntroductionInstrumentation, by Wikipedia
En sciences, l’instrumentation est une technique de mise en œuvre d'appareils de mesures, d'actionneurs, de capteurs, de contrôleurs en vue de créer un système d'acquisition de données ou de commande. En informatique ? « the ability to monitor a product's performance and to diagnose errors. »
Et pour nous ?
Quelques buts de conception
Pour les développeursUne technique de débogage parmi d’autresUne aide au profiling
Pour les administrateursSuivi d’activité de la plateformeRecensement des composants installésRétroaction en cas de dysfonctionnement
Pour les utilisateursSuivi de l’activité métier
MANAGEMENT
PRODUCTION
HELPDESK
ARCHITECTUREDEVELOPPEMENT
MAINTENANCECapacity planning
Diagnostic
Supervision
Reporting
Sécurité
Optimisation & tuningMaintenance évolutions
& debug
Support N2
Support N1
Business process management
MonitoringApplicatif
Quelques problèmesQue faut-il mesurer ?Où faut-il envoyer l’information collectée ?Quels sont les pièges classiques à éviter ?Comment instrumenter un système réparti ?Quels sont les frameworks disponibles ?
Que faut-il mesurer ?Les grandes familles de mesures
Par vous, pour vousPar vous, pour l’administrateurPar vous ou l’administrateur, pour l’utilisateur
Quelques grands principesLe principe de HeisenbergPas de nouvelles, bonnes nouvellesL’utilisateur n’est pas là pour déboguer votre codeVous n’êtes pas seul au monde – votre appli non plus
Déboguer / Auditer / Appréhender
DéboguerComprendre les dysfonctionnements de l’application
Tâche du développeurVue post-mortem
Auditer Comprendre le fonctionnement de l’application dans son déroulement normal
Tâche de l’administrateurVue instantanée et vue historisée
Monitoring métierComprendre le reste du monde à travers des informations applicatives
Tâche de l’utilisateurVue répartie sur N systèmes, souvent appelé BAM
Quelques pièges – « Debug »
En .Net, être en mode debug peut signifier
Demander au compilateur de fonctionner dans un mode spécifique, et d’extraire plus d’informations que d’habitude lors de la compilation
OUActiver un symbole lors de la compilation, sans forcément effectuer les opérations ci-dessus (par exemple pour effectuer de la compilation conditionnelle)
Démo – premiers pasGénération ou non de la PdbUtilisation des symbolesCompilation conditionnelleLes symboles DEBUG et TRACELes méthodes associées
OK, on peut le faire à la main
.. Mais il va nous rester un tas de choses à régler
Où envoyer les infos ?Comment rendre paramétrable ?Est-ce que mon implémentation est compatible avec celle du voisin ?Est-ce que je vais survivre aux évolutions du frameworl .Net
On se tourne la plupart du temps vers des frameworks pour les logs et l’instrumentation
Les frameworks de log / instrumentation
Historiquement deux grands Frameworks
Log4NetPortage de Log4jRéintégré dans la fondation Apache depuis sa dernière version (1.2.10)
EntLibSuccesseur de EIF (Enterprise Instrumentation Framework)
DemosEntLib – pas à pas d’instrumentationLog4Net – mise en œuvre
Quel framework employer ?
Quels sont vos critères ?Richesse des appendersIntégration à la plateformePerformanceSimplicité d’installationPérimètre couvert par le frameworkQuelles version de .Net couvrez-vousDevez-vous instrumenter une application ou un système réparti ?
Caching
Security
Data Access Logging
ExceptionHandling
Enterprise Library
Plug-inConfig
Helpers & Design
Instrumen-tation
ObjectBuilder
Cryptography
Core
Block Dependency Optional ProviderDependency
InstrumentationEvent-Driven Architecture
InstrumentationProviderClass(es)
InstrumentationListenerClass(es)
Configuration de l’instrumentation
WMI
Compteurs de performances
EventLog
event
ObjectBuilder
injecte
Application or Blockappel
Caching
Security
Data Access Logging
ExceptionHandling
Logging Application Block
Plug-inConfig
Helpers & Design
Instrumen-tation
ObjectBuilder
Cryptography
Core
Block Dependency Optional ProviderDependency
EntLibUn lointain descendant des Application Blocks
Enterprise Instrumentation Framework – 2003EntLib pour .Net 1.1 – juin 2005EntLib pour .Net 2 – Janvier 2006EntLib 3 (.Net 2 et 3) – Avril 2007EntLib 3.1 – Mai 2007
Grandes forcesPérimètreWMI
Log4NetUn lointain cousin de Log4J
Initialement portage directLog4Net : évolutions pour .Net natifApache foundation Log4Net
Grandes forcesSimplicité de mise en œuvreMulti plateformes
WebographieInstrumentation et WCFhttp://www.microsoft.com/france/vision/WebcastMsdn.aspx?EID=87bcba47-6824-4e7c-aa29-d786536a100fInstrumentation et proxies dynamiqueshttp://www.dotnetguru.org/articles/dossiers/instrumentation/proxiesdynamiques.htmInstrumentation en .Net : workshopshttp://www.grimes.demon.co.uk/workshops/instrumentationWS.htmLa gestion des assertions en code managéhttp://msdn2.microsoft.com/en-us/library/ttcc4x86.aspxArticles MSDN sur l’instrumentationhttp://msdn2.microsoft.com/en-us/library/zs6s4h68.aspxIntroduction en français à EntLib (2005)http://www.dotnetguru.org/articles/dossiers/entlib1/FrameworkEnterpriseLibrary_1.htmHome page de Log4Nethttp://logging.apache.org/log4net/Home page de EntLibhttp://www.codeplex.com/entlib