Comment surveiller un processus dans le processeur Linux, la mémoire et le temps

Comment puis-je évaluer un processus sous Linux? J’ai besoin de quelque chose comme “top” et “time” mis en place pour un nom de processus particulier (c’est un programme multiprocessus, tant de PID seront donnés)?

De plus, je voudrais avoir un complot au fil du temps de l’utilisation de la mémoire et du processeur pour ces processus et pas seulement les chiffres définitifs.

Des idées?

Voici les outils pour surveiller un système Linux

  1. Les commandes système comme top , free -m , vmstat , iostat , iotop , sar , netstat , etc. Rien ne se rapproche de ces utilitaires Linux lorsque vous déboguez un problème. Ces commandes vous donnent une image claire qui se passe à l’intérieur de votre serveur
  2. SeaLion : L’agent exécute toutes les commandes mentionnées dans le n ° 1 (également défini par l’utilisateur) et les sorties de ces commandes sont accessibles dans une belle interface Web. Cet outil est pratique lorsque vous effectuez un débogage sur des centaines de serveurs, car l’installation est simple. Et c’est GRATUIT
  3. Nagios : C’est la mère de tous les outils de surveillance / alerte. C’est très personnalisable mais très difficile à configurer pour les débutants. Il existe des ensembles d’outils appelés plugins nagios qui couvrent à peu près toutes les mésortingques Linux importantes
  4. Munin
  5. Densité du serveur : service payant basé sur le cloud qui collecte des mésortingques Linux importantes et permet aux utilisateurs d’écrire leurs propres plug-ins.
  6. New Relic: Un autre service de surveillance hébergé bien connu.
  7. Zabbix

Je prépare généralement un script simple pour ce type de travail.

Regardez la documentation du kernel pour le système de fichiers proc (Google ‘linux proc.txt’).

La première ligne de /proc/stat (Section 1.8 dans proc.txt) vous donnera des statistiques cumulées sur l’utilisation du processeur (c.-à-d. Utilisateur, nice, système, inactif, …). Pour chaque processus, le fichier /proc/$PID/stat (tableau 1-4 dans proc.txt) vous fournira à la fois des statistiques d’utilisation du processeur spécifiques au processus et des statistiques d’utilisation de la mémoire (voir rss).

Si vous allez un peu sur Google, vous trouverez de nombreuses informations détaillées sur ces fichiers et des pointeurs vers des bibliothèques / applications / extraits de code qui peuvent vous aider à obtenir / dériver les valeurs dont vous avez besoin. Dans cet esprit, je me concentrerai sur la stratégie de haut niveau.

Pour les statistiques de processeur, utilisez votre langage de script préféré pour créer un exécutable qui prend un ensemble d’identificateurs de processus pour la surveillance. À un intervalle fixe (ex: 1 seconde), interrogez / calculez les totaux cumulés pour chaque processus et le système dans son ensemble. Pendant chaque intervalle d’interrogation, écrivez tous les résultats sur une seule ligne dans stdout.

Pour les statistiques de mémoire, écrivez un script similaire, mais enregistrez simplement l’utilisation de la mémoire par processus. La mémoire est un peu plus facile puisque nous obtenons directement les valeurs instantanées.

Exécutez ces scripts pendant la durée de votre test, en transmettant l’ensemble des identifiants de processus que vous souhaitez surveiller et en redirigeant la sortie vers un fichier journal.

 ./logcpu $(pidof foo) $(pidof bar) > cpustats ./logmem $(pidof foo) $(pidof bar) > memstats 

Importez le contenu de ces fichiers dans une feuille de calcul (pour certaines applications, c’est aussi simple que copier / coller). Pour le processeur, vous êtes après les valeurs instantanées, mais vous avez des valeurs cumulées. Vous devrez donc travailler sur des feuilles de calcul mineures pour obtenir ces valeurs (ce n’est que le delta ‘t (x + 1) – t (x)’). Bien sûr, votre enregistreur cpu peut écrire le delta, mais vous passerez un peu plus de temps devant le script.

Enfin, utilisez votre feuille de calcul pour générer un beau graphique.