BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

MeilleursAgents是如何监控分布式任务队列的

| 作者 Hrishikesh Barua 关注 12 他的粉丝 ,译者 张卫滨 关注 13 他的粉丝 发布于 2018年3月5日. 估计阅读时间: 4 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

MeilleursAgents网站能够列出资产卖家的资产及其评估的价格,该网站分享了他们基于Celery的分布式任务队列是如何监控的。由Python、StatsD、Bucky、Graphite和Grafana联合组成的管道能够监控任务的生命周期和执行率。

该文主要关注他们是如何监控Celery运行的。Celery是一个由Python编写的分布式任务队列,它使用broker-客户端模式来分配任务给工作者(worker)。监控分布式任务队列是非常困难的,因为工作者节点是分布式的,很难跟踪特定请求的状态,如果跨多个系统的话,则会更加困难。但是,这种情况下的监控是关于整体成功/失败以及执行率的。每个阶段任务的累积数量,即已接收的(received)、已处理的(processed),也能反映出任务队列是否有速度减缓的情况。InfoQ联系到了MeilleursAgents的工程主管Pierre Boeuf来学习这一话题。

指标收集管道包含Python客户端,它会监听Celery事件并使用StatsD API将数据推送至StatsD。然后,数据会被发送至Bucky,Bucky会将数据写入到Graphite中。 Bucky会运行一个服务器,将传入的指标数据进行处理并转换成Graphite能够理解的格式。Bucky所接收的指标可以是StatsD或Collectd这种指标工具所收集到的原始数据,如果Graphite无法理解传入的指标格式的话,那么Bucky就派上用场了。在MeilleursAgents,Graphite安装时使用了Whisper作为后端数据库。Boeuf说团队在使用Graphite中还没有遇到扩展性方面的问题:

我们遇到的唯一扩展性相关的问题是因为将StatsD和Graphite放到了同一台服务器上。随着请求的增加,它出现了过载,所以我们现在在每台机器上都有本地Bucky,它会推送指标数据。

Grafana用来作为查询指标的前端。监控项包括任务、broker以及工作者。按照Boeuf的说法,Web和数据团队会使用仪表盘。

图片来源:https://medium.com/meilleursagents-engineering/how-we-monitor-asynchronous-tasks-da25728173d6?__s=6cjguhzuufdark8he4bm

他们组合使用diffseries(在Graphite中,抽取时间序列的方式)和Grafana着色(coloring)相关的配置可视化高亮显示可能存在的问题,比如红色背景代表某个应该为零的指标出现了非零的状况。NewRelicGoogle Cloud Monitoring,前者是一个外部工具,后者是产品所部署的云环境的一部分,这两个工具会负责告警部分。另外,NewRelic还会监控Celery进程本身,确保它们处于运行状态。Grafana也有内置的告警支持以及像PagerdutyOpsGenie这样的集成服务,但是团队并没有采用它们。

查看英文原文Monitoring Distributed Task Queues at MeilleursAgents

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT