大型互联网系统的监控流水线

大型互联网的系统一般会架构散布于多个数据中心和一些私有/公有云,由真实物理机以及虚拟机组成。架构中部署的关键工具包括实现报警的Zabbix,以及一个采集、聚合和存储度量的六阶段流水线。流水线主要由开源工具构建,其中使用了OpenTSDB、Kafka、Elasticsearch和Grafana,还有一些企业自研的工具。

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

监控流水线分六个阶段,实现从日志中抽取度量并推送到时序数据库OpenTSDB。

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

架构使用了Zabbix生成报警。此外为保证高可靠性,OpenTSDB是安装在多个节点上的。

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

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

本文分享自微信公众号 - IT技术精选文摘(ITHK01)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-02-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT笔记

微服务化的基石——持续集成

在很多微服务化的文章中,很少会把持续集成放在第一篇,因为大多数的文章都会将如何拆的问题,例如拆的粒度,拆的时机,拆的方式。

65490
来自专栏Java架构

干货 | 京东购物车的Java架构实现及原理!

4)用户登陆了用户名密码,添加商品, 关闭浏览器 外地老家打开浏览器  登陆用户名和密码

42910
来自专栏landv

开源托管站点大全

32030
来自专栏大数据和云计算技术

转载:云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据

使用过开源HBase的人都知道,运维HBase是多么复杂的事情,集群大的时候,读写压力大,配置稍微不合理一点,就可能会出现集群状态不一致的情...

11820
来自专栏数据之美

网站数据统计分析之二:前端日志采集是与非

在上一篇《网站数据统计分析之一:日志收集原理及其实现》中,咱们详细的介绍了整个日志采集的原理与流程。但是不是这样在真实的业务环境中就万事大吉了呢?事实往往并非如...

66370
来自专栏pangguoming

OA系统启动:基础数据,工作流设计

自从开源OA系统启动:系统概览放 出来后。园友们反馈了一些不错的建议。主要集中在工作流部分。本来是先不考虑工作流部分。这些天的交流和思考。决定把工作流部分作为系...

77180
来自专栏数据和云

Oracle最重要的九大性能视图

摘要:Oracle数据库的性能优化一直以来都是DBA关注的焦点,在不同的版本中,Oracle都提供了相关的工具用于数据库的性能诊断,事实上这些工具都是通过对数据...

34360
来自专栏Spark学习技巧

云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据

17330
来自专栏Bug生活2048

Python实战-解决工作中的重复工作(一)

目前公司的项目管理采用开源项目redmine,对于redmine本文不多做介绍,有兴趣的可以自行百度了解下。

56730
来自专栏HBStream流媒体与音视频技术

发布一个DirectShow音视频采集、处理软件,可以提供代码

40180

扫码关注云+社区

领取腾讯云代金券