写点什么

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

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

关注

评论

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

LeetCode题解:50. Pow(x, n),暴力法,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

架构师训练营培训第一周总结

lakers

极客大学架构师训练营

阿里18道常见的MySQL面试题,含解析

Java架构师迁哥

一周信创舆情观察(10.12~10.18)

统小信uos

极客时间架构师训练营第一周学习总结

爱码士

课程总结

大数据上手实战!训练营“9营齐开”第二季限时免费报名啦

Apache Flink

大数据

1024!奈学教育致敬程序员3+2战略发布会重磅来袭

古月木易

程序员 奈学教育

两个程序员老友的会面

Philips

敏捷开发

作为一名Java程序员,技术栈的广度深度都不够还想要高薪?请先把这些技术掌握再说。

Java架构之路

Java 程序员 架构 面试 编程语言

我从高级开发者身上学到的19条编码原则

Java架构师迁哥

为什么说容器的崛起预示着云原生时代到来?

华为云开发者联盟

容器 云原生

网易:Flink + Iceberg 数据湖探索与实践

Apache Flink

flink 数据湖

技术体系的构成

凌晞

技术 技术管理 研发体系

Java高并发编程的一本百科全书《Java高并发编程详解:多线程与架构设计》,把Java语言中最为晦涩的知识点都详解出来了!

Java架构之路

Java 程序员 架构 并发编程 编程语言

项目吐槽之需求分析一

Geek_XOXO

项目管理 pmp

不会java的人能不能读《Head First设计模式》?

Nydia

华为云如何赋能无人车飞驰?从这群AI热血少年谈起

华为云开发者联盟

人工智能 无人驾驶

MyBatis-技术专题-动态SQL

洛神灬殇

【API进阶之路】研发需求突增3倍,测试团队集体闹离职

华为云开发者联盟

软件开发 开发 开发测试

2020,国产数据库崭露峥嵘的发轫之年

墨天轮

数据库 阿里云 华为云 SQL优化 热门活动

第五周学习代码技术选型总结

三板斧

极客大学架构师训练营

想自己写框架?不会写Java注解可不行

Java架构师迁哥

架构师训练营第一周作业

爱码士

架构设计

普通人如何站在时代风口学好AI?这是我看过最好的答案

华为云开发者联盟

AI 算法

了解HashMap数据结构,超详细!

程序员的时光

面试 hashmap HashMap底层原理

Spring 5.2.7和SpringBoot 2.3.3中文翻译发布啦!!!

青年IT男

spring springboot

程序员喜欢的 5 款最佳最牛代码比较工具

程序员生活志

编程 工具

项目吐槽之需求分析二

Geek_XOXO

项目管理 pmp 项目实战

1分钟带你入门 React SCU、memo、pureCom

Leo

react.js 大前端 React

架构师训练营 1 期 - 第五周 - 技术选型

三板斧

极客大学架构师训练营

MyBatis-技术专题-拦截器介绍

洛神灬殇

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