2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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:001481
用户头像

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

关注

评论

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

工作这么多年,我总结的数据传输对象 (DTO) 的最佳实践

JAVA旭阳

Java 架构

中原银行对金融行业实时数仓的现状与发展趋势思考

Apache Flink

大数据 flink 实时计算

easyrecovery2024非常好用的磁盘恢复工具

茶色酒

EasyRecovery EasyRecovery15 easyrecovery2023

如何快速优雅的用Know Streaming创建Topic

石臻臻的杂货铺

获取 topic等信息 后端、

架构误区系列12:一切皆依赖云平台

agnostic

云计算 部署架构

复习前端:JavaScript V8 引擎机制

devpoint

chrome JIT V8

从员工批量离职中,认识管理的价值

石云升

极客时间 1月月更 技术领导力实战笔记

Portraiture2024汉化版磨皮插件下载

茶色酒

Portraiture2023 Portraiture

工信部电子标准院:龙蜥操作系统获评“优秀”

OpenAnolis小助手

工信部 开源项目 获奖 龙蜥操作系统 生态构建

极客时间运维进阶训练营第十二周作业

9527

复习前端:浏览器缓存策略

devpoint

Service Worker 浏览器缓存 缓存技术

Best Wishes「兔」You!

阿里云CloudImagine

Kratos微服务框架API工程化指南

golang gRPC microservice Kratos 工程化

MySQL统计总行数:听说count(*)性能更好,是真的吗

程序员拾山

MySQL

WSL中使用vcpkg安装pcl库出现编译失败的原因

大伟

【Linux技术专题系列】「必备基础知识」一起探索和实践sftp配置之密钥方式登录

码界西柚

Linux SSH SSH工具 sftp

FL Studio2024中文完整版电脑编曲软件及配置要求

茶色酒

FL Studio FL Studio 21

2022年终总结-无所吊谓

wood

年终总结 稳定 开心 普通的一年

MySQL:如果被更新字段的新值与旧值相等,SQL会被真正执行吗?

程序员拾山

MySQL

架构误区系列11:无聊的架构归一

agnostic

架构治理

水果软件2024FL Studio中文语言版本下载

茶色酒

FL Studio FL Studio 21

技术如何分担产品之忧?

石云升

极客时间 1月月更 技术领导力实战笔记

AirServer2023下载安装教程投屏软件,支持安卓、苹果手机投屏至电脑

茶色酒

AirServer AirServer2023

2022年的魔力象限领导者,为什么是华为数通?

脑极体

华为

复习前端:前端安全

devpoint

CSRF xss攻击 前端安全

Studio One2024旗舰级DAW的跨版本升级

茶色酒

Studio One 5 Studio One2023

你知道哈希算法,但你知道一致性哈希吗?

JAVA旭阳

Java 架构

Python 内置界面开发框架 Tkinter入门篇 甲

eng八戒

Python GUI tkinter

万字长文搞懂产品模式和项目模式

俞凡

团队管理

2022 年行摄回忆录

穿过生命散发芬芳

摄影 行摄回忆录

【Java应用服务体系】「序章入门」全方位盘点和总结调优技术专题指南

码界西柚

Java 技术分析 应用调优 优化指南

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