写点什么

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

评论

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

RabbitMQ组件介绍

穿过生命散发芬芳

RabbitMQ 三周年连更

kubernetes indexer源码解析

欢乐的阿苏

golang DevOps cache 源码阅读 #Kubernetes#

如何使用 taosKeeper 做好监控工作,时序数据库 TDengine 3.0 监控工具详解

TDengine

大数据 tdengine 物联网 时序数据库 数据监控

专注写作:Ulysses for Mac中文版

真大的脸盆

Mac markdown编辑器 Mac 软件 文本编辑 文本管理工具

从ReentrantLock角度解析AQS

Java AQS 并发

【Linux】之【磁盘】相关的命令及解析[df、du、iostat、iotop]

A-刘晨阳

Linux 三周年连更 磁盘空间

Go语言开发小技巧&易错点100例(三)

闫同学

Go 三周年连更

C生万物 | 反汇编深挖【函数栈帧】的创建和销毁

Fire_Shield

C语言 汇编 三周年连更 函数栈帧

ContentProvider介绍

芯动大师

ContextClassLoader 三周年连更

数据库原理及MySQL应用 | 约束

TiAmo

数据库 MySQL数据库 三周年连更 数据库约束

AI日课@20230412:Prompt Engineering

无人之路

ChatGPT

成都.NET线下技术沙龙倒计时一天

MASA技术团队

.net 开发者 MASA Stack

Vue.js 数据双向绑定的实现

格斗家不爱在外太空沉思

Vue ES6 三周年连更

一文掌握 Go 文件的读取操作

陈明勇

Go golang 文件读取 三周年连更

程序员如何保住自己的饭碗?| 社区征文

liuzhen007

程序员 三周年征文

kubernetes fifo源码解析

欢乐的阿苏

golang DevOps 后端 源码阅读 #Kubernetes#

kubernetes delta_fifo源码解析

欢乐的阿苏

golang DevOps 后端 源码阅读 #Kubernetes#

openEuler、龙蜥Anolis、统信UOS系统下编译GreatSQL二进制包

GreatSQL

论程序员的为码之“道”

酱紫的小白兔

不要过于吹捧ChatGPT:人工智能生成文字还有很大提升空间

石头IT视角

Golang并发编程实战:使用ring buffer实现高效的阻塞队列

Jack

Unity 之 转微信小游戏本地数据存储

陈言必行

Unity 三周年连更

Java数组、排序和查找

timerring

Java

vivo全球商城:电商交易平台设计

vivo互联网技术

分布式事务 订单管理 架构设计 多租户 交易平台

影驰 GeForce RTX 4070显卡正式开售!星曜 OC系列首发评测抢先看

极客天地

Unity 之 使用原生UGUI实现随手移动摇杆功能经典实例

陈言必行

Unity 三周年连更

跨平台应用开发进阶(四十三)一文走近网络层抓包工具:WhireShark

No Silver Bullet

网络层 抓包工具 三周年连更

安全沙箱技术的原理、应用程序的安全性和稳定性

没有用户名丶

一定是疯了!在M1的Mac上玩OpenVINO,让Intel怎么看我?

IT蜗壳-Tango

OpenVINO Stable Diffusion 三周年连更

Spider实战-抓取视频

浅辄

三周年连更

Java程序控制结构

timerring

Java

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