[django-celery]监控管理指南

原文地址: http://docs.celeryproject.org/en/3.0/userguide/monitoring.html 

celery3 和3.1的版本配置和使用有些不同,这篇文章主要说的是3.0版本。


介绍:

对于celery组的监控和检查有几个可以使用的工具的。

这个文档描述了其中的几个,也包括他们的和监控有关的特性,例如事件和命令行使用。

celeryctl: workers管理工具

Celeryctl 是一个用来检测和控制celery工作节点的命令行工具。

查看这个命令所有的选项:

$ celeryctl help

或者获取一个特定命令的帮助

$ celeryctl <command> --help

命令:

status: 列出集群中活动的节点

$ celeryctl status

result: 查看一个任务的结果

$ celeryctl result -t tasks.add 4e196aa4-0141-4601-8138-7aa33db0f577

注意你可以省略任务的名字只要它不是使用一个自定义的结果端。

 purge: 清除来自所有已经配置的任务队列的信息。

$ celeryctl purge

警告 这是一个无法撤销的操作,并且所有的信息会被永久的删除。

inspect active: 列出活动的任务

$ celeryctl inspect active

就是当前正在执行的所有任务。

inspect scheduled: 列出所有计划的任务

$ celeryctl inspect scheduled

这些任务被worker保留下来,因为他们含有eta 或者是 countdown 参数。

inspect reserved列出保留的任务

$ celeryctl inspect reserved

这里将会列出worker预取出的所有任务,他们即将被执行(不包括那些计划的任务)

inspect revoked: 列出被取消的任务的历史

$ celeryctl inspect revoked

inspect registered_tasks:列出注册的任务

$ celeryctl inspect registered_tasks

inspect stats: 列出worker的统计

$ celeryctl inspect stats

inspect enable_events: 启用事件

$ celeryctl inspect enable_events

inspect disable_events: 禁用事件

$ celeryctl inspect disable_event
所有的inspect 命令都支持- -timeout参数,这代表等待响应的秒数。如果你不能及时得到一个命令的响应就有可能需要增加timeout的时间了。
明确节点:

默认情况下inspect命令会列出所有的workers的情况。你也可以明确的指出哪一个,或者使用destination 参数列出一组的workers情况

$ celeryctl inspect -d w1,w2 reserved

Django Admin 

当你添加django-celery到项目中时就会自动的把celery监控变成Django admin 的接口。

如果你没有使用celery在你的Django项目中,你仍然可以这么使用。

截图如下:


开始监控

即使celery的界面已经在你的admin 接口中了,但是你没有开启snapshot camera(快照)功能的话是仍然看不到数据的。

这个相机会对你的workers发送的事件进行固定时间间隔拍照,然后存储到你的数据库中。

启动相机:

$ python manage.py celerycam

如果你之前没有启用事件发送的话那么你需要做如下的操作:

$ python manage.py celeryctl inspect enable_events

Tip:

你可以在worker启动的时候添加 -E 参数到celery来启用事件。 


现在相机已经被启动了,事件也被启用了,你应该可以在admin的接口中看到你的workerstasks了(可能需要花一些时间才能看到workers的数据)

admin 接口可以显示tasksworknodes, 甚至可以进行一些操作,例如撤销和限制任务,或者是停止worknodes

快门频率:

默认情况下是每秒一个快照,如果你觉得这个频率太高或者是你还想提高频率,你可以通过--frequency参数来改变。这是一个用浮点数描述的频率,在很短的时间内,他就会被唤醒去检查是否有新的事件发生。

$ python manage.py celerycam --frequency=3.0

相机也可以使用--maxrate参数来限制速度。频率是用来控制相机线程唤醒的间隔,速度限制是用来控制多久照一个快照。

 

这个速度限制可以通过/s ,/m, /h精确到秒,分,小时.例如:--maxrate=100/m, 表示一分钟一百次。

默认情况下速度限制是关闭的,这也就意味着每次--frequency  参数时间会照一个快照。

在一段时间以后事件也会过期,所以数据库并不会爆满。 成功的任务会在一天后删除, 失败会在三天后删除,其他状态的任务会在5天之后删除。

Django之外的使用

django-celery  也可以安装djcelerymon  程序。这样就可以用于不使用django的用户,在一个进程中同时运行web服务和celery快照。

安装: 

使用pip:

$ pip install -U django-celery

或者使用easy_install:

$ easy_install -U django-celery

运行:

Djcelerymo 从你的Celery配置模块中读取配置使用Django环境需要做如下的配置:

$ djcelerymon

第一次运行这个监控程序的时候数据库表会被创建。默认情况下一个名叫djcelerymon.dbsqlite3 数据文件会被使用,所以要确认运行监控程序的用户对此文件有写权限。

如果你想把时间存储到别的类型的数据库中,例如mysql,你可以在你的Celery配置模块中直接配置DATABASE*  选项。 详细请参见:http://docs.djangoproject.com/en/dev/ref/settings/#databases 

你将被要求创建一个超级用户(你也需要创建一个超级用户来登陆amdin

Creating table auth_permission
Creating table auth_group_permissions
[...]
 
You just installed Django's auth system, which means you don't
have any superusers defined.  Would you like to create
one now? (yes/no): yes
Username (Leave blank to use 'username'): username
Email address: [email protected]
Password: ******
Password (again): ******
Superuser created successfully.
 
[...]
Django version 1.2.1, using settings 'celeryconfig'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

现在服务已经启动,你可以通过访http://127.0.0.1:8000问监控系统,然后使用你创建的用户登陆。

Djcelerymon 也支持一系列有用的命令,具体参看 djcelerymon --help.


更多的监控插件和程序请参见:http://docs.celeryproject.org/en/3.0/userguide/monitoring.html

 


你可能感兴趣的:(django,python,snapshot,celery)