写点什么

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

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

关注

评论

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

Spring 注入集合

小万哥

Go golang 后端 开发 开发程序员

安全可靠的文件传输服务助力完成更高效的医疗保健工作(下)

镭速

文件传输服务 医疗保健

研发管理的挑战、本原与方案

iSoftBook

项目管理 软件工程 研发管理平台 敏捷方法 研发云平台

大语言模型测试

b1a2e1u1u

k8s优雅停服

tiandizhiguai

DevOps kubernetes 运维

华为云云耀云服务器L实例:轻量级应用服务器也能有高性能,助力业务快速发展

YG科技

华为云云耀云服务器L实例:游戏开发者的高性能轻应用服务器之选

YG科技

安全可靠的文件传输服务助力完成更高效的医疗保健工作(上)

镭速

文件传输服务 医疗保健

实现 LangChain 版本的 AutoGPT 项目的图形化界面

b1a2e1u1u

JVM heap + non-heap是否等于 RSS?

虚实的星空

华为云云耀云服务器L实例:打造轻量级行业解决方案,助力企业轻松上云

YG科技

中小企业如何借助华为云云耀云服务器L实例迅速开展业务?

YG科技

数划云受邀参加2023甄云科技用户大会并发表主题演讲

数划云

企业经营管理 全面预算 绩效分析

国产“芯”突破 | 优博讯携手海思推出AI新零售创新方案

Geek_2d6073

大模型时代的 AI 原生云

Baidu AICLOUD

AI 原生云

大规模流量下的云边端一体化流量调度体系

火山引擎边缘云

边缘计算 数字孪生 边缘云 火山引擎边缘云

华为云云耀云服务器L实例:打造企业级高效稳定的基础云服务架构

YG科技

Java整合Thymeleaf和wkhtmltopdf实现HTML导出PDF

落日楼台H

PDF thymeleaf wkhtmltopdf htmltopdf

云服务器选购指南:一步步指导企业如何挑选合适的云服务器

YG科技

kill -15 与kill -9的区别

源字节1号

开源 软件开发 前端开发 后端开发 小程序开发

图解Kafka消费者客户端分区分配策略

石臻臻的杂货铺

Kafk

华为云云耀云服务器L实例:智能化、高性价比的轻量级云服务器

YG科技

ARTS 打卡 Week4

JimDeng

ARTS 打卡计划 #ARTS 左耳朵耗子

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