大型互联网系统的监控流水线
2018-02-15 00:00
387 查看
大型互联网的系统一般会架构散布于多个数据中心和一些私有/公有云,由真实物理机以及虚拟机组成。架构中部署的关键工具包括实现报警的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的
第六阶段使用Grafana查询数据库中的消息,生成可视化的仪表盘展示。 架构使用了Zabbix生成报警。此外为保证高可靠性,OpenTSDB是安装在多个节点上的。
在云环境中,机器的生命周期是短暂的,这对于需要掌握被监控机器的监视工具而言是一个挑战。通过使用Zabbix的自动注册功能解决了这一问题。Zabbix支持使用模板注册一个新机器。团队使用了一种基本的Linux模板,用于CPU使用率、平均负载、Java线程等通用系统度量。还使用了一种特定于应用的模板,用于健康检查和应用性能管理。 关键关注点还包括,如何确定实时监控下的度量粒度问题,以及如何对HTTP响应代码和请求趋势等度量进行近距离观察。前者可支持团队快速地响应并定位问题,后者可作为一种早期预警系统,对客户或服务器端错误和应用性能突发问题做出预警。对请求数量变化趋势的深入研究,也有助于团队进一步规划容量。
监控的一些关键度量,包括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响应代码和请求趋势等度量进行近距离观察。前者可支持团队快速地响应并定位问题,后者可作为一种早期预警系统,对客户或服务器端错误和应用性能突发问题做出预警。对请求数量变化趋势的深入研究,也有助于团队进一步规划容量。
相关文章推荐
- 大型互联网系统的监控流水线
- Open-Falcon 互联网企业级监控系统解决方案
- 小米运维—互联网企业级监控系统实践
- Open-Falcon 互联网企业级监控系统解决方案(2)
- 大型互联网应用日志系统
- Open-Falcon第七步安装报警模块(小米开源互联网企业级监控系统)
- 大型互联网分布式系统架构技术要点
- [置顶] 某大型银行深化系统技术方案之十一:核心层之业务活动监控
- 大型互联网应用中的日志系统
- 【分享】小米运维—互联网企业级监控系统实践
- 云计算项目实战——某大型互联网企业用户上网行为日志分析系统 PPT下载
- 大型企业网络视频监控系统解决方案
- 关于大型监控系统的高性能组件设计
- Open-Falcon第二步安装绘图组件Transfer(小米开源互联网企业级监控系统)
- 某大型互联网企业用户上网行为日志分析系统——云计算项目实战
- Open-falcon 人性化的互联网企业级监控系统
- 明晚九点|一线互联网公司服务器监控系统架构分享
- 互联网级监控系统必备-时序数据库之Influxdb技术
- 使用Scribe来监控大型网络系统
- 详细解析大型视频监控系统的技术要点