写点什么

MakeMyTrip 在监控大规模电子商务网站中的做法

  • 2018-01-31
  • 本文字数:1506 字

    阅读完需:约 5 分钟

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

MakeMyTrip 是一家在线提供旅游服务的企业。近期,MakeMyTrip 团队在 Medium 上发表了一系列文章,介绍了企业实现大型电子商务网站监控的原理及架构设置。他们在实现对整个技术栈的监控中,主要使用了一种由开源工具构建的混合架构。

团队发表的前两篇文章主要针对如何监控系统、网络和应用,其中重点介绍了所使用的监控流水线。MakeMyTrip 的架构散布于多个数据中心和一些私有/ 公有云,由真实物理机以及虚拟机组成。架构中部署的关键工具包括实现报警的Zabbix,以及一个采集、聚合和存储度量的六阶段流水线。该流水线主要由开源工具构建,其中使用了OpenTSDB、Kafka、Elasticsearch 和Grafana,还有一些企业自研的工具。

文章中介绍了企业所监控的一些关键度量,包括CPU 平均负载、内存、线程、网络连接、磁盘空间和性能等。对于电子商务网站而言,网络监控至关重要。MakeMyTrip 的网络监控实现为多个层级,包括使用ping 监控跨数据中心的连通性,使用 Observium 监控网络设备带宽,使用 Uptime Robot 监控外部可访问性和系统运行时间及负载情况(uptime)。监控的实现原理通常分为两大类,即拉取模式(Pull)和推送模式(Push)。在拉取模式下,存在一个集中式系统,轮询各个被监控系统并从中拉取数据。 Nagios 等多种传统的监控系统主要遵循该模式,但是其中部分系统也提供推送模块。在推送模式下,每个被监控系统中需要运行一个代理程序。该代理程序采集监控数据,并将数据推送到一个中央系统。 Prometheus 等工具使用了推送模式,它们提供推送功能选项。MakeMyTrip 团队选择使用推送模式,并在每台服务器上运行了Zabbix 代理。

监控流水线分六个阶段,实现从日志中抽取度量并推送到时序数据库 OpenTSDB 。第一个阶段负责收集日志。流水线通过运行在每个服务器上的 syslog-ng 代理,以 UDP 方式汇集到一个中央 Logstash 服务器。syslog-ng 可在类 UNIX 系统上实现 syslog 协议。第二阶段进而使用 grok 分析器分析收集的日志,并推送到两个不同的 Elasticsearch( ELS )集群。每天分析的日志总量可达 700GB。第三阶段使用称为“Data Monster”的企业自研工具,周期性轮询 Elasticsearch 集群,从中抽取度量。进而在第四阶段使用调度系统计算各个度量。该调度系统基于 Celery Beat、RabbitMQ 和 MySQL 实现,使用 Data Monster 从 ELS 拉取数据,并推送到 Kafka 集群。第五阶段生成实际写入到 OpenTSDB 的PUT语句。 Apache Kafka 通常用于构建持久化流数据队列。在流水线中,Kafka 消费者处理消息,并推送到 OpenTSDB 中持久存储。第六阶段使用 Grafana 查询数据库中的消息,生成可视化的仪表盘展示。架构使用了 Zabbix 生成报警。此外为保证高可靠性,OpenTSDB 是安装在多个节点上的。但是文中并未给出具体的设置情况。

在云环境中,机器的生命周期是短暂的,这对于需要掌握被监控机器的监视工具而言是一个挑战。MakeMyTrip 的团队通过使用 Zabbix 的自动注册功能解决了这一问题。Zabbix 支持使用模板注册一个新机器。团队使用了一种基本的 Linux 模板,用于 CPU 使用率、平均负载、Java 线程等通用系统度量。还使用了一种特定于应用的模板,用于健康检查和应用性能管理。

