[TUTO] Une autre stratégie pour la surveillance des démons

Apres le principe de mon approche (scenar en php) est qu’il peut devenir dynamique avec quelques modifications de code… le jour où tu supprimes un daemon (en désinstallant un plugin par exemple) il se supprime tout seul dans les notifications.

des que je maitriserai un peu les designs, je ferai une version graphique de mon tuto :slight_smile:

Elle se trouve où l’option Bash ?
Moi je n’ai que 2 possibilités d’ajouts de commandes : perso1 et perso2 et pas d’option Bash comme tu le montre.

Il faut utiliser le plugin Monitoring :
image
Tu spécifies comment tu veux monitorer (bash, snmp, etc.) ensuite pour chaque commandes tu spécifies le protocole ou le moteur.

cdt

1 « J'aime »

Il s’agit du plugin officiel Monitoring2 de jeedom :wink:
https://jeedom.github.io/plugin-monitoring2/fr_FR/

@phil38 + @kaktusatomik
Ok merci

Hello,
Suite aux problèmes du demon alexaAPI, j’ai souhaité suivre votre conseil. Je fais cette requête bash avec le plugin Monitoring2:

ps -eo ppid,stat,cmd | grep -e '^ 1 ’ | awk ‹ /Alexaapi/ {print $2} ›
OU
ps -eo ppid,stat,cmd | grep -e '^ 1 ’ | awk ‹ /Alexaapi// {print substr($2,1,1)} ›

Dans les 2 cas, le résultat de la commande est vide…

Est ce que j’ai oublié quelquechose? Pourriez vous m’aider?

Merci,

pignonson

1 « J'aime »

Il te manque les < > de chaque coté de < /Alexaapi/ {print $2} >

Hello Gerard
Ces commandes continuent à me renvoyer des réponses vides.

ps -eo ppid,stat,cmd | grep -e '^ 1 ’ | awk </Alexaapi/ {print $2}>
OU
ps -eo ppid,stat,cmd | grep -e '^ 1 ’ | awk </RFXcom/ {print substr($2,1,1)}>

Est ce qu’il y’aurai un tweakage particulier à faire sur Jeedom ou sur mon équipement du plugin monitoring?

Merci

Bonjour,
La commande awk accepte ses paramètres entre simple ou double quotes:
awk ‹ … › ou bien awk « … »
il n’y a pas de < ou de >

cdt

si tu utilise </> sur une nouvelle ligne tu peut insérer ton texte sans qu’il soit modifier

awk ' … ' ou bien awk " … "

Même chose pour moi, le retour de commande est vide.Voici ce que je saisie :

ps -eo ppid,stat,cmd | grep -e '^ 1 ’ | awk ‹ /deconz/ {print $2} ›

EDIT :
J’ai essayé les différentes écritures proposées mais même résultat.

Pour bien débugger, il faut utiliser les 3 commandes individuellement depuis une session shell sur la cible:

  • tapez ps -eo ppid,stat,cmd et vérifiez que la ligne qui contient deconz apparait
  • tapez ps -eo ppid,stat,cmd | grep -e '^ 1' et vérifiez que la ligne qui contient deconz apparait. La difficulté ici est compter le nombre de blancs avant le 1 en chaque début de ligne. La commande grep sert à correctement filter les lignes.
  • enfin tapez les 3 commandes pour identifiez le statut de deconz

cdt

Merci @phil38 pour ton aide.

Lorsque je saisis ps -eo ppid,stat,cmd, je retrouve bien deconz, blea et arlo

Lorsque je saisis ps -eo ppid,stat,cmd | grep -e ‹ ^ 1 › , je n’ai que cela qui s’affiche.

pi@raspberrypi:~ $ ps -eo ppid,stat,cmd | grep -e ‹ ^ 1 ›
1189 S /usr/bin/vncserverui -statusicon 5
1155 Z [sh]
1155 Sl lxterminal
1155 Sl leafpad

Ok c’est donc la commande grep et son filtre qui doit être ajustée.
Quand tu fais la commande ps... il faut trouver la ligne qui contient deconz (par exemple) et tu dois compter le nombre de blancs (d’espaces) depuis le début de ligne jusqu’au chiffre 1. Explication: chaque démon possède un PPID égal à 1. C’est cette manière que j’ai choisi pour filter les toutes les lignes de ps...
Ensuite tu ajuste la commande grep -e en gardant le signe ^ (qui signifie début de ligne), par exemple grep -e '^ 1 ' (4 blancs devant le 1). Attention: il y a toujours un blanc après le 1 (c’est-à-dire PPID est égal à 1 et non pas PPID contient un 1)
Bon courage

1 « J'aime »

Voici la ligne de deconz

1 Sl   /usr/bin/python3 /var/www/html/plugins//resources/deconzd/deconzd.py --loglevel none --socketport 55088 --callback http

J’ai 4 espaces devant le 1, mais je n’ai pas compris ce que je devais en faire, désolé :frowning:

EDIT : compris ! Donc l’étape 2 fonctionne ps -eo ppid,stat,cmd | grep -e ‹ ^ 1 ›

Tu écris ta commande grep avec:
grep -e '^ puis tu tapes les 4 espaces puis tu ajoutes le 1 puis tu tapes encore un espace puis tu fermes avec la dernière quote '
Ainsi tu composes le filtre des lignes

lorsque je fais l’étape 3 avec (4 espaces) ps -eo ppid,stat,cmd | grep -e '^ 1’ | awk ‹ /deconz/ {print $2} › ,cela me met le symbole >

image

alors que je devrai avoir SL, non ?

La commande awk reçoit elle-aussi des arguments entre simples quotes '...'
Il n’y a pas de caractères < ou > etc. Exemple :
awk '/deconz/ {print $2}'

Bonjour
Il existe une version (qui marche aussi) avec seulement 2 commandes. Voici un exemple avec le demon teleinfo :
ps -eo ppid,stat,run | awk '/teleinfo/ && $1 == 1 {print $2}'

Pas besoin de compter les espaces
cdt

1 « J'aime »

lorsque je fais awk ‹ /deconz/ {print $2} › , il ne se passe rien
image

et lorsque je fais ps -eo ppid,stat,run | awk ‹ /deconz/ && $1 == 1 {print $2} ›, cela m’indique :

pi@raspberrypi:~ $ ps -eo ppid,stat,run | awk '/deconz/ && $1 == 1 {print $2}'error: unknown user-defined format specifier « run »

Usage:
ps [options]

Try ‹ ps --help <simple|list|output|threads|misc|all> ›
or ‹ ps --help <s|l|o|t|m|a> ›
for additional help text