写点什么

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

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

关注

评论

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

“阿里爸爸”又爆新作!Github新开源303页Spring全家桶高级笔记

热爱java的分享家

Java 面试 编程语言 经验分享 Spring全家桶

打造一个物联网平台真的工程巨大吗?

Speedoooo

容器 ios开发 APP开发 Andriod开发

TDSQL Server产品新特性

腾讯云数据库

数据库 tdsql

新来的00后真是卷王,工作没两年,跳槽到我们公司起薪26K

Geek_1df311

Java 程序员 架构 面试

保姆级神器 Maven,再也不用担心项目构建搞崩了

沉默王二

Java maven

智慧园区综合管理平台系统开发,智慧园区综合能源管理系统方案

电微13828808271

公布半小时下载量达10W:阿里大牛出品「MyCat笔记」真香

热爱java的分享家

Java 面试 编程语言 经验分享 mycat

TDSQL-C for MySQL版产品新特性

腾讯云数据库

tdsql 国产数据库

宝马、西门子是如何开始DevOps 的?

飞算JavaAI开发助手

什么是微服务架构,有何优缺点?

雯雯写代码

微服务

CSS布局(三)之等分布局

Augus

CSS 11月日更

你不知道的$nextTick

CRMEB

CTF夺旗PWN题:二叉树的漏洞利用

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

白话 Linux 容器资源的隔离限制原理

恒生LIGHT云社区

Linux 运维

提升软件开发效率,企业数字化转型更轻松?

行云创新

技术 云原生 开发 数字化转型

2022年游戏市场趋势——最后一个十亿蓝海待挖掘

游戏出海 手机游戏

TDSQL MySQL版产品能力介绍及新特性

腾讯云数据库

数据库 tdsql

海康摄像机RTSP地址格式(官方最新版)

音视频牛哥

WebRTC RTMP RTSP 播放器

我以为自己MySQL够牛逼了,直到看到了Alibaba的面试题

热爱java的分享家

Java 面试 程序人生 编程语言 经验分享

深入理解 WKWebView(入门篇)

百度开发者中心

Webkit WKWebView

如何成为web安全工程师?

喀拉峻

网络安全 安全 信息安全

发布一个免费的 Elasticsearch 多集群监控和管理平台 - 极限数据平台

极限实验室

elasticsearch infini 极限实验室 极限数据平台 ES多集群管理

Go语言学习查缺补漏ing Day5

Regan Yue

Go 语言 11月日更

TDSQL-C for MySQL版产品新特性

腾讯云数据库

数据库 tdsql

面试官:系统需求多变时如何设计?

Geek_1df311

程序员 架构 面试 计算机

Stratifyd数据分析平台加盟腾讯云市场,赋能品牌消费洞察

社交重构、游戏革新,万物皆可元宇宙?这场大会给你讲清楚了|活动预告

网易云信

人工智能 音视频 元宇宙

YU12 YV12 NV12 NV21区别

音视频牛哥

WebRTC RTMP RTSP yuv

如何设计一款跨平台低延迟的RTMP|RTSP直播播放器

音视频牛哥

WebRTC HLS RTMP RTSP

如何利用EasyRecovery恢复c盘已删文档

淋雨

数据恢复

第二届腾讯“开悟”大赛初赛放榜,强化学习研究还能这么快乐?

科技热闻

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