
1) 【一句话结论】
采用分层监控架构,通过指标采集、存储、规则引擎和自动化处理,覆盖计算资源、数据管道与应用服务,实现从异常检测到自动恢复的闭环,确保平台稳定运行。
2) 【原理/概念讲解】
监控系统核心是“采集-存储-分析-告警-处理”流程:
类比:就像人体健康监测,指标是心率、血压(采集),存储在健康记录(存储),异常时触发警报(告警),并自动调节(处理)。
3) 【对比与适用场景】
| 监控组件 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Prometheus | 开源监控系统,基于时间序列 | 自动发现、规则引擎、多维度标签 | 大数据平台(Hadoop、Spark)、云原生 | 需定期清理数据,避免存储膨胀 |
| Graphite | 时序数据存储与查询系统 | 简单存储、支持多数据源 | 小型系统、轻量级监控 | 查询性能弱,告警功能有限 |
| 告警规则类型 | 定义 | 特性 | 场景 | 注意点 |
|---|---|---|---|---|
| 阈值告警 | 设定固定阈值 | 简单、快速 | 突发异常(如CPU > 90%) | 容易误报(短时间峰值) |
| 趋势告警 | 基于变化率 | 识别缓慢问题 | 资源缓慢消耗(如内存增长速率) | 需历史数据,计算复杂 |
| 组合告警 | 多条件组合 | 精准识别复杂问题 | 作业失败+资源高负载 | 规则复杂,维护成本高 |
4) 【示例】
以Spark作业延迟告警为例:
spark_applications_active_applications),存储到Prometheus。alert: Spark Job Delay Alert
expr: avg_by(app, app) (spark_applications_active_applications{app=~"job.*"}[5m]) > 200
for: 3m
labels:
severity: critical
annotations:
summary: "Spark job delay exceeds threshold"
description: "Job {{ $labels.app }} has average delay >200ms for 3 minutes"
5) 【面试口播版答案】
面试官好,我设计的监控与告警系统采用分层架构,覆盖计算、管道和应用。首先,采集层用Agent收集指标,比如Hadoop任务失败率、Spark作业延迟,存储在时序数据库。然后,通过规则引擎定义告警,比如计算资源CPU超过90%或Kafka队列积压超过1000条时触发告警。自动化处理包括自动扩容Hadoop节点、重启延迟的Flink任务。核心是闭环管理,从异常检测到自动恢复,确保平台稳定运行。
6) 【追问清单】
7) 【常见坑/雷区】