亚马逊AWS官方博客
云端可观测实践(二)| 助力电商平台 Amazon RDS & ElastiCache 性能提升
在当今的电子商务时代,一个高效、稳定的电商平台对于保持竞争力至关重要。数据库作为电商平台的核心支撑,其性能直接影响到用户体验和业务流畅度。本文将深入探讨如何在电商场景下通过观测云对亚马逊云科技 RDS(MySQL) 和 ElasticCache(Redis)进行有效的性能监控和优化。
背景
电商平台通常面临着巨大的用户访问量、大规模的数据处理需求和高并发的交易操作。这些挑战要求数据库能够:
- 快速响应用户查询,确保页面加载速度。
- 高效处理事务,支持秒杀、抢购等高并发场景。
- 稳定运行,保证数据的一致性和完整性。
为此,监控和优化数据库性能成为电商运营中的关键任务。观测云作为亚马逊云科技的合作伙伴,为客户快速提供构建可观测性的解决方案,协助客户优化软件代码质量,提高业务系统的稳定性和可靠性。下面介绍如何快速通过观测云构建 MySQL 和 Redis 的性能监控。
指标采集
CloudWatch 是亚马逊云科技提供的一项监控服务。开发人员和系统管理员可通过 CloudWatch 收集、监控和分析与亚马逊云科技基础架构和应用程序相关的日志文件和指标数据。观测云通过对接 CloudWatch 获取基础数据,借助自身数据清洗打标能力和自定义数据展示能力,为开发人员和系统管理员定制自定义统一观测仪表板提供便利,使用户更灵活的构建云服务观测场景。除此之外,观测云通过 DataKit 可以直接采集数据库的性能指标,对 CloudWatch 的监控进一步增强。
在 RDS 数据库相关服务的统一观测场景中,首先我们需要将各项云服务的数据指标集成到观测云,为后续自定义数据仪表板做好准备。采集数据的组件有两个,其一是观测云 DataKit 数据采集套件,通过用户环境内部署的 DataKit 桥接,用户可方便的将 RDS MySQL 或 Redis 的指标发送到观测云。其二是观测云 Dataflux Function 数据开发平台(简称 Func),通过脚本访问亚马逊云科技 API 的方式获取云服务指标。以下将介绍如何采集 CloudWatch 指标。
通过观测云 DataKit 采集
配置方式:
- 首先确保您已注册观测云账号,并为需要观测的云资源分配好工作空间
- 在一台虚机上安装 DataKit
- 进入 DataKit 安装目录下的
conf.d/db
目录,复制mysql.conf.sample
并命名为mysql.conf
进入 DataKit 安装目录下的 conf.d/db
目录,复制 redis.conf.sample
并命名为 redis.conf
配置配置文件连接参数后并重启 DataKit
进入观测云查看 MySQL 、Redis 仪表板
相对于通过脚本访问亚马逊云科技 API 的方式获取云服务指标,观测云通过 DataKit 直接采集数据,可以配合标准视图显示更多指标,并且可以进一步补充,如 RDS 直接采集可以进一步获取 MySQL 慢查询日志、普通日志、运行日志等信息,在观测云 UI 上配合指标进行进一步分析;Redis 直接采集,可获取 redis_bigkey
、 redis_hotkey
等字段分析、结合采集到的 Redis 指标、慢查询日志等,帮助工程师进一步进行分析性能、定位问题。
通过观测云 Dataflux Function 采集
配置方式:
- 首先确保您已注册观测云账号,并为需要观测的云资源分配好工作空间
- 访问 func.guance.com,获取 Dataflux Function 环境安装命令,并完成 Func 安装
- 登录 Func 页面,完成初始化配置后,进入官方脚本库
- 检索安装 MySQL 对应的采集脚本:「观测云集成(RDS 采集)」(ID:
guance_rds
) - 检索安装 Redis 对应的采集脚本:「观测云集成(MemoryDB 采集)」(ID:
guance_memorydb
) - 点击【安装】后,为每个脚本配置亚马逊云科技访问权限参数,包括亚马逊 AK、亚马逊账户名
- 点击【部署启动脚本】,系统会自动创建
Startup
脚本集,并自动配置相应的启动脚本,开始对指标的自动采集 - 登录观测云平台并打开对应,进入「指标」-「指标管理」查看是否有对应监控数据
- 查看 RDS MySQL 仪表板
日志采集
指标用于衡量当前服务关于资源状态和性能的定量数据,用于实时监控的状态判断和其他数值应用场景,例如设置基于数值判断的告警规则。而日志则提供了更详细的事件和操作记录,用于故障排除、安全审计和性能分析等目的。两者通常结合使用,以全面监控和管理云环境中的资源和应用程序。因此,我们除了采集云服务的指标数据,还需要补充日志数据的采集,来完善对云服务的观测维度。
对于数据库服务,一个典型的分析场景是性能优化和故障排除。慢查询日志可以帮助识别数据库中执行时间较长的查询语句,从而找出性能瓶颈和潜在的优化机会。用户通过分析慢查询日志,可以发现可能需要优化的索引、缓存问题、复杂查询等,以提高数据库性能,排除数据库故障。
如下图所示,观测云可以通过采集 Amazon CloudWatch Logs 的 RDS 日志,来实现存储、查询、分析以及可视化服务。
RDS 日志导出至 Amazon CloudWatch Logs。
配置 lambda 函数,添加触发器。
观测云 Lambda 函数地址:
https://github.com/GuanceCloud/terraform-guance-forwarder/tree/main/examples/xxx
添加环境变量。
传输至 datakit 机器,开通 9529 端口。
登录到观测云查看日志:
构建性能仪表板
完成云服务指标和日志等基础数据准备后,用户可登录观测云工作空间,通过观测云场景仪表板构建构建自定义 Dashboard,以可视化的方式实时监控、故障诊断、性能优化、趋势分析和协作等功能,帮助用户全面了解和管理系统的运行状况。所选指标和日志的展示内容均可按照用户自身需要进行组合、过滤、筛选,充分利用观测云数据整合的灵活性构建符合用户使用习惯或使用需求的定制化仪表板。
观测云仪表板的构建,可以通过新建仪表板的方式从零开始自由绘制新的仪表板。如果希望减轻开发工作量,也可利用观测云提供的基础模板,在现有仪表板基础上进行改造。标准化模板在「场景」-「仪表板」中选择。例如我们现在需要监控 MySQL 和 Redis,输入对应的关键字即可一键创建对应的监控仪表板。
RDS 模板
观测云提供 RDS 监控视图标准模版,包括查询响应时间、并发连接数、事务吞吐量、慢查询、缓冲池使用率等指标,如上图 RDS 采集指标所示,相对于 RDS 控制台指标可以提供更多的指标分析并可结合 RDS 日志做更进一步可视化分析。
Redis模板
观测云提供 Redis 监控视图标准模版,包括命中率、内存使用、读写操作速率、redis_bigkey 大键、redis_hotkey 热键等指标,相对于 ElasticCache 控制台指标可以提供更多的指标分析,并可结合 Redis 日志做更进一步可视化分析。
自定义仪表板
使用观测云带来的一个关键价值点是用户可以按自身监控需求,将不同的数据集中在一个仪表板中进行关联展示,通过数据标签或时间标签,筛选同一故障时刻的指标和日志内容进行关联展示,提升问题分析的效率。为实现这个效果,需要点击进入对应的仪表板,通过添加图表的方式,在当前时序仪表中增加日志查看器。并编辑日志来源,选择对应 MySQL 的慢日志或 Redis 服务的日志,使日志和指标在同一个仪表板中展示:
这些数据可基于页面视图变量或时间标签进行联动,当用户选择指定的时间标签或视图变量时,指标和日志可随变量选择关联展示对应的数据和文本。用户基于该功能快速定位至故障时间点的相关监控信息,缩短监控数据的查找和等待时间,提升故障处理效率。
数据监控及告警
云服务各项基础监控指标和日志除了应用于实时状态观测,用户还可基于这些数据,建立自动跟踪系统状态的告警监控器,实现对故障的自动识别、告警通知等功能。配置告警监控器可通过工作空间的「监控」-「监控器」-「新建监控器」,根据指标判断的方式选择不同的监控器类型:
在监控器内部,配置需要监测的指标来源、检测条件、通知内容、通知对象后,点击保存即可使该监控器生效。后续如果被监测对象出现异常,用户可通过工作空间的「事件」菜单,查看对应告警的详情。
针对标准云服务产品,观测云也提供了预置的标准监控模板,为用户提供开箱即用的告警配置体验:
总结
通过对云服务指标和日志的收集,观测云为用户提供了统一视图、关联分析、自定义可视化图表等能力。通过将来自不同亚马逊云科技服务的指标和日志数据集中到一个统一的仪表板中,减少在不同的云服务监控控制台之间切换,提升监控效率。通过自定义仪表将不同来源的指标和日志数据进行关联展示,综合分析不同层面的指标和日志数据,发现潜在的关联性问题,加快故障诊断和问题解决的速度。通过自定义仪表板能力,用户可以根据特定的关注点和业务需求创建定制化仪表,方便不同用户使用监控数据来保障系统稳定运行。