团队的关键关注点还包括,如何确定实时监控下的度量粒度问题,以及如何对 HTTP 响应代码和请求趋势等度量进行近距离观察。前者可支持团队快速地响应并定位问题,后者可作为一种早期预警系统,对客户或服务器端错误和应用性能突发问题做出预警。对请求数量变化趋势的深入研究,也有助于团队进一步规划容量。

查看英文原文: How MakeMyTrip Monitors Its Large-Scale E-Commerce Website

2018-01-31 18:001315
用户头像

发布了 391 篇内容, 共 140.1 次阅读, 收获喜欢 257 次。

关注

评论

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

低代码与AI技术融合的架构演进:驱动企业级应用开发智能化转型的深度实践

快乐非自愿限量之名

低代码

Android逆向实战:模拟调用解决Native+LLVM混淆

LLLibra146

Android 逆向

Vue.js 与低代码开发:在制造业中的创新应用

秃头小帅oi

JNPF 5.2版本 “低代码+AI” 双引擎

引迈信息

马斯克:Grok 正在开发语音交互功能;阶跃星辰开源产品级语音交互大模型 Step-Audio 丨日报

声网

Paxos算法:如何解决分布式系统中的共识问题?

不在线第一只蜗牛

分布式 算法

面试官:谈谈RabbitMQ的队头阻塞问题?

王磊

信创国产操作系统中的轻量级CAD画图软件

WEB CAD SDK

vivo 互联网技术 2024年度盘点

vivo互联网技术

互联网技术 Vivo

Blackbox.ai:一站式AI代理,畅享顶级模型

Yan-英杰

人工智能 DeepSeek v3

AI 引领,共创数字新篇|第六届金蝶云苍穹追光者开发大赛圆满落幕!

金蝶云·苍穹

AI 开发者大赛 金蝶云苍穹 AI Agents

“树、表”双模型试用献礼:Apache IoTDB 2.0.1-beta 版本发布!

Apache IoTDB

独立开发者倾向于使用哪些技术栈

爱吃小舅的鱼

用户实操:如何以龙蜥操作系统为底座在 CPU 上运行 DeepSeek-R1

OpenAnolis小助手

AI 龙蜥社区 龙蜥操作系统 Anolis OS DeepSeek

低代码开发平台与AI技术融合架构解析——2025乡村振兴数字化转型技术路径与实践

EquatorCoco

人工智能 低代码

企业上云怎么选?公有云、私有云和混合云对比解析

Ogcloud

公有云 私有云 企业上云 混合云

2024年银行数字生活服务平台用户行为及流量盘点

易观分析

商业银行 信用卡业务

DeepSeek提示词工程完全指南:如何用「思维翻译器」激发大模型潜能——附官方提示词和优化案例

快乐非自愿限量之名

DeepSeek

企业为什么要选择IPLC定制方案?

Ogcloud

IPLC 国际专线 国际网络专线 IPLC定制

把Sora拉下神坛,首个国产开源模型SkyReels-V1为短剧创作者披上“AI战衣”

脑极体

AI

TinyVue自动导入插件重大升级,@opentiny/unplugin-tiny-vue1.0.0版本开启单组件包引入新模式

OpenTiny社区

开源 前端 插件 组件库 OpenTiny

创维电视75A5D Pro 怎么样

妙龙

智能电视 创维电视

海尔510法式冰箱怎么样

妙龙

海尔 冰箱

C#编程的技术难点有什么

爱吃小舅的鱼

Apache IoTDB v2.0.1-beta 发布|树、表双模型支持,更灵活更全面!

Apache IoTDB

为什么说异步编程是反人类

爱吃小舅的鱼

编程

追踪隐式资源,巧解内存难题!运维利器——阿里云操作系统控制台上线

OpenAnolis小助手

运维 操作系统 内存 操作系统控制台

YashanDB表介绍

YashanDB

数据库 yashandb

低代码技术赋能:企业级固定资产管理系统2小时快速构建实践

不在线第一只蜗牛

低代码

如何开发一款链上DApp:从技术角度全面分析Dapp开发

V\TG【ch3nguang】

MakeMyTrip在监控大规模电子商务网站中的做法_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章