
1) 【一句话结论】为保障99.9%系统可用性,需构建分层监控体系(系统资源、业务API、用户端体验),结合多维度指标(响应时间、错误率、可用性),并设置分级告警(从系统级到业务级),通过快速响应和闭环处理确保SLA达成。
2) 【原理/概念讲解】首先解释SLA(Service Level Agreement,服务等级协议):是企业与客户就服务质量和可用性等达成的正式承诺(如99.9%可用性意味着每年最多允许9.99小时故障)。监控体系是持续采集服务运行数据(如系统资源、业务指标),告警体系是根据预设规则触发通知(如邮件、短信),目的是及时发现异常并响应。类比:SLA是“服务合同”,监控是“合同执行检查”,告警是“违约提醒”,三者结合才能保障合同履行。监控的核心是“数据采集-分析-告警”,告警的核心是“规则设定-触发-响应”。
3) 【对比与适用场景】
监控层级对比:
| 监控层级 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 系统资源层 | 监控服务器、数据库等基础设施资源(CPU、内存、磁盘、网络) | 实时、基础 | 确保基础设施稳定,避免资源耗尽导致故障 | 需关注资源阈值,避免误报 |
| 业务API层 | 监控核心业务接口的响应时间、错误率、吞吐量 | 业务相关 | 确保业务功能正常,影响用户操作 | 需关联业务逻辑,如API错误率 >1% |
| 用户端体验层 | 监控用户访问端到端体验(页面加载时间、应用响应时间) | 用户视角 | 直接反映客户满意度,如页面加载 >3秒触发 | 需考虑网络延迟,可能误报 |
告警级别对比:
| 告警级别 | 定义 | 触发条件 | 通知方式 | 处理优先级 |
|---|---|---|---|---|
| 紧急告警 | 系统级故障,影响核心业务 | CPU > 90%持续5分钟,或数据库不可用 | 短信、电话、即时消息 | 最高,需立即处理 |
| 重要告警 | 业务级故障,影响部分用户 | API错误率 >1%,或响应时间 >2秒 | 邮件、即时消息 | 高,需快速响应 |
| 警告/预警 | 资源或性能下降,未影响业务 | CPU > 80%持续2分钟,或网络延迟增加 | 邮件 | 中,需监控趋势 |
| 信息 | 资源正常,无异常 | 所有指标在阈值内 | 无 | 低,用于日志记录 |
4) 【示例】假设系统有Web服务器、应用服务器、数据库,业务API为登录、数据查询。监控设计:
prometheus:node_cpu_seconds_total)、内存(prometheus:node_memory_MemTotal_bytes)、磁盘I/O(prometheus:node_disk_read_bytes_total)。http_request_duration_seconds)、错误率(http_request_status_code{code='5xx',api=~".*"})。groups:
- name: system_alerts
rules:
- alert: HighCPUUsage
expr: avg by (instance) (rate(node_cpu_seconds_total{mode='idle',cpu='0'}[5m])) < 10
for: 5m
labels:
severity: critical
annotations:
summary: "High CPU usage on {{ $labels.instance }}"
description: "CPU usage is above 90% for 5 minutes."
- alert: APIErrorRate
expr: sum by (api) (rate(http_request_status_code{code='5xx',api=~".*"}[5m])) > 0.01
for: 5m
labels:
severity: warning
annotations:
summary: "High error rate on {{ $labels.api }}"
description: "API error rate is above 1% for 5 minutes."
当触发告警时,通过Alertmanager发送短信(紧急)或邮件(重要),运维人员根据告警类型处理:如CPU高则检查服务器负载,API错误率高则排查代码或数据库问题,页面加载慢则优化前端资源。
5) 【面试口播版答案】各位面试官好,针对99.9%可用性SLA的监控告警设计,我的思路是构建分层监控体系并设置分级告警。首先,从系统资源层开始,监控CPU、内存等基础设施指标,比如CPU使用率超过90%持续5分钟就触发紧急告警;然后是业务API层,监控核心接口的响应时间和错误率,比如登录接口错误率超过1%就发重要告警;最后是用户端体验层,记录页面加载时间,超过3秒就触发告警。告警规则会根据影响范围设置不同级别,从系统级到业务级,确保运维人员能快速定位问题。同时,建立闭环流程,告警触发后,运维人员处理并反馈,系统记录处理结果,定期向客户汇报SLA达成情况,这样就能有效保障99.9%的可用性。
6) 【追问清单】
7) 【常见坑/雷区】