IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Transférer dans un pushgateway des informations sur les processus


Sujet :

Shell et commandes GNU

  1. #21
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 116
    Points : 49
    Points
    49
    Par défaut
    Ah oui, aucun... j'ai juste les yeux qui piquent...

  2. #22
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 116
    Points : 49
    Points
    49
    Par défaut
    Bon du coup, malgré un bon mal de tête et aussi grâce aux diverses remarques et aides que vous m'avez généreusement apporté j'ai réussi à obtenir un petit bout de résultat satisfaisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps aux | awk '$3>0 {print "cpu_usage"$2" "$3""}' | curl --data-binary @- http://localhost:9091/metrics/job/top/instance/machine

    Depuis le terminal je lance le fichier .sh (dans lequel est inscrite la ligne ci dessus), aucun message d'erreur n'est observé. Et ohh! miracle (qui n'en est pas un) je retrouve dans le pushgateway (ouverture d'un navigateur internet à l'adresse http://localhost:9091) la liste des processus et valeurs cpu associées.

    Evidemment la liste est basique et demande à être améliorée mais ça fonctionne...

    Je poursuis cette discussion afin d'arriver complétement à mon objectif.

  3. #23
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "cpu_usage"$2" "$3"";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "cpu_usage_"$2" "$3;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "cpu_usage_"$2, $3;
    Le séparateur de sortie (OFS, Output Field Separator) est l'espace. Donc la dernière des 3 syntaxes, ici proposées, semble la plus naturelle.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #24
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 116
    Points : 49
    Points
    49
    Par défaut
    Oui ça marche bien avec des "" en moins.
    En essayant de transmettre des metrics avec le nom de processus, noms contenant des [ ou / je constate que ces caractères ne sont pas appréciés. Du coup j'ai utilisé la commande "sed" pour remplacer ces caractères, voir la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps aux | awk '$3>0 {print "cpu_usage_"$11"_"$2, $3}' | sed 's/\[//g' | sed 's/\]//g' | sed 's/\///g' | sed 's/-//g' | curl --data-binary @- http://...

    mais comme c'est un peu barbare d'enchainer les "sed" , existe-t'il une astuce pour mettre plusieurs caractères dans une même commande "sed" ? certainement, mais je n'ai pas encore trouvé.

  5. #25
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    • La commande de substitution globale de awk est gsub(). Pas besoin d'innvoquer sed.
    • Tu peux aussi autoriser des caractères, plutôt que d'interdire d'autres. Exemple :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      sed 's/[^-a-zA-Z0-9_]/./g'
      Tous les caractères exotiques sont remplacés par un point.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #26
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 116
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    J'ai besoin d'une petite explication car j'ai modifié la ligne de code afin de définir des labels pour prometheus. Ces labels me permettent de sélectionner une famille de processus plutôt que d'avoir a chaque fois à sélectionner les processus 1 à 1. C'est beaucoup plus pratique, sauf que je bloque sur la récupération de la valeur $3 (valeur cpu en %).
    J'ai fait le test suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps aux| awk '{print "cpu_usage{process=\""$11"\", pid=\""$2"\"}", $3}' | curl --data-binary @- http://localhost:9091/metrics/job/top/instance/machine
    qui me renvoie : expected float value, got "%CPU"

    et quand je teste de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps aux| awk '{print "cpu_usage{process=\""$11"\", pid=\""$2"\"}", "3"}' | curl --data-binary @- http://localhost:9091/metrics/job/top/instance/machine
    ça marche nickel (tous les processus sont affichés avec une conso CPU de 3%. Ce qui confirme que la ligne fonctionne bien et que ce n'est que la récupération de la valeur $3 qui n'est pas bonne.
    Le problème est que je n'arrive pas à récupérer cette valeur... j'ai essayé pleins de trucs mais rien ne convient..

  7. #27
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    as-tu besoin de l'en-tête affiché (sur la première ligne) par ps ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #28
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 116
    Points : 49
    Points
    49
    Par défaut
    je n'avais pas du tout pensé à cela, mais non je n'en ai pas besoin !

  9. #29
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 116
    Points : 49
    Points
    49
    Par défaut
    en fait lorsque je rajoute le $3>0 cela m'enleve la ligne d'entete et du coup cela fonctionne.
    Par contre si il existe une autre astuce pour ne pas afficher la ligne d'entete je suis preneur .

    Merci !

  10. #30
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    ps h aux pour ne pas afficher l'en-tête, à moins que tu tiennes à ne pas afficher les processus qui ne consomment pas de CPU...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #31
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    N_BaH a donné la meilleure réponse. Mais ton retraitement, si tu laisses l'entête en sortie de ps, est moins ($3>0){print "cpu_usa... que (NR>1){print "cpu_usa....
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  12. #32
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 116
    Points : 49
    Points
    49
    Par défaut
    Oui et bien c'est cool ! Vous m'avez bien aidé à résoudre mon problème.
    Merci. J'espère que cette discussion est suffisamment détaillée pour aider d'autres personnes avec ce genre de problématique !
    A++

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/04/2016, 18h44
  2. Réponses: 5
    Dernier message: 02/01/2014, 14h39
  3. Réponses: 6
    Dernier message: 25/09/2007, 19h45
  4. Réponses: 3
    Dernier message: 06/01/2007, 19h11
  5. Récupérer des informations sur les connexions réseau
    Par Leobaillard dans le forum Delphi
    Réponses: 8
    Dernier message: 31/08/2006, 01h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo