
1) 【一句话结论】通过分层监控(基础设施、应用、业务)、多维度告警(阈值、异常、链路)及自动化根因定位,构建全链路监控告警系统,实现高可用与快速故障定位。
2) 【原理/概念讲解】老师口吻,解释核心概念:
分层监控体系:
3) 【对比与适用场景】
| 对比维度 | 主动监控(如Prometheus) | 被动监控(如Zabbix) |
|---|---|---|
| 定义 | 通过拉取/推送指标,主动收集数据 | 通过Agent轮询或SNMP等被动方式收集 |
| 特性 | 高扩展性、多数据源、灵活查询 | 适合简单监控、低复杂度环境 |
| 使用场景 | 大规模分布式系统、指标驱动 | 小型系统、简单监控需求 |
| 注意点 | 需合理配置采集规则,避免资源占用 | 采集频率高可能导致性能影响 |
4) 【示例】以Prometheus+Alertmanager+Grafana为例,设计监控告警系统:
Prometheus配置(监控服务):
scrape_configs:
- job_name: 'city_brain_services'
static_configs:
- targets: ['service1:9090', 'service2:9090']
Alertmanager配置(告警路由与接收):
route:
group_by: [job]
group_wait: 5s
group_interval: 30s
repeat_interval: 1h
receiver: 'ops-team'
receivers:
- name: 'ops-team'
email_configs:
- to: 'ops@jiaodu.com'
告警规则(Prometheus规则文件):
groups:
- name: city_brain_alerts
rules:
- alert: ServiceDown
expr: up == 0
for: 1m
labels:
severity: critical
annotations:
summary: "Service {{ $labels.instance }} is down"
description: "The service {{ $labels.instance }} has been down for more than 1 minute."
- alert: HighCPUUsage
expr: avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) < 0.1
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU usage on {{ $labels.instance }}"
description: "CPU usage is above 90% for 5 minutes."
根因定位:结合OpenTelemetry链路追踪,当服务A调用服务B超时,通过trace ID关联,查看服务B的日志(如“数据库连接超时”)。
5) 【面试口播版答案】
面试官您好,针对佳都科技城市大脑平台的监控告警系统设计,我的核心思路是通过分层监控、多维度告警和自动化根因定位,确保高可用和快速故障定位。首先,分层监控体系:基础设施层用Prometheus监控服务器、网络等资源指标(如CPU、内存、磁盘I/O);应用层用APM(如Jaeger)监控服务调用链(响应时间、错误率);业务层用业务监控(如Grafana仪表盘)监控API响应、用户活跃度等业务指标。其次,告警策略:结合阈值告警(如CPU > 90%触发告警)和异常检测(如指标偏离正常分布),同时设置告警分级(P0-P3),确保关键问题优先响应。然后,根因定位:通过结构化日志(如ELK)关联指标和追踪数据,快速定位问题源头(如服务A调用服务B超时,查看服务B的数据库日志发现连接超时)。最后,高可用设计:采用Prometheus+Alertmanager+Grafana的分布式架构,多节点部署,避免单点故障,同时通过告警路由和分组,减少重复告警。这样就能实现全链路监控,快速定位故障,保障城市大脑平台的高可用。
6) 【追问清单】
7) 【常见坑/雷区】