2014-11-20 5 views
5

Sto eseguendo Celery 3.1.16 con un back-end RabbitMQ 3.4.1 e utilizzando Flower 0.7.3 su Python3.4 per monitorare i miei compiti di sedano. Ho diverse attività in esecuzione e posso visualizzare i risultati nella scheda attività di Celery Flower.Come visualizzare tutti i grafici nella scheda di Celery Flower Monitor

Nella scheda monitor, ci sono 4 sezioni. Attività completate, attività non riuscite, orari delle attività e broker. Di questi 4, solo la vista Broker mostra un grafico 'traffico'. Esiste un'impostazione per consentire agli altri grafici di mostrare alcune statistiche?

flowerconfig.py

# Broker settings 
BROKER_URL = 'amqp://guest:[email protected]:5672//' 

# RabbitMQ management api 
broker_api = 'http://guest:[email protected]:15672/api/' 

#Port 
port = 5555 

# Enable debug logging 
logging = 'INFO' 

Supervisore: flower.conf

[program:flower] 
command=/opt/apps/venv/my_app/bin/celery flower --app=celery_conf.celeryapp --conf=flowerconfig 
directory=/opt/apps/my_app/celery_conf 
user=www-data 
autostart=true 
autorestart=true 
startsecs=10 
redirect_stderr=true 
stderr_logfile=/var/log/celery/flower.err.log 
stdout_logfile=/var/log/celery/flower.out.log 

Mentre erano in esso, nel grafico Broker, ho due code uno verde del othe rosso. Tuttavia, quello che mostra nel grafico è quello rosso, ma entrambi sono in esecuzione e posso visualizzare i risultati dalla finestra Attività.

ho notato qualcosa di strano nel Scheda Configurazione sotto lavoratori Tab in Fiore. Il CELERY_ROUTE e CELERY_QUEUES stanno mostrando liste come vuoti, mentre tutti gli altri campi sembrano raccolti i dati corretti dal file celeryconfig

BROKER_URL amqp://guest:********@localhost:5672// 
CELERYBEAT_SCHEDULE {} 
CELERYD_PREFETCH_MULTIPLIER 0 
CELERY_ALWAYS_EAGER False 
CELERY_AMQP_TASK_RESULT_EXPIRES 60 
CELERY_CREATE_MISSING_QUEUES False 
CELERY_DEFAULT_EXCHANGE default 
CELERY_DEFAULT_QUEUE default 
CELERY_DEFAULT_ROUTING_KEY ******** 
CELERY_IMPORTS ['student.admission', 'student.schedule'] 
CELERY_INCLUDE ['celery.app.builtins', 'student.schedule', 'student.admission'] 
CELERY_QUEUES [{}, {}, {}, {}, {}]  #<==== Should it show an empty list? 
CELERY_RESULT_BACKEND amqp://guest:[email protected]:5672// 
CELERY_ROUTES [{}, {}, {}, {}]  #<==== Should it show an empty list? 
CELERY_STORE_ERRORS_EVEN_IF_IGNORED True 
CELERY_TASK_RESULT_EXPIRES 3600 

Il celeryconfig.py si presenta come di seguito:

BROKER_URL = 'amqp://guest:[email protected]:5672//' 
CELERY_RESULT_BACKEND = 'amqp://guest:[email protected]:5672//' 

#Task settings 
CELERY_TASK_RESULT_EXPIRES = 3600 
CELERY_AMQP_TASK_RESULT_EXPIRES = 60 
CELERYD_PREFETCH_MULTIPLIER = 0 
CELERY_ALWAYS_EAGER = False 
CELERY_CREATE_MISSING_QUEUES = False 
CELERY_STORE_ERRORS_EVEN_IF_IGNORED = True 

#Scripts to be imported 
CELERY_IMPORTS=('student.admission', 'student.schedule') 

#Celery Exchanges, Queues, Routes 
default_exchange = Exchange('default', type='direct') 
student_admission_exchange = Exchange('student_admission_exchange', type='direct', durable=False) 

CELERY_QUEUES = (
    Queue('default', default_exchange, routing_key='default'), 
    Queue('student_admission_queue', student_admission_exchange, routing_key='admission', durable=False), 
) 
CELERY_ROUTES = (
       {'student.admission.admit': {'queue': 'student_admission_queue','routing_key': 'admission'}}, 
        ) 
CELERY_DEFAULT_QUEUE = 'default' 
CELERY_DEFAULT_EXCHANGE = 'default' 
CELERY_DEFAULT_ROUTING_KEY = 'default' 

Modifica

Come vedo non sono l'unico bloccato su questo, anche se includo lo screenshot dei grafici "mancanti" come guida.

Celery: Uncharted Graphs

+0

Penso che la cosa migliore che potresti fare sia aprire un problema sul bug tracker di Flower GitHub. Non penso che le impostazioni CELERY_ROUTES e CELERY_QUEUES mancanti abbiano nulla a che fare con questo; grepping attraverso la fonte non mostra che vengano usati ovunque. Fonte: ho lo stesso problema. – jvkersch

risposta

1

Nel mio caso questo non era un problema con il fiore in sé, ma il fatto che i timestamp sui miei compiti non erano accurate (come esposto dal messaggio "deriva dal sostanziale *** può significare orologi sono fuori sincrono "nei miei registri di Celery). Riparare l'orologio potrebbe essere la risposta.

Fiore indica se un evento è nuovo (e quindi deve essere tracciato) confrontando il timestamp sull'evento con il timestamp dell'ultimo aggiornamento del grafico (vedere https://github.com/mher/flower/blob/master/flower/views/monitor.py#L47). Nel mio caso, quel confronto era sempre Falso, quindi nessun evento veniva tracciato.

+0

Quale orologio dovrei cambiare? Il sedano, il fiore sono in una macchina e se una data di esecuzione mi mostra 'Sab 10 gennaio 19: 49: 34' che è la data corretta. Se vado in Tasks Tab in Celery, vedo l'ultimo compito eseguito la sua presentazione 'Received 2015-01-10 19: 49: 46.709552' e' Started \t 2015-01-10 19: 49: 46.711021', entrambi sono corretti. Quindi di quale orologio stiamo parlando qui? – lukik

+0

Non lo so (ho finito col fare il quick'n'dirty e aggiustando la clausola 'if' in Flower perché avevo solo un tempo limitato e non riuscivo a capire la causa sottostante). Aggiornerò la mia risposta se ne saprò di più.Nel frattempo suggerirei di stampare i timestamp sugli eventi in uno dei monitor e vedere se qualcosa è spento. – jvkersch

+0

Il timestamp è generato su javascript, che ritengo sia un errore, perché non generarlo su python che utilizza l'orologio del server? Questo accade su Flower 0.9.1, che è l'ultima versione fino ad oggi. – Hassek

Problemi correlati