AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

  • 2018-03-04
  • 本文字数:1106 字

    阅读完需:约 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)相关的配置可视化高亮显示可能存在的问题,比如红色背景代表某个应该为零的指标出现了非零的状况。 NewRelic Google Cloud Monitoring ,前者是一个外部工具,后者是产品所部署的云环境的一部分,这两个工具会负责告警部分。另外,NewRelic 还会监控 Celery 进程本身,确保它们处于运行状态。Grafana 也有内置的告警支持以及像 Pagerduty OpsGenie 这样的集成服务,但是团队并没有采用它们。

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

2018-03-04 18:001442

评论

发布
暂无评论
发现更多内容

知识回顾:抽象类与抽象方法

喵叔

28天写作 12月日更

如何监控测量你的代码

耳东@Erdong

监控 Prometheus

Golang的通道入门(二)

liuzhen007

go语言 28天写作 12月日更

Elasticsearch 可搜索快照技术原理及最佳实践

腾讯云大数据

Elastic Search

我的2021之感谢有你们(上篇)

坚果

年终总结 28天写作 12月日更 盘点2021

从翻硬币游戏看敏捷开发

华为云开发者联盟

敏捷 敏捷开发 软件开发 团队 开发

【CSS 学习总结】第八篇 - CSS 布局-居中布局-垂直居中布局

Brave

CSS 12月日更

消极自由 与 积极自由

mtfelix

28天写作

seata入门介绍与seata-service部署与验证(一)

恒生LIGHT云社区

架构 分布式 seata

LabVIEW机器视觉系统图像畸变、校准和矫正(基础篇—3)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 系统图像畸变、校准和矫正

价值

搬砖的周狮傅

价值观

低代码行业浅析

凹凸实验室

前端 低代码

Golang的通道基础(一)

liuzhen007

28天写作 Go 语言 12月日更

27《重学JAVA》--反射

杨鹏Geek

Java 25 周年 28天写作 12月日更

HarmonyOS(鸿蒙)——启动流程

李子捌

鸿蒙 28天写作 21天挑战 12月日更

SRE实战(03)|Clickhouse在好大夫服务治理中应用

方勇(gopher)

大数据 APM Clickhouse 构架

怎么组织一场活动

圣迪

活动 SOP

28《重学JAVA》--注解

杨鹏Geek

Java25周年 28天写作 12月日更

给弟弟的信第27封|学会说不,别让面子害了你

大菠萝

28天写作

目标加个零(28/28)

赵新龙

28天写作

Flink 实践教程-进阶(5):排序(乱序调整)

腾讯云大数据

流计算 Oceanus

AI实战分享 | 基于CANN的辅助驾驶应用案例

华为云开发者联盟

目标检测算法 CANN 昇腾 辅助驾驶 AscendCL

SRE02|管中窥豹,微服务可用性监控之道

方勇(gopher)

微服务 SRE 微服务治理 构架

流计算 Oceanus | 巧用 Flink 构建高性能 ClickHouse 实时数仓

腾讯云大数据

flink Clickhouse 流计算 Oceanus

资料分享|kafka学习推荐书籍

Kafka中文社区

走访数年,编撰3年:你能看到的互联网企业案例最多的一本书

博文视点Broadview

Java序列化与反序列化

编程江湖

持续集成背后的思考

夏兮。

ci 方法论 持续集成 jenkins

年终加薪

张老蔫

28天写作

架构实战营 第 4 期 模块三作业

架构实战营 模块三 构架 「架构实战营」

netty系列之:好马配好鞍,为channel选择配套的selector

程序那些事

Java Netty 程序那些事 12月日更

MeilleursAgents是如何监控分布式任务队列的_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章