监视用于 Redis 的 Azure 缓存
用于 Redis 的 Azure 缓存使用 Azure Monitor 提供用于监视缓存实例的几个选项。 使用这些工具监视 Azure Cache for Redis 实例的运行状况,并帮助管理缓存应用程序。
使用 Azure Monitor 可以:
- 查看指标
- 将指标图表固定到仪表板
- 自定义监视图表的日期和时间范围
- 在图表中添加和删除指标
- 设置在符合特定条件时发出的警报
Azure Cache for Redis 实例的指标是使用 Redis INFO
命令收集的。 指标每分钟大约收集两次,并自动存储 30 天,因此,它们可以显示在指标图表中,并根据警报规则进行评估。
若要配置其他保留策略,请参阅使用存储帐户导出缓存指标。
有关用于每个缓存指标的不同 INFO
值的详细信息,请参阅创建自己的指标。
查看缓存指标
“资源”菜单在两个位置显示一些简单的指标:概述和监视。
若要查看基本缓存指标,请在 Azure 门户中查找缓存。 在左侧,选择“概述”。 可以看到以下预定义的监视图表:内存使用情况和 Redis 服务器负载。 这些图表是有用的摘要,可支持快速查看缓存的状态。
有关更深入的信息,可以在“资源”菜单的“监视”部分下查看更多指标。 选择“指标”,通过添加指标、删除指标和更改报告间隔来查看、创建或自定义图表。
“监视”下的其他选项提供了查看和使用缓存指标的其他方法。
选择 | 说明 |
---|---|
洞察力 | 一组预定义磁贴和图表,用作缓存指标的起点。 |
警报 | 基于指标和活动日志配置警报。 |
指标 | 创建自己的自定义图表来跟踪要查看的指标。 |
顾问建议) | 帮助遵循最佳做法来优化 Azure 部署。 |
工作簿 | 将指标分为多个组,以便一致且有效地显示指标信息。 |
使用适用于 Azure Cache for Redis 的 Azure Monitor 来查看指标图表
使用适用于 Azure Cache for Redis 的 Azure Monitor 可以查看所有 Azure Cache for Redis 资源的总体性能、故障、容量和运行状况。 在可自定义的统一交互式体验中查看指标,并可以向下钻取到各个资源的详细信息。 适用于 Azure Cache for Redis 的 Azure Monitor 基于 Azure Monitor 的工作簿功能,为指标和其他数据提供丰富的可视化效果。 若要了解详细信息,请参阅文章探究适用于 Azure Cache for Redis 的 Azure Monitor。
虽然可以从 Azure 门户的“监视器”菜单中访问 Azure Monitor 功能,但也可以直接从 Azure Cache for Redis 资源的“资源”菜单访问 Azure Monitor 功能。 有关使用 Azure Monitor 处理指标的详细信息,请参阅 Azure 中的指标概述。
若相关场景不需要适用于 Azure Cache for Redis 的 Azure Monitor 的完全灵活性,可以改为使用缓存的“资源”菜单中的“指标”查看指标和创建自定义图表,并使用首选指标、报告间隔、图表类型等自定义图表。 有关详细信息,请参阅创建自己的指标。
将见解用于预定义图表
“资源”菜单中的“监视”部分包含“见解”。 选择“见解”时,你会看到以下三种类型的图表的分组:概述、性能和操作。
每个选项卡都包含状态磁贴和图表。 这些磁贴和图表是指标的起点。 如果想要扩展到见解之外,可以定义自己的警报、指标、诊断设置和工作簿。
使用存储帐户导出缓存指标
默认情况下,Azure Monitor 中的缓存指标将存储 30 天,然后被删除。 若要延长缓存指标的保存时间,使其超过 30 天,可以使用存储帐户并指定符合要求的“保留期(天)”策略。
配置一个存储帐户以用于存储指标。 存储帐户必须与缓存位于同一区域中。 创建存储帐户后,为缓存指标配置存储帐户:
在“Azure Cache for Redis”页面中,在“监视”标题下,选择“诊断设置”。
选择“+ 添加诊断设置”。
为设置命名。
选中“存档到存储帐户”。 当你向存储帐户发送诊断时,系统会针对存储和事务收取正常数据费用。
选择“配置” 以选择要在其中存储缓存指标的存储帐户。
在表标题“指标” 下,选中你要存储的行项(例如“AllMetrics”)旁边的复选框。 指定一个“保留期(天)” 策略。 可以指定的最大保留天数为 365 天。 但是,如果你要永久保留指标数据,请将“保留期(天)”设置为 0 。
选择“保存”。
注意
除了将缓存指标存档到存储中外,还可以将其流式传输到事件中心或将其发送到 Log Analytics 工作区。
若要访问指标,请按前文所述在 Azure 门户中查看它们。 还可以使用 Azure Monitor 指标 REST API 对其进行访问。
注意
如果更改存储帐户,以前配置的存储帐户中的数据仍可供下载,但并不会显示在 Azure 门户中。
创建自己的指标
可以创建自己的自定义图表来跟踪要查看的指标。 将使用多个报告间隔报告缓存指标,其中包括“前一小时” 、“今天” 、“前一周” 和“自定义” 。 在左侧,在“监视”部分中选择“指标”。 每个指标图表会在图表中显示每个指标的平均值、最小值和最大值,并且一些指标会显示总报告间隔。
每个指标包括两种版本:一个指标衡量整个缓存的性能,以及使用群集的缓存群集。 该指标的第二种版本(名称中包含 (Shard 0-9)
)衡量缓存中单个分片的性能。 例如,如果缓存有四个分片,Cache Hits
就是整个缓存的命中总数,而 Cache Hits (Shard 3)
只衡量该缓存分片的命中数。
在左侧的“资源”菜单中,选择“监视”下的“指标”。 在这里,你会为缓存设计自己的图表,并定义指标类型和聚合类型。
聚合类型
查看聚合类型时:
- “计数”显示 2,表示对于你的时间粒度(1 分钟),指标收到了 2 个数据点。
- “最大值”显示时间粒度中某个数据点的最大值。
- “最小值”显示时间粒度中某个数据点的最小值。
- “平均值”显示时间粒度中所有数据点的平均值。
- “总和”显示时间粒度中所有数据点的总和,可能有误导性,具体取决于特定的指标。
在正常情况下,“平均值”和“最大值”相似,因为只有一个节点(主节点)发出这些指标。 如果连接的客户端数快速变化,“最大值”、“平均值”和“最小值”将显示不同的值,这也是预期的行为。
一般情况下,“平均值”会显示所需指标的平滑图表,并且能够很好地根据时间粒度的变化而变化。 如果时间粒度较大,则“最大值”和“最小值”可能无法表明指标中的较大变化,但对较小的时间粒度使用这些聚合可以帮助查明指标中发生较大变化的确切时间。
“计数”和“总和”类型对于某些指标(包括连接的客户端数)而言可能有误导性。 我们改为建议查看“平均值”指标,而不要查看“总和”指标。
注意
即使在缓存处于空闲状态,且没有连接的活动客户端应用程序时,也可能会看到一些缓存活动,例如连接的客户端、内存使用率以及正在执行的操作。 在缓存操作中,活动是正常的。
对于非聚集缓存,我们建议使用不带后缀 Instance Based
的指标。 例如,要检查缓存实例的服务器负载,请使用指标服务器负载。
对比而言,对于群集缓存,建议使用带有后缀 Instance Based
的指标。 然后,在 ShardId
上添加拆分或筛选器。 例如,要检查分片 1 的服务器负载,请使用指标服务器负载(基于实例),然后应用筛选器 ShardId = 1。
指标列表
- 第 99 个百分位延迟(预览版)
- 描述服务器端命令的最坏情况(第 99 个百分位)延迟。 通过从负载均衡器向 Redis 服务器发出
PING
命令并跟踪响应时间来衡量。 - 可用于跟踪 Redis 实例的运行状况。 如果缓存负载过重,或者有长期命令延缓了
PING
命令的执行,则延迟会增加。 - 此指标仅在基本层和高级层缓存中可用。
- 此指标不适用于受云服务停用影响的缓存。 请在此处查看详细信息
- 描述服务器端命令的最坏情况(第 99 个百分位)延迟。 通过从负载均衡器向 Redis 服务器发出
- 缓存延迟(预览版)
- 使用缓存的节点间延迟计算的缓存延迟。 此指标以微秒为单位,具有三个维度:
Avg
、Min
和Max
。 这些维度表示在指定的报告间隔期间缓存的平均延迟、最小延迟和最大延迟。
- 使用缓存的节点间延迟计算的缓存延迟。 此指标以微秒为单位,具有三个维度:
- 缓存未命中数
- 在指定的报告间隔期间,失败的键查找次数。 此数目映射到 Redis INFO 命令输出中的
keyspace_misses
。 缓存未命中并不一定意味着缓存出现了问题。 例如,在使用缓存端编程模式时,应用程序会首先查找缓存中的项。 如果缓存中不存在该项(缓存未命中),则将从数据库中检索该项并将其添加到缓存中供下次使用。 对于缓存端编程模式,缓存未命中是正常行为。 如果缓存未命中数大于预期值,请检查从缓存中填充并读取的应用程序逻辑。 如果由于内存压力而从缓存中逐出了项,则可能存在一些缓存失误,但监视内存压力更好的指标是Used Memory
或Evicted Keys
。
- 在指定的报告间隔期间,失败的键查找次数。 此数目映射到 Redis INFO 命令输出中的
- 缓存未命中率
- 在指定的报告间隔期间失败的键查找百分比。
- 缓存读取量
- 指定报告间隔期间,从缓存中读取的数据量,以每秒兆字节数(MB/秒)为单位。 此值派生自支持托管缓存的虚拟机的网络接口卡,且不特定于 Redis。 此值对应于该缓存使用的网络带宽。 如果要针对服务器端网络带宽限制设置警报,则可使用此
Cache Read
计数器来创建警报。 请参阅此表,了解各种缓存定价层和大小所遵循的带宽限制。
- 指定报告间隔期间,从缓存中读取的数据量,以每秒兆字节数(MB/秒)为单位。 此值派生自支持托管缓存的虚拟机的网络接口卡,且不特定于 Redis。 此值对应于该缓存使用的网络带宽。 如果要针对服务器端网络带宽限制设置警报,则可使用此
- 缓存写入量
- 指定报告间隔期间,写入缓存中的数据量,以每秒兆字节数(MB/秒)为单位。 此值派生自支持托管缓存的虚拟机的网络接口卡,且不特定于 Redis。 此值对应于从客户端发送到缓存的数据的网络带宽。
- 连接的客户端数
- 指定的报告间隔期间,客间户端与缓存的连接数。 此数目映射到 Redis INFO 命令输出中的
connected_clients
。 达到连接限制后,尝试连接到缓存将会失败。 即使没有活动的客户端应用程序,也仍可能会由于存在内部进程和连接而存在少量已连接的客户端实例。
- 指定的报告间隔期间,客间户端与缓存的连接数。 此数目映射到 Redis INFO 命令输出中的
- 使用 Microsoft Entra 令牌连接的客户端(预览)
- 在指定的报告间隔期间,与使用 Microsoft Entra 令牌进行身份验证的缓存的客户端连接数。
- 每秒创建的连接数
- 通过端口 6379 或 6380 (SSL) 在缓存上每秒创建的即时连接数。 此指标可以帮助确定客户端是否频繁断开连接和重新连接,这样可能会导致 CPU 使用率较高以及 Redis 服务器负载增加。
- 每秒关闭的连接数
- 通过端口 6379 或 6380 (SSL) 在缓存上每秒关闭的即时连接数。 此指标可以帮助确定客户端是否频繁断开连接和重新连接,这样可能会导致 CPU 使用率较高以及 Redis 服务器负载增加。
- CPU
- 指定报告间隔期间,用于 Redis 的 Azure 缓存服务器的 CPU 使用率(以百分比表示)。 此值映射到操作系统
\Processor(_Total)\% Processor Time
性能计数器。 注意:由于节点上运行的低优先级后台安全进程,此指标可能会产生干扰,因此,我们建议监视服务器负载指标,以跟踪 Redis 服务器负载。
- 指定报告间隔期间,用于 Redis 的 Azure 缓存服务器的 CPU 使用率(以百分比表示)。 此值映射到操作系统
- 错误
- 在指定的报告间隔期间,缓存可能会出现的特定故障和性能问题。 此指标具有八个维度,表示不同的错误类型,但在将来可能会添加更多维度。 现在所代表的错误类型如下所示:
- Failover - 缓存故障转移时(从属缓存提升为主缓存)。
- Dataloss - 缓存上发生数据丢失时。
- UnresponsiveClients - 当客户端从服务器读取数据的速度不够快时,特别是当客户端的 Redis 服务器输出缓冲区中的字节数超过 1,000,000 字节时。
- AOF - 存在与 AOF 持久性相关的问题时。
- RDB - 存在与 RDB 持久性相关的问题时。
- Import - 存在与导入 RDB 有关的问题时。
- Export - 存在与导出 RDB 有关的问题时。
- AADAuthenticationFailure(预览版)- 使用 Microsoft Entra 访问令牌进行身份验证失败时。 建议不要使用。 请改用 MicrosoftEntraAuthenticationFailure。
- AADTokenExpired(预览版)- 当用于身份验证的 Microsoft Entra 访问令牌未续订且过期时。 建议不要使用。 请改用 MicrosoftEntraTokenExpired。
- MicrosoftEntraAuthenticationFailure(预览版)- 使用 Microsoft Entra 访问令牌进行身份验证失败时。
- MicrosoftEntraTokenExpired(预览版)- 当用于身份验证的 Microsoft Entra 访问令牌因未续订而过期时。
- 在指定的报告间隔期间,缓存可能会出现的特定故障和性能问题。 此指标具有八个维度,表示不同的错误类型,但在将来可能会添加更多维度。 现在所代表的错误类型如下所示:
- 逐出的密钥数
- 由于
maxmemory
限制而在指定的报告间隔期间从缓存中逐出的项数。 - 此数目映射到 Redis INFO 命令输出中的
evicted_keys
。
- 由于
- 过期的密钥数
- 指定的报告间隔期间,缓存中过期的项目数。 此值映射到 Redis INFO 命令输出中的
expired_keys
。
- 指定的报告间隔期间,缓存中过期的项目数。 此值映射到 Redis INFO 命令输出中的
重要
异地复制指标受每月内部维护操作影响。 Azure Cache for Redis 服务使用最新的平台功能和改进功能定期修补所有缓存。 更新期间,每个缓存节点都将脱机,这会暂时禁用异地复制链接。 如果异地复制链接运行不正常,请检查是否是由异地主缓存或异地辅助缓存上的修补事件引起的,方法是使用门户中“资源”菜单中的“诊断和解决问题”。 根据缓存中的数据量,修补的停机时间可能是几分钟到一个小时。 如果异地复制链接运行不正常的时间超过一小时,请提交支持请求。
注意
异地复制仪表板工作簿是在同一位置查看所有高级层异地复制指标的简单方法。 此仪表板将汇总仅由异地主数据库或异地辅助数据库发出的指标,以便可以同时查看它们。
异地复制连接滞后时间
- 描述自异地主缓存和异地辅助缓存上次成功数据同步后的时间(以秒为单位)。 如果链接断开,此值将继续增加,指示存在问题。
- 此指标仅从异地辅助缓存实例发出。 在异地主实例上,此指标没有值。
- 此指标仅适用于启用了异地复制的缓存的高级层。
异地复制数据同步偏移量
- 描述尚未同步到异地辅助缓存的大致数据量(以字节为单位)。
- 此指标仅从异地主缓存实例发出。 在异地辅助实例上,此指标没有值。
- 此指标仅适用于启用了异地复制的缓存的高级层。
异地复制完全同步事件已完成
- 描述异地复制缓存之间完全同步的完成情况。 如果在异地主缓存上看到大量写入操作,并且两个缓存之间的复制无法保持一直,那么需要完全同步。 完全同步涉及到通过拍摄 RDB 快照将完整数据从异地主缓存复制到异地辅助缓存,而不是在普通实例上发生的部分同步。 有关更详细的说明,请查看此页面。
- 在大多数情况下,此指标报告结果为零,因为异地复制对初始完全同步后添加的任何新数据都使用部分重新同步。
- 此指标仅从异地辅助缓存实例发出。 在异地主实例上,此指标没有值。
- 此指标仅适用于启用了异地复制的缓存的高级层。
异地复制完全同步事件已启动
- 描述异地复制缓存之间完全同步的启动情况。 如果异地主缓存中存在很多写入操作,并且两个缓存之间的复制无法保持一致,那么需要完全同步。 完全同步涉及到通过拍摄 RDB 快照将完整数据从异地主缓存复制到异地辅助缓存,而不是在普通实例上发生的部分同步。 有关更详细的说明,请查看此页面。
- 在大多数情况下,此指标报告结果为零,因为异地复制对初始完全同步后添加的任何新数据都使用部分重新同步。
- 此指标仅从异地辅助缓存实例发出。 在异地主实例上,此指标没有值。
- 此指标仅适用于启用了异地复制的缓存的高级层。
异地复制正常
- 描述缓存之间的异地复制链接的状态。 复制链接可能处于两种可能的状态:
- 0 disconnected/unhealthy
- 1 - 正常
- 该指标在启用了异地复制的高级层缓存中可用。
- 在 Premium 层的缓存中,此指标仅从异地辅助缓存实例发出。 在异地主实例上,此指标没有值。
- 此指标可能表示由于多种原因而导致断开连接/不正常的复制状态,包括:月度修补、主机 OS 更新、网络配置错误或异地复制链接预配失败。
- 值为 0 并不意味着异地副本上的数据丢失。 它仅意味着异地主缓存和异地辅助缓存之间的链接运行不正常。
- 如果异地复制链接运行不正常的时间超过一小时,请提交支持请求。
- 描述缓存之间的异地复制链接的状态。 复制链接可能处于两种可能的状态:
获取数
- 在指定的报告间隔期间在缓存上运行的 get 命令数量的总和。 此总和是 Redis INFO all 命令针对 get 系列中的所有命令(包括
GET
、HGET
、MGET
等)报告的cmdstat
计数增加的总和。 该值可能与命中数和未命中数的总数不同,因为某些单独的命令会访问多个键。 例如,MGET key1 key2 key3
仅将获取次数增加 1,但将命中数和未命中数的总数增加 3。
- 在指定的报告间隔期间在缓存上运行的 get 命令数量的总和。 此总和是 Redis INFO all 命令针对 get 系列中的所有命令(包括
每秒操作数
- 指定的报告间隔期间,由缓存服务器处理的每秒命令总数。 此值映射到 Redis INFO 命令中的“instantaneous_ops_per_sec”。
服务器负载
- Redis 服务器忙于处理消息并且未空闲等待消息的 CPU 周期百分比。 如果此计数器达到 100,那么 Redis 服务器已达到性能上限且 CPU 达到速度上限。 预期会出现较大的延迟影响。 如果你看到较高的 Redis 服务器负载(如 100),因为你正在向服务器发送大量昂贵的命令,则客户端中可能会出现超时异常。 在这种情况下,应考虑纵向扩展、横向扩展到高级群集或将数据分区到多个缓存中。 当服务器负载仅为中等偏高(如 50% 到 80%)时,平均延迟通常会保持较低水平,超时异常的原因可能并不是高服务器延迟。
- 服务器负载指标对计算机上的其他进程敏感,这些进程使用现有的 CPU 周期来减少 Redis 服务器的空闲时间。 例如,在 C1 层上,病毒扫描等后台任务导致服务器负载达到较高的峰值,且没有明显原因。 除了服务器负载之外,我们还建议关注其他指标,例如操作数、延迟和 CPU。
注意
有时,服务器负载会超过 100。 我们正在调查此问题。 建议在此期间改用 CPU 指标。
- 设置
- 在指定的报告间隔期间在缓存上运行的 set 命令数量的总和。 此总和是 Redis INFO all 命令针对 set 系列中的所有命令(包括
SET
、HSET
、MSET
等)报告的cmdstat
计数增加的总和。
- 在指定的报告间隔期间在缓存上运行的 set 命令数量的总和。 此总和是 Redis INFO all 命令针对 set 系列中的所有命令(包括
- 总密钥数
- 在上一个报告时段缓存中的最大密钥数。 此数目映射到 Redis INFO 命令输出中的
keyspace
。 由于已启用群集的缓存的基础指标系统存在限制,因此,“总密钥数”将返回在上一个报告时段内密钥数最多的分片的最大密钥数。
- 在上一个报告时段缓存中的最大密钥数。 此数目映射到 Redis INFO 命令输出中的
- 总操作数
- 指定的报告间隔期间,由缓存服务器处理的命令总数。 此值映射到 Redis INFO 命令输出中的
total_commands_processed
。 当 Azure Cache for Redis 纯粹用于发布/订阅时,将不存在Cache Hits
、Cache Misses
、Gets
或Sets
的指标,但存在Total Operations
指标,它反映了发布/订阅操作的缓存使用情况。
- 指定的报告间隔期间,由缓存服务器处理的命令总数。 此值映射到 Redis INFO 命令输出中的
- 已用内存
- 在指定的报告间隔期间,缓存中的键/值对所用的缓存内存量(以 MB 为单位)。 此值映射到 Redis INFO 命令输出中的
used_memory
。 此值不包括元数据或碎片。
- 在指定的报告间隔期间,缓存中的键/值对所用的缓存内存量(以 MB 为单位)。 此值映射到 Redis INFO 命令输出中的
- 已用内存百分比
- 在指定的报告间隔期间使用的总内存的百分比。 此值引用 Redis INFO 命令输出中的
used_memory
值来计算百分比。 此值不包括碎片。
- 在指定的报告间隔期间使用的总内存的百分比。 此值引用 Redis INFO 命令输出中的
- 已用内存 RSS
- 指定报告间隔期间所用的缓存内存量(以 MB 为单位),包括碎片。 此值映射到 Redis INFO 命令输出中的
used_memory_rss
。
- 指定报告间隔期间所用的缓存内存量(以 MB 为单位),包括碎片。 此值映射到 Redis INFO 命令输出中的
创建警报
可配置为基于指标和活动日志接收警报。 通过 Azure Monitor 可配置警报,使警报触发时执行以下操作:
- 发送电子邮件通知
- 调用 Webhook
- 调用 Azure 逻辑应用
若要为缓存配置警报,请在“资源”菜单上的“监视”下选择“警报”。
有关配置和使用警报的详细信息,请参阅警报概述。
使用工作簿进行整理
定义指标后,可以将其发送到工作簿。 工作簿提供了一种可用于将指标整理成组的方式,以一致的方式提供信息。 Azure Cache for Redis 在 Azure Cache for Redis Insights 部分中默认提供两个工作簿:
有关创建指标的信息,请参阅创建自己的指标。
提供的两个工作簿是:
Azure Cache for Redis 资源概述结合了许多最常用的指标,以便一目了然地查看缓存实例的运行状况和性能。
异地复制仪表板会从异地主缓存实例和异地辅助缓存实例拉取异地复制运行状况和状态指标,以全面了解异地复制运行状况。 建议使用此仪表板,因为某些异地复制指标仅从异地主数据库或异地辅助数据库发出。