写点什么

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:001251

评论

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

如何现实小老虎拼图游戏

自由

小游戏 7月月更

小程序基础内容组件

小恺

7月月更

Java数组最大长度

okokabcd

Java

动态注册广播流程源码解析

北洋

Andriod 7月月更

【刷题记录】7. 整数反转

WangNing

7月月更

继承(二)

Jason199

js 继承 7月月更

SpringBoot核心应用第二弹

Java学术趴

7月月更

2022读过的书 -- 《Essential C++(中文版)》

SkyFire

c++ 读书 入门

linux之抓包神器tcpdump

入门小站

Linux

微服务治理框架对比

穿过生命散发芬芳

微服务框架 7月月更

如何优雅的告诉老板软件的研发成本?

涛哥 数字产品和业务架构

企业架构 Archimate

与众不同的破铜烂铁的算法爱好者和牛客的回忆

KEY.L

7月月更

5G NR Paging 寻呼

柒号华仔

5G 7月月更

Flutter、ReactJS+小程序容器技术,降本增效急速提升100%

Speedoooo

flutter react.js 跨端开发 降本增效 小程序容器

在线文本批量查找多个字符串出现的次数工具

入门小站

工具

新星计划Day4【数据结构与算法】 稀疏数组与队列

京与旧铺

7月月更

C 语言入门(三)

逝缘~

7月月更

ArrayBlockingQueue源码分析-删除数据

zarmnosaj

7月月更

Envoy与Nginx的八大对比

阿泽🧸

envoy 7月月更

Go 语言入门很简单:上下文

宇宙之一粟

Go 语言 7月月更

解读《深入理解计算机系统(CSAPP)》第7章链接

小明Java问道之路

连接 csapp ELF 链接 7月月更

OpenHarmony藏头诗应用

坚果

Open HarmonyOS OpenHarmony Open Harmony 7月月更

Javac编译自定义注解及分析Lombok的注解实现

宁在春

注解 Java’ 7月月更

【愚公系列】2022年7月 Go教学课程 009-数据类型之浮点型

愚公搬代码

7月月更

Java中的泛型与通配符

未见花闻

7月月更

dotnetcore环境下优雅的执行计划任务

为自己带盐

7月月更

Python 绘制精美可视化数据分析图表 (二)-pyecharts

迷彩

可视化 7月月更

在线SQL转TSV工具

入门小站

工具

后端实战教程:如何使用 Node.js 开发 RESTful API 接口(Node.js + Express + Sequelize + MySQL)

蒋川

node.js MySQL 后端开发 Express

任务拆分中的「敏捷刺客」,你中招了吗?

LigaAI

团队管理 敏捷开发 需求管理 垂直拆分 需求梳理

【Java】中的String、StringBuffer和StringBuilder的区别

工程师日月

Java’ 7月月更

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