百分点大数据技术团队:万亿级大数据监控平台建设实际
作者头像
  • 完颜礼祥
  • 2021-04-20 21:11:22 7

编者按

随着互联网业务的迅速发展,用户对系统的要求越来越高,而良好的监控系统可以显著提升系统的可靠性和用户体验。本文主要介绍了百分点大数据团队如何构建和实施一套适合自身业务特点的监控系统。本文旨在帮助读者更好地理解监控系统的设计思路,并为监控系统的建设提供专业的指导。

一、整体设计

百分点大数据团队采用了“去中心化”和“服务透明化”的设计理念,使监控系统具备强大的扩展能力、自动化能力和高可靠性。以下是具体设计内容:

去中心化设计

由于需要同时监控18个异地数据中心,最初考虑的是每个中心独立监控,但这种方式不仅成本高昂,还难以统一管理。因此,百分点大数据团队决定只在一个主中心进行监控数据的采集和可视化展示,其他中心仅负责数据传输。这样,最终形成了“1主中心+18个从属中心”的监控架构。

服务透明化设计

通过对每个组件的存储、处理和查询能力进行标准化量化,确保其运行状态的稳定可控。具体做法是对每个组件的容量和功能目标进行设计,并以可视化的方式展示组件的能力指标和当前状态。通过设定标准值,建立预警机制和应对措施,确保用户无感知。

扩展及自动化能力设计

接入一个数据中心的监控数据并完成调试,通常只需要0.5天,而且这种设计可以无缝集成多个数据中心的监控数据。

监控设计方法

监控系统的关键要素包括监控粒度、监控目的完整性和实时性。从系统分层的角度看,监控系统可分为业务层、平台层和系统层三个层次。

  • 业务层:业务系统的主要目的是实现业务目标,因此监控业务系统是否正常运行的最佳方式是从数据上监控业务目标是否达成。
  • 平台层:监控应用程序的整体运行状况,包括各种中间件和计算引擎。
  • 系统层:实时掌握服务器的工作状态,关注性能、内存消耗、容量和系统健康状况。

系统设计

监控系统的基本流程包括数据采集、存储、分析、展示和报警。具体步骤如下:

  • 数据采集:通过SNMP、Agent、ICMP、SSH、IPMI等协议进行数据采集。
  • 数据存储:主要存储在MySQL或其他数据库服务中。
  • 数据分析:监控系统在分析故障时,提供图形和时间信息,便于快速定位问题。
  • 数据展示:通过Web界面展示,可以是移动应用或Java/PHP开发的Web界面。
  • 监控报警:支持电话、邮件、微信、短信等多种报警方式,报警处理机制可以根据问题的严重程度进行分级处理。

二、技术方案

技术架构

百分点大数据团队采用了Zabbix和Prometheus+Grafana相结合的技术架构,实现了多种大数据平台组件的功能监控。

  • Zabbix:负责服务器的硬件监控,通过分布式自动监控方式,对服务器进行监控。
  • Prometheus:通过集成各种Exporter来采集组件数据,包括Node Exporter、Clickhouse Exporter等。
  • Grafana:通过接口调用和目标编辑,读取Prometheus采集的数据并进行可视化展示。

技术选型

  • Zabbix:Zabbix是一款基于Web界面的分布式系统监控解决方案,具有灵活的二次开发接口,适用于多种监控场景。
  • Prometheus:Prometheus是一款开源监控系统,采用Go语言开发,支持数据的内部查询和外部查询,非常适合面向服务架构的监控。
  • Grafana:Grafana是一款可视化仪表盘,可以直观展示监控数据。

非功能技术实现

监控系统需要满足高可用性、高吞吐性和可扩展性的要求。

  • 高可用性:通过LAMP环境和Keepalived实现Zabbix和Grafana服务器的高可用。
  • 高吞吐性:Zabbix、Grafana和Prometheus联合监控3000+台服务器,每秒更新2.43万条数据,每天产生1.1TB的数据量。
  • 可扩展性:Zabbix Proxy可以代替Zabbix Server进行数据采集和可用性监测,一定程度上缓解了Zabbix Server的压力。

核心组件监控

为了确保监控系统的质量,需要明确每个监控项的具体含义并设定阈值。

  • Zabbix:通过ICMP ping、磁盘、风扇、内存、电源、主板温度、CPU温度、电压、Raid状态、电池、网卡等方面对服务器进行硬件监控。
  • Grafana+Prometheus:主要负责业务系统、CK、ES、Ceph、Oss、Kafka、ZK、数据流等服务或组件的监控。

三、最佳实践

在大规模监控系统中,Zabbix Server可能面临巨大的压力,出现功能瓶颈。为此,需要进行功能调优,包括调整Zabbix配置参数和数据库参数。

参数优化说明

  • Zabbix配置参数调优:通过调整StartPollers、StartPreprocessors、StartPollersUnreachable、StartTrappers、StartPingers、StartDiscoverers等参数,提高系统效率。
  • 数据库参数调优:使用InnoDB表结构,定期清理常用表,提高数据库性能。
  • 功能优化建议:仅监控所需参数,调整所有项目的“更新间隔”,调整默认模板参数,调整housekeeping参数,避免使用长时间计算的触发器。

硬件监控实践

通过Zabbix Agent定期收集硬件监控数据,结合Prometheus和Grafana,可以实现对整个项目区域的服务器硬件状态的汇总和反馈。

平台组件集群监控实践

  • ElasticSearch集群监控:通过ES数据采集程序将监控数据汇总到ES监控集群中,并通过Grafana进行展示。
  • ClickHouse集群监控:通过Prometheus自动拉取数据,并通过Pushgateway将自定义目标推入Prometheus。
  • Kafka集群监控:通过Kafka JMX端口采集监控数据,并通过Prometheus进行展示。
  • Ceph集群监控:通过Ceph Exporter采集数据,并通过Prometheus进行分组和汇总展示。
  • HBase集群监控:通过Ambari Web界面开启JMX端口,并通过Prometheus进行展示。
  • Zookeeper集群监控:通过第三方工具zk_exporter采集数据,并通过Prometheus进行展示。

结语与展望

本文介绍了百分点大数据团队如何构建和实施一套适合自身业务特点的监控系统,并提供了一些优化参数和最佳实践,希望能为大家在实施过程中提供一些参考和帮助。如果您有任何疑问,欢迎随时咨询。

    本文来源:图灵汇
责任编辑: : 完颜礼祥
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
数据百分点万亿监控实际团队建设平台技术
    下一篇