本页全面概述了监控方法、CI/CD 实践和 DevOps 方法论,它们对于维护健壮的后端系统至关重要。内容侧重于实际实施策略、常用工具以及确保系统可靠性、性能和运营效率的最佳实践。
有关部署自动化和容器化的详细信息,请参阅容器技术和基础设施与运维。
监控是可靠系统运行的基础。它涵盖了跟踪系统健康状况、性能指标和检测异常。
常规监控侧重于系统级指标,这些指标能够反映基础设施和应用程序的整体健康状况。
常规监控应遵循“全面、快速、准确”的原则
| 类别 | 评估指标 | 描述 |
|---|---|---|
| 核心 | 请求量 | 服务请求总数 |
| 核心 | 成功率 | 成功请求的百分比 |
| 核心 | 延迟 | 处理请求所需时间 |
| 基础设施 | CPU 使用率 | CPU利用率百分比 |
| 基础设施 | 内存使用 | 内存消耗模式 |
| 基础设施 | 磁盘 I/O | 读/写操作及吞吐量 |
| 基础设施 | 网络流量 | 入站/出站网络流量 |
| 应用程序 | 错误率 | 应用程序错误率 |
| 应用程序 | 垃圾回收 | JVM垃圾回收频率和持续时间 |
| 应用程序 | 线程数 | 活动线程数 |
开源:
商业类:
用于即时诊断,命令行工具提供关键洞察
| 工具 | 目的 | 常见用途 |
|---|---|---|
| top | 进程活动监控器 | 查看实时系统资源使用情况 |
| sar | 系统活动报告 | 历史性能数据分析 |
| tsar | 淘宝系统活动报告器 | 性能统计信息收集 |
| nload | 网络流量监视器 | 实时网络吞吐量 |
| iostat | I/O 统计信息 | 磁盘I/O监控 |
| vmstat | 系统利用率 | 内存、CPU、I/O统计 |
| netstat | 网络统计 | 连接状态概览 |
来源:README.md845-857 README.md832-991
APM 解决方案提供对应用程序性能的深入洞察,侧重于事务追踪、代码级性能和最终用户体验。
分布式追踪对于在微服务架构中跟踪跨多个服务的请求至关重要。它基于谷歌的 Dapper 设计,提供了一种可视化请求流并识别瓶颈的方法。
| 工具 | 组织架构 | 主要功能 |
|---|---|---|
| SkyWalking | Apache | 服务、中间件、数据库监控;自动发现 |
| CAT | 大众点评/美团 | 实时应用监控;高性能 |
| Jaeger | CNCF | 分布式追踪;兼容 OpenTracing |
| Pinpoint | Naver | 代码级可见性;低开销 |
| Zipkin | Twitter/OpenZipkin | 分布式追踪;轻量级 |
统计分析涉及收集和分析数据,以了解使用模式、跟踪业务指标并识别潜在问题。
埋点是在代码中策略性放置的钩子,用于收集数据进行分析。它们对于跟踪用户行为和业务指标至关重要。
通常通过埋点跟踪的关键指标
第三方分析工具:
自定义解决方案:
无埋点:
CI/CD 实践为自动化软件交付过程、确保质量并实现频繁发布提供了框架。
Jenkins 是最受欢迎的开源 CI/CD 工具之一,提供广泛的插件支持和灵活性。
Jenkins 主要功能
环境分离是 CI/CD 中的一项关键实践,旨在确保整个开发生命周期中的代码质量和稳定性。
| 环境 | 目的 | 特性 |
|---|---|---|
| 开发 | 活跃开发环境 | 频繁变更,稳定性要求最低 |
| 测试/质量保证 | 质量保证 | 受控环境,用于测试新功能 |
| 预发布 | 预生产验证 | 生产环境镜像,最终验证 |
| 生产 | 为用户提供服务的实时系统 | 稳定、优化、严格控制 |
环境分离的最佳实践
自动化运维旨在通过代码消除手动任务,使基础设施管理更加可靠和高效。
Ansible 是一种无需代理的自动化工具,它使用基于 YAML 的 Playbook 来定义自动化任务。
主要功能
Puppet 是一种配置管理工具,它使用声明式语言来定义系统配置。
主要功能
Chef 是一种配置管理工具,它使用基于 Ruby 的 Recipes 来自动化基础设施。
主要功能
测试是运维的关键组成部分,它确保变更的可靠性,并且不会引入回归问题。
TDD 是一种开发方法,它在编写代码之前先编写测试,每次只关注一个方面。
TDD 的优势
压力测试(负载测试)评估系统在高负载下的性能。
工具
全链路压力测试模拟真实流量在所有系统组件上的运行,以识别瓶颈。
优点
| 技术 | 描述 | 用例 |
|---|---|---|
| A/B 测试 (A/B Testing) | 在不同的用户群上测试两个变体 | 功能验证 |
| 金丝雀版本 | 在完全部署前向小部分用户发布 | 风险规避 |
| 蓝绿部署 | 维护两个相同的环境并切换流量 | 零停机部署 |
虚拟化和容器化技术为应用程序提供资源隔离和可移植性。
| 技术 | 类型 | 特性 |
|---|---|---|
| KVM | I 型虚拟机管理器 | 基于内核,内置于 Linux |
| Xen | I 型虚拟机管理器 | 带半虚拟化的裸金属虚拟机管理器 |
| VMware ESXi | I 型虚拟机管理器 | 企业级,全面管理 |
| OpenVZ | 操作系统级虚拟化 | 基于容器,高效资源利用 |
Docker 提供了一种标准化方式来打包应用程序及其依赖项以进行部署。
主要功能
云技术为现代 DevOps 实践奠定了基础,实现了可扩展性、灵活性和自动化。
DevOps 是一项文化和技术运动,旨在弥合开发与运维之间的鸿沟。
核心 DevOps 原则
实施 DevOps 的关键考量
在 DevOps 环境中,有效的文档对于知识共享和新员工培训至关重要。
常用文档工具
最佳实践
为了成功实施监控和 DevOps 实践,组织应遵循分阶段的方法
关键成功因素