Monitoring d'applications/environnements PHP : APM et Pinba Davide Mendolia - Patrick Allaert FORUM PHP Paris 2009
Davide Mendolia http://davidemendolia.blogspot.com/
dmendolia@php.net ou @davideme (Twitter)
Développeur principal  APM .
Contributeur de  php-benchmark .
http://www.php-ci.net/
Travaille chez  Tuenti .
Réseau social , basé à Madrid.
Plus de 20 milliards de pages vues/mois.
Premier site web espagnol devant Google, Microsoft et Facebook (Comscore).
Environnement de travail international (15 différentes nationalités).
On recherche des développeurs!!!
Patrick Allaert http://patrickallaert.blogspot.com/
patrickallaert@php.net ou @patrick_allaert (Twitter)
Développeur principal  APM .
Travaille chez  eZ Systems  (eZ Publish, eZ Components).
Organisateur  PHPBenelux ( http://www.phpbenelux.eu/ ).
Patrick Allaert Démarre la programmation avec PHP 3.
Dix ans d'évangélisme sur le Logiciel Libre.
Contributions à : PHP (ext/ldap, QA : PHPT),
KDESvn (client Subversion pour KDE),
XOo°f (eXtensible Open Object Oriented Framework),
Tabellio (suite collaborative pour assemblée parlementaire).
Monitoring : Définition ? Activité de surveillance et de mesure.
Domaines : l'état physique d'une machine;
la charge d'une machine;
disponibilité applicative;
les messages inscrits en logs systèmes;
les performances du réseau;
les attaques connues.
Monitoring : Pourquoi ? Besoin en terme de disponibilité grandissant.
Souci d'économie.
Expérience utilisateur.
Monitoring : Pourquoi ? « Quand j'arrive sur la page d'accueil j'ai une page blanche […] » « Sérieux? Un moment, je regarde […] » « Nous sommes au courant du problème, nos ingénieurs ont trouvés la solution. Tout sera rentré dans l'ordre dans 5 minutes » « Ho, oui, vous avez raison!? »
Monitoring: Présentation Monitoring du P de LAMP. En particulier : gestion d'erreurs en PHP,
performance d'exécution.
Quelles sont les solutions ? Actuelles : PHP;
Zend Platform. Nouveaux venus : APM (Alternative PHP Monitor);
Pinba.
PHP : fonctions intégrées error_reporting;

Monitoring d'applications/environnements PHP: APM et Pinba

Notes de l'éditeur

  • #7 Surveiller d'eventuellle erreur comportementale de l'application. Surveiller au niveau des performances, afin de prevoir d'eventuel probleme
  • #12 Page de demo avec E_NOTICE et autre, Display avec tail
  • #15 Tail -f /var/log/php/error.log Page vide de apm.php Puis generation d'une page d'erreur Affichage de apm.php Recommecer avec mutilple erreur
  • #16 Rappel, qu'est ce que APC, Xdebug, … Compatbilité totale avec le monde du LL
  • #23 Compatbilité totale avec le monde du LL
  • #24 L'extension PHP Pinba envoie un paquet UDP lors de la terminaison d'une requête qui contient des informations comme: hostname - gethostname() result request_count - number of requests served by this process server_name script_name document_size - size of the response body memory_peak - memory allocation peak request_time - time spent of processing the request ru_utime - resource usage (user) ru_stime - resource usage (system) timers - array of timers (optional) De la nature UDP, aucune connexion n'est réalisée, ce qui permet d'avoir aucun impacte de performance, mais des pertes de paquets pourraient se produire. De l'autre coté, le plugin MySQL Pinba écoute sur le port configuré pour récupérer les paquets et les décoder afin de les stocker dans ses pools d'enregistrements ainsi que de mettre à jour les index, les rapports de bases et rapports de tags si ils existent.
  • #30 Raw data tables contain raw request data (surprise!). Please bear in mind that access to the raw data is relatively slow (the number of records might reach millions and there are NO indexes except for primary keys, so almost any operation requires full table scan). Reports were created in order to speed up the most frequent operations by aggregating data on-the-fly, when new request data arrives.