sre基础篇-2系统可用性

sre是一个系统化工程,来保障系统稳定性(提示MTBF,降低MTTR),系统可用性跟系统稳定性强相关,稳定性目的就是减少系统故障、异常运行状态的发生,提高系统可用运行的时间占比(提高MTBF)。

系统可用性(system availability)

  • 可用性维度
    • 时长维度: availibility = uptime / (uptime + downtime)
    • 请求维度 availibility = sucessfule request / total request

时长维度

时长维度,总的来说是从故障角度出发对系统稳定性进行评估。

  • 衡量指标
    • 异常状态码
  • 衡量目标
    • 异常占比
  • 影响时长
    • 持续时间

系统可用性几个9对着表

  • 90% 一个9 36.5d
  • 99% 两个9 3.65d
  • 99.9% 三个9 8.76h
  • 99.99% 四个9 52.56m
  • 99.999% 五个9 5.26m

633b21b085274cc9700728b9a9d5cffe.png

时长维度来衡量系统稳定性,颗粒度不够精细。

请求维度

请求维度,是从成功请求占比角度,对系统稳定性进行评估。

一般是saas,对系统要求高的网站

  • 请求维度
    • 衡量指标: 请求成功率
    • 衡量目标: xx%系统运行稳定(阈值定义)
    • 统计周期: xxx-过去时间段内

故障一定意味着不稳定,不稳定,并不意味着一定有故障发生。

稳定性考虑因素

  • 成本因素
    • 越多的9意味着付出的成本和代价会更高,投入更多的资源来保障高可用、冗余资源、主备、多活、一地三中心
  • 业务容忍度
    • 核心业务,要求越多的9
    • 外围业务,适当的9
    • 当前系统稳定性状况
      • 定一个合理的标准比一个更高的标准更加重要(强化信心、积极性,逐步提高标准)

sre稳定性是系统整体运行状态,不是仅仅关注故障状态下的稳定性,系统任何异常都应该纳入到稳定性的评估范畴中。

可用性监控维度

系统可用性是指系统在一段时间内能够正常工作并提供服务的能力

系统可用性的监控是多维度的,不仅仅是硬件的健康状况,还包括应用、网络、安全、性能等方面。通过全方位的监控,可以实时发现问题并采取措施,确保系统能够持续稳定地提供服务

1. 硬件监控

  • 服务器状态:监控服务器的健康状况,包括CPU、内存、硬盘、网络接口等的使用情况。
  • 存储设备:监控磁盘空间、读写速度、磁盘健康状态等,确保没有磁盘故障或空间不足导致服务中断。
  • 网络设备:监控路由器、交换机、负载均衡器等设备的工作状态,确保网络设备正常运作。

2. 软件与应用监控

  • 应用程序状态:监控关键应用的运行状态,查看是否有崩溃、挂起或响应缓慢等问题。
  • 错误日志监控:定期检查系统和应用的日志,发现是否有错误、警告或异常日志,及时解决潜在问题。
  • 数据库健康监控:监控数据库连接数、查询响应时间、锁等待时间等,避免数据库瓶颈影响系统可用性。

3. 性能监控

  • 响应时间:监控系统对用户请求的响应时间,确保系统在承受负载时能够快速响应。
  • 吞吐量:监控系统的处理能力,包括每秒处理的请求数量等,确保系统能够在高负载下保持稳定。
  • 负载均衡:监控负载均衡器的状态,确保请求能够合理分配到不同的服务器,避免单点过载。

4. 网络监控

  • 带宽利用率:监控网络带宽的使用情况,确保没有带宽瓶颈导致的访问速度下降或服务不可用。
  • 延迟和丢包率:监控网络的延迟和丢包情况,及时发现网络故障或瓶颈。
  • 网络连接数:监控外部或内部网络的连接数量,确保连接数不过载,避免网络故障影响系统可用性。

5. 安全监控

  • 防火墙与安全设备:监控防火墙、入侵检测系统(IDS)、入侵防御系统(IPS)等的运行状况,防止外部攻击或内部安全漏洞影响系统可用性。
  • 漏洞扫描与补丁管理:定期检查系统和应用的漏洞,并及时应用补丁,避免安全漏洞导致服务中断。

6. 用户体验监控

  • 用户反馈:收集用户的反馈和投诉,了解实际用户体验,及时发现潜在的系统不可用问题。
  • 端到端监控:监控从用户端到服务器端的完整流程,包括页面加载速度、应用响应时间等,确保用户在任何情况下都能获得流畅的服务体验。

7. 冗余与备份监控

  • 高可用性架构:监控多机房、集群、负载均衡等高可用架构的健康状态,确保在单点故障时不会影响整体系统可用性。
  • 备份与恢复:定期检查系统备份是否正常进行,确保数据能够在灾难恢复时迅速恢复,避免服务中断。

8. 自动化监控和报警

  • 自动化检测:利用自动化工具实时检测系统状态,并在发现问题时快速反应。
  • 报警机制:设置合适的阈值,一旦某项指标超出正常范围,立即触发报警,确保问题能够及时得到处理。

9. 定期测试与演练

  • 容错能力测试:定期进行故障演练,模拟系统故障或灾难恢复的场景,确保系统能够在突发情况下快速恢复。
  • 压力测试:进行高并发、压力测试,确保系统能够应对大量用户请求,不会因负载过重导致服务中断。