操作系统监控 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

操作系统监控

适用于 MySQL 的 Amazon RDS 或 MariaDB 中的数据库实例在 Linux 操作系统上运行,该操作系统使用底层系统资源:CPU、内存、网络和存储。

MySQL [(none)]> SHOW variables LIKE 'version%'; +-------------------------+---------------------+ | Variable_name | Value | +-------------------------+---------------------+ | version | 8.0.28 | | version_comment | Source distribution | | version_compile_machine | aarch64 | | version_compile_os | Linux | | version_compile_zlib | 1.2.11 | +-------------------------+---------------------+ 5 rows in set (0.00 sec)

数据库和底层操作系统的整体性能在很大程度上取决于系统资源的利用率。例如,CPU 是系统性能的关键组件,因为它运行数据库软件指令并管理其他系统资源。如果 CPU 过度使用(即,如果负载所需的 CPU 功率超过为数据库实例配置的功率),则此问题将影响数据库的性能和稳定性,进而影响应用程序的性能和稳定性。

数据库引擎动态分配和释放内存。当 RAM 中没有足够的内存来完成当前工作时,系统会将内存页写入磁盘上的交换内存。由于磁盘比内存慢得多,即使磁盘基于 SSD NVMe 技术,过多的内存分配也会导致性能下降。高内存利用率会增加数据库响应的延迟,因为页面文件的大小会增加以支持额外的内存。如果内存分配过高以致耗尽 RAM 和交换内存空间,则数据库服务可能变得不可用,用户可能会发现错误,例如[ERROR] mysqld: Out of memory (Needed xyz bytes)

MySQL 和 MariaDB 数据库管理系统使用存储子系统,该子系统由用于存储的磁盘组成磁盘上的结构例如表、索引、二进制日志、重做日志、撤消日志和双重写缓冲区文件。因此,与其他类型的软件相比,数据库必须执行大量的磁盘活动。为了使数据库实现最佳运行,必须监控和调整磁盘 I/O 利用率和磁盘空间分配。当数据库达到磁盘支持的最大 IOPS 或吞吐量的限制时,数据库性能可能会受到影响。例如,索引扫描引起的随机访问突发可能会导致每秒大量的 I/O 操作,最终可能会达到底层存储的限制。全表扫描可能未达到 IOPS 限制,但可能会导致以兆字节每秒为单位的高吞吐量。监控和生成有关磁盘空间分配的警报至关重要,因为错误,例如OS error code 28: No space left on device可能会导致数据库不可用和损坏。

Amazon RDS 为运行数据库实例的操作系统实时提供指标。Amazon RDS 会自动将一组操作系统指标发布到CloudWatch。这些指标可供您在 Amazon RDS 控制台和CloudWatch仪表板,您可以在中对所选指标设置警报CloudWatch。示例包括:

  • CPUUtilization— CPU 利用率的百分比。

  • BinLogDiskUsage— 二进制日志占用的磁盘空间量。

  • FreeableMemory— 可用的随机存取内存量。这代表了的价值MemAvailable的字段/proc/meminfo

  • ReadIOPS— 每秒磁盘读取 I/O 操作的平均次数。

  • WriteThroughput— 本地存储每秒写入磁盘的平均字节数。

  • NetworkTransmitThroughput— 数据库节点上的传出网络流量,它结合了数据库流量和用于监控和复制的 Amazon RDS 流量。

有关 Amazon RDS 发布的所有指标的完整参考信息CloudWatch,参见亚马逊CloudWatch亚马逊 RDS 的指标在亚马逊 RDS 文档中。

下图显示了以下示例CloudWatch亚马逊 RDS 控制台上显示的亚马逊 RDS 指标。

CloudWatch亚马逊 RDS 控制台上显示的亚马逊 RDS 指标

下图显示了显示在中的类似指标CloudWatch仪表板。

CloudWatch显示在 Amazon RDS 上的指标CloudWatch控制台

另一组操作系统指标由收集增强监控适用于亚马逊 RDS。此工具通过提供实时系统指标和操作系统流程信息,使您可以更深入地了解适用于 MariaDB 的 Amazon RDS 和 Amazon RDS for MySQL 数据库实例的运行状况。当你启用增强监控在您的数据库实例上并设置所需的粒度,该工具会收集操作系统指标和流程信息,您可以在上显示和分析这些指标和流程信息亚马逊 RDS 控制台,如以下屏幕所示。

增强监控收集的操作系统指标

增强监控提供的一些关键指标是:

  • cpuUtilization.total— 正在使用的 CPU 的总百分比。

  • cpuUtilization.user— 用户程序使用的 CPU 百分比。

  • memory.active— 分配的内存量,以千字节为单位。

  • memory.cached— 用于缓存基于文件系统的 I/O 的内存量。

  • loadAverageMinute.one— 最后一分钟请求 CPU 时间的进程数。

有关指标的完整列表,请参阅增强监控中的操作系统指标在亚马逊 RDS 文档中。

在 Amazon RDS 控制台上,操作系统进程列表提供了数据库实例中正在运行的每个进程的详细信息。该列表分为三个部分:

  • 操作系统进程-本部分汇总了所有内核和系统进程。这些过程通常对数据库性能的影响微乎其微。

  • RDS 进程— 本节概述了AWS支持 Amazon RDS 数据库实例所需的进程。例如,它包括 Amazon RDS 管理代理、监控和诊断流程以及类似流程。

  • RDS 子进程— 本节概述了支持数据库实例的 Amazon RDS 流程,在本例中为mysqld进程及其线程。这个mysqld话题嵌套在父级下方mysqld进程。

以下屏幕插图显示了 Amazon RDS 控制台中的操作系统进程列表。

亚马逊 RDS 控制台中的操作系统进程列表

Amazon RDS 将增强监控中的指标传送到您的CloudWatch日志账户。在 Amazon RDS 控制台上显示的监控数据是从中检索的CloudWatch日志。你也可以以日志流形式检索数据库实例的指标从CloudWatch日志。这些指标以 JSON 格式存储。您可以使用来自的增强监控 JSON 输出CloudWatch登录您选择的监控系统。

为了在上面显示图表CloudWatch控制面板并创建警报,在指标超过定义的阈值时启动操作,您必须在中创建指标筛选器CloudWatch从CloudWatch日志。有关详细说明,请参见AWS re: Post 文章关于如何筛选增强监控CloudWatch用于为 Amazon RDS 生成自动自定义指标的日志。

以下示例说明了自定义指标CPU.User在里面Custom/RDS命名空间。此自定义指标是通过筛选创建的cpuUtilization.user增强监控指标来自CloudWatch日志。

cpu.user 自定义指标

当指标可用时CloudWatch存储库,你可以在里面显示和分析它CloudWatch仪表板,应用进一步的数学和查询操作,设置警报以监控该特定指标,并在观测值与定义的警报条件不一致时生成警报。