在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

评论

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

Frida笔记 - Android 篇 (一)

GrowingIO技术专栏

android Frida

防沉迷系统的bug,技术如何查漏补缺?

脑极体

我怀疑,你对996的力量一无所知!

艾小仙

程序员 996

Java中对千万级数据量的表进行插入操作(MYSQL)

张音乐

Java MySQL JDBC 9月日更

腾讯云签约广州知识城商用密码项目,助力黄建设密码产业示范区

腾讯安全云鼎实验室

腾讯云 商用密码

APM领域国产化先锋!博睿数据与麒麟、统信、中科方德完成兼容性认证

博睿数据

用数据搭建反馈系统

石云升

数据分析 9月日更

垃圾分类与AI的反碎片之旅

百度大脑

人工智能 EasyDL

HTML进阶

Augus

html 9月日更

justswap市值管理机器人系统软件开发技术(案例搭建)

量化系统19942438797

交易所 做市机器人 justswap

HashMap为什么是线程不安全的?

Java技术精选

五行兼备:联想TruScale服务的太极之道

脑极体

总结下ThinkPHP的代码审计方法

网络安全学海

php 网络安全 信息安全 WEB安全 代码审计

低代码开发:实现传统系统信息化的3种方案!

优秀

低代码 低代码开发

ULP Fec与 Flex FEC 概述

webrtc developer

WebRTC fec

Python代码阅读(第25篇):将多行字符串拆分成列表

Felix

编程 Code Programing 阅读代码 -python

北鲲云超算平台赋能蛋白设计助推生物制药行业发展

北鲲云

Java 操作 Office:POI word 之表格格式

程序员架构进阶

Java Apache POI 9月日更 word文档

开源之夏项目分享:图数据库 Nebula Graph 支持 JDBC 协议

NebulaGraph

maven-dependency中作用域scope含义

一个大红包

9月日更

各编程语言里对 Iterator 进行修改时的对比

BlockQuant

Java Python rust Go 语言

活动推荐 | 云原生社区 Meetup 第七期深圳站开始报名啦!

CODING DevOps

Kubernetes DevOps 微服务 活动 Meetup

谁在制造“完美男性”?

脑极体

前端独立交付需求背景下的Mock数据多方案解读

爱数技术范儿

JavaScript 大前端 Mock

性能测试中异步展示测试进度

FunTester

性能测试 接口测试 测试框架 进度条 FunTester

博睿数据云主机性能评测新增6家云厂商,8月报告亚马逊云科技登榜首

博睿数据

微信开源PhxQueue:高可用、高可靠、高性能的分布式队列

OpenIM

Vue进阶(幺零四):elementUI 应用 $notify 提示信息中换行问题

No Silver Bullet

Vue 9月日更

微信亿级用户异常检测框架的设计与实践

OpenIM

ServiceWorker工作原理、生命周期和使用场景

devpoint

Service Worker 9月日更

Python顺序结构选择结构

在即

9月日更

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