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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut Transférer dans un pushgateway des informations sur les processus
    Bonjour je cherche a débugger un script bash qui me permettrait de récupérer des informations processus (informations provenant de la commande $ps aux).

    Le problème c'est que je ne sais pas du tout écrire de script bash alors je galère.

    Du coup je vous présente l'état de mes investigations :

    Tout d'abord je créé l'entête de mon script :

    après je vais passer la commande dans une variable :

    ensuite je veux faire une boucle while, et lire et écrire ligne a ligne les datas affichées à la suite de la commande $ps aux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read -r $cmde
    do
    print "cpu_usage{process=\""$11"\", pid=\""$2"\"},"$3 
    done
    après je souhaite transférer tout ça dans un pushgateway pour afficher des metrics (graphiques de surveillance des processus).

    pour ce faire j'utilise le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -X POST -H "Content-type: text/plain" --data "$var" http://localhost:9091/metrics/job/top/instance/machine
    Le problème qui se pose maintenant est que je n'arrive pas a passer les datas dans le curl.
    Je continue de chercher.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Le problème qui se pose maintenant est que je n'arrive pas a passer les datas dans le curl.
    le vrai problème, c'est que tu ne sais pas ce qu'est une Substitution de commandes.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut
    Bonjour,

    Merci, je ne savais pas que cela s'appelait comme ça.

    en retestant le bout de commande indépendamment de tout le reste il s'avère que la ligne la plus intéressante est celle la (du moins pour moi) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps aux | awk '{print "cpu_usage{process=\""$11"\",pid=\""$2"\"},",$3}'
    avec $11 pour afficher la colonne "COMMAND", $2 pour afficher la colonne "PID" et $3 pour afficher la colonne "%CPU". On pourrait comme ça ajouter les autres colonnes (Memoire, Stat, time, etc...).

    commande que je vais réécrire comme ça pour être plus homogène :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps aux | awk '{print "cpu_usage{process=\""$11"\",pid=\""$2"\",CPU=\""$3"\"}"}'
    ou la commande awk permet d'appliquer la commande print ... à chaque lign (si j'ai tout bien compris).

    Sur ce point, je pense que c'est bon.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut
    Je continue dans mes investigations et je passe maintenant à la boucle while.
    Afin d'être certain que cette boucle est bien opérationnelle avec la commande ps aux recherchée, je teste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
    while true
    do
        ps aux | awk '{print "cpu_usage{process=\""$11"\",pid=\""$2"\",CPU=\""$3"\"}"}'
    done
    au delà des possibles fautes de frappes "\""\ lors de la recopie du code, ce dernier fonctionne correctement est m'affiche sans interruption la liste des processus avec informations associées.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par erwannoo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
    while true
    do
        ps aux | awk '{print "cpu_usage{process=\""$11"\",pid=\""$2"\",CPU=\""$3"\"}"}'
    done
    au delà des possibles fautes de frappes "\""\ lors de la recopie du code, ce dernier fonctionne correctement et m'affiche sans interruption la liste des processus avec informations associées.
    Pour (partielle) info, il existe des options de ps qui permettent de sélectionner les informations à retourner sans passer par awk.

    Je crois qu'il s'agit de l'option -o, mais, comme mon mac n'est pas sous linux, je ne peux pas facilement être plus précis...

    De plus, la cohérence des man en ligne n'est pas évidente:
    Le man ps français mentionne "O" mais pas "o",
    alors que le man ps anglais mentionne bien "-o", avec l'exemple ps -o pid=X,comm=Y.

    De plus, manifestement, l'utilisateur utilise les options BSD (sans tiret).

    Or il est indiqué que
    Note that ps -aux is distinct from ps aux.
    Après, si l'utilisation de awk fonctionne bien...

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut
    Merci pour ces précisions,
    je teste actuellement la sélection de process dont le CPU est supérieur à 1%, voici la commande qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps aux | awk '$3>1 {print "cpu_usage{process=\""$11"\",pid=\""$2"\",CPU=\""$3"\"}" }'
    cette commande me retourne donc les quelques lignes dont les processus ont une consommation CPU supérieure à 1%

    Maintenant ce que je vais essayer de faire, c'est de transférer ces lignes au pushgateway via une commande de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl --data-binary @- http://localhost:9091/metrics/job/some_job
    mais la je ne sais pas encore trop comment m'y prendre...

+ Répondre à la discussion
Cette discussion est résolue.

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