2010-07-31 5 views

Répondre

30

pour vérification rapide, j'utilise cette bash one-liner:

(echo status ; sleep 0.1) | netcat 127.0.0.1 4730 

cela ouvre une connexion à une instance gearman en cours d'exécution sur localhost, et envoie le statut requête. Cela contient le nom et le nombre de travaux sur cette instance. Les informations peuvent ensuite être traitées avec grep/awk/wc etc. pour la création de rapports et l'alerte.

Je fais aussi la même chose avec la travailleurs requête qui montre tous les travailleurs connectés.

(echo workers ; sleep 0.1) | netcat 127.0.0.1 4730 

La veille est de garder la connexion ouverte assez longtemps pour la réponse.

La liste complète des commandes d'administration et la signification des moyens de sortie sont http://gearman.org/protocol/. Recherchez simplement "Protocole administratif".

+1

curiosité: pourquoi le sommeil 0,1 nécessaire? La commande équivalente pour, par exemple, memcached n'a pas besoin de sommeil. – mjs

+0

Je devais utiliser nc au lieu de netcat mais sinon ça marchait bien! – Nate

1

Il ne semble pas qu'il y ait des moyens immédiats pour obtenir cette information.

Voici quelques options. Tout d'abord, if you can grab job handles as you create them (recherchez "En parlant de vérifier l'état"), vous pouvez les stocker dans un endroit central et interroger à leur sujet à partir de n'importe quel client. Deuxièmement, vous pouvez configurer votre serveur Gearman pour utiliser persistent queues, puis exécuter une requête par rapport à la file d'attente vous-même. Cela pourrait être le plus facile et le plus propre des deux options.

+0

+1 pour l'utilisation des files d'attente persistantes: cela permet aussi d'avoir un meilleur contrôle sur la file d'attente –

1

Gearmand dispose d'une interface telnet que vous pouvez interroger. (Les détails exacts du protocole peuvent être trouvés sur le site web de gearman - http://gearman.org/?id=protocol)

J'ai utilisé ce code ici comme point de départ pour lancer le mien. https://github.com/liorbk/php/blob/master/GearmanTelnet.php (ce code est parfaitement bien par lui-même et vous devriez être en mesure d'abandonner l'utilisation hors de la boîte)

Il y a moins de solution assez, mais jusqu'à ce que quelqu'un améliore l'interface d'administration gearman de sorte que vous pouvez parler directement via PHP ou écrit un plugin pour cela, vous êtes sur votre propre

12

Pour développer la réponse de d5ve, ajoutez un paramètre -w pour "expirer" votre connexion netcat, sinon vous ne reviendrez jamais à une invite de commande.

$ (echo status ; sleep 0.1) | sudo netcat 127.0.0.1 4730 -w 1 
+0

Je ne peux pas proposer un changement de caractère, mais l'utilisation de # comme caractère d'invite fait que l'analyseur interprète la ligne de code comme un commentaire et l'assombrit. – bschlueter

4
telnet localhost 4730 
status 

worker_name total_queue currently_running number_of_workers 
job1   1   1     9 
+0

Merci pour l'explication des colonnes – Aleksey

Questions connexes