背景
企业级的数据集群往往有PB 级的数据、成百上千的各类型运算任务 在一套集群上运行。 所以它的维护是充满挑战的: 庞大的数据量、复杂的运算逻辑、相互关联的大数据组件、数以万计的运行任务 都是要克服的难点。 SRE 如果不想被动的话,就必须做好各式监控。预防风险、提前发现风险、然后分析问题、进而针对性的处理问题。
凡是成体量的分布式系统,一旦出现性能问题,往往很难在短时间内作出有效处理。 所以 监控要前置,有趋势预测、有风险评估 才行。
一、大数据监控体系
截止目前,集团数据中台下离线数据集群 近 千台 物理机,数据存量近数10 PB+,每天数据增量 百TB+ ,运行任务 11w + ,Hdfs、Hive 等大数据组件 10+ 套。 那么如何对这些集群组件具有较强的掌控力? 我们需要一套 成体系 的监控方案。
1.1、 Not Only Monitor
首先,我们要明确监控在 好未来大数据运维体系中 是怎样的定位。 在整个体系中,监控处于承上启下,贯穿全局的角色。
这里为什么说 Not Only Monitor 呢 ? 是因为数据监控所包含的范围其实很大,不只是传统的运维底层监控。 还包含了比如 数据质量监控、任务状态监控、组件性能监控、趋势预测监控、同比环比分析 等。
1.2、大数据监控体系整体架构
整个大数据集群的监控体系分为如下七个维度:
监控维度 | 主要监控项 |
底层基础监控 | 机房 与 网络(路由器、交换机等)、专线、服务器(CPU、内存、IO、磁盘、文件等)各类型日常的基础监控 |
服务状态监控 | 各类型标准组件存活状态(从业务的 SLB、Nginx、Java、Hdfs、Hive、ZK 等组件存活状态) |
组件性能监控 | 每种组件的 Metrics 性能监控,以 Hive 为例 (QPS、RPC、Metastore Canary、connection 等) |
Runtime监控 | 顾名思义,模拟客户端去 不间断循环 与 各式 组件发起基本请求与操作,确认组件状态,比如 每隔5 分钟去 与 HDFS 交互,完成 新增、修改、删除、查询 等基本操作,并获得操作结果状态与响应时间。 |
集群指标监控 | 集群的 核心指标监控,比如 文件大小分布、集群整体计算资源、集群整体存储资源 等指标。 |
趋势预测监控 | 存储与计算 同比、环比 上涨趋势、小文件同比环比上涨趋势、SLA 趋势预测 |
任务状态监控 | 任务状态、任务占用资源、任务延迟 等。 |
其实上面每个维度,都包含了很多的监控项 与 监控指标,而针对不同的 告警 维度,它的监控方式也不尽相同。
-
一些监控是不断读取它的状态,比如常见的 CPU 、内存,然后设定阈值触发告警动作。
-
一些监控是需要有时序性的聚合统计,比如 HDFS 存储增量,当增量斜率比平时高的时候触发告警动作。
-
一些监控是需要和其他监控做 与