190 likes | 295 Views
Instrumentez !. Introduction. Instrumentation, 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 .
E N D
Introduction • Instrumentation, 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éveloppeurs • Une technique de débogage parmi d’autres • Une aide au profiling • Pour les administrateurs • Suivi d’activité de la plateforme • Recensement des composants installés • Rétroaction en cas de dysfonctionnement • Pour les utilisateurs • Suivi de l’activité métier
Business process management Reporting MANAGEMENT Supervision Support N1 Diagnostic HELP DESK Monitoring Applicatif PRODUCTION Sécurité ARCHITECTURE DEVELOPPEMENT MAINTENANCE Capacity planning Support N2 Maintenance évolutions & debug Optimisation & tuning
Quelques problèmes • Que 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 vous • Par vous, pour l’administrateur • Par vous ou l’administrateur, pour l’utilisateur • Quelques grands principes • Le principe de Heisenberg • Pas de nouvelles, bonnes nouvelles • L’utilisateur n’est pas là pour déboguer votre code • Vous n’êtes pas seul au monde – votre appli non plus
Déboguer / Auditer / Appréhender • Déboguer • Comprendre les dysfonctionnements de l’application • Tâche du développeur • Vue post-mortem • Auditer • Comprendre le fonctionnement de l’application dans son déroulement normal • Tâche de l’administrateur • Vue instantanée et vue historisée • Monitoring métier • Comprendre le reste du monde à travers des informations applicatives • Tâche de l’utilisateur • Vue 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 OU • Activer 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 pas • Génération ou non de la Pdb • Utilisation des symboles • Compilation conditionnelle • Les symboles DEBUG et TRACE • Les 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 • Log4Net • Portage de Log4j • Réintégré dans la fondation Apache depuis sa dernière version (1.2.10) • EntLib • Successeur de EIF (Enterprise Instrumentation Framework)
Demos • EntLib – pas à pas d’instrumentation • Log4Net – mise en œuvre
Quel framework employer ? • Quels sont vos critères ? • Richesse des appenders • Intégration à la plateforme • Performance • Simplicité d’installation • Périmètre couvert par le framework • Quelles version de .Net couvrez-vous • Devez-vous instrumenter une application ou un système réparti ?
Enterprise Library Data Access Logging Caching Core Plug-in Config Helpers & Design Instrumen-tation Cryptography ObjectBuilder Exception Handling Security Optional ProviderDependency Block Dependency
InstrumentationEvent-Driven Architecture Event Log Application or Block appel Compteurs de performances Instrumentation Listener Class(es) Instrumentation Provider Class(es) event WMI injecte Configuration de l’instrumentation ObjectBuilder
Logging Application Block Data Access Logging Caching Core Plug-in Config Helpers & Design Instrumen-tation Cryptography ObjectBuilder Exception Handling Security Optional ProviderDependency Block Dependency
EntLib • Un lointain descendant des Application Blocks • Enterprise Instrumentation Framework – 2003 • EntLib pour .Net 1.1 – juin 2005 • EntLib pour .Net 2 – Janvier 2006 • EntLib 3 (.Net 2 et 3) – Avril 2007 • EntLib 3.1 – Mai 2007 • Grandes forces • Périmètre • WMI
Log4Net • Un lointain cousin de Log4J • Initialement portage direct • Log4Net : évolutions pour .Net natif • Apache foundation Log4Net • Grandes forces • Simplicité de mise en œuvre • Multi plateformes
Webographie • Instrumentation et WCF • http://www.microsoft.com/france/vision/WebcastMsdn.aspx?EID=87bcba47-6824-4e7c-aa29-d786536a100f • Instrumentation et proxies dynamiqueshttp://www.dotnetguru.org/articles/dossiers/instrumentation/proxiesdynamiques.htm • Instrumentation en .Net : workshopshttp://www.grimes.demon.co.uk/workshops/instrumentationWS.htm • La gestion des assertions en code managéhttp://msdn2.microsoft.com/en-us/library/ttcc4x86.aspx • Articles MSDN sur l’instrumentationhttp://msdn2.microsoft.com/en-us/library/zs6s4h68.aspx • Introduction en français à EntLib (2005)http://www.dotnetguru.org/articles/dossiers/entlib1/FrameworkEnterpriseLibrary_1.htm • Home page de Log4Nethttp://logging.apache.org/log4net/ • Home page de EntLibhttp://www.codeplex.com/entlib