Ah oui, aucun... j'ai juste les yeux qui piquent...
Ah oui, aucun... j'ai juste les yeux qui piquent...
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.
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part print "cpu_usage_"$2, $3;
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
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é.
- 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 :
Tous les caractères exotiques sont remplacés par un point.
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed 's/[^-a-zA-Z0-9_]/./g'
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
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 :
qui me renvoie : expected float value, got "%CPU"
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
et quand je teste de cette manière :
ç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.
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
Le problème est que je n'arrive pas à récupérer cette valeur... j'ai essayé pleins de trucs mais rien ne convient..
je n'avais pas du tout pensé à cela, mais non je n'en ai pas besoin !
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 !
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.
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++
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager