我想在ElastiCache上监控我的redis缓存集群。从AWS / Elasticache我可以获得FreeableMemory和BytesUsedForCache等指标。如果我没错,BytesUsedForCache是集群使用的内存(假设集群中只有一个节点)。我想计算内存的百分比用途。任何人都可以帮我获得Redis中内存使用的百分比。
答案 0 :(得分:1)
我们遇到了同样的问题,因为我们想监视数据消耗的ElastiCache Redis内存的百分比。 正确编写后,您需要查看BytesUsedForCache-这是您存储在Redis中的数据所消耗的内存量(以字节为单位)。 其他两个重要数字是
用于ElastiCache节点的AWS实例类型的可用RAM,请参阅https://aws.amazon.com/elasticache/pricing/
您的参数reserved-memory-percent
的值(检查ElastiCache参数组)。这是为“非数据目的”保留的RAM百分比,即为操作系统以及在那里运行AWS来管理ElastiCache节点所需的任何AWS。默认情况下为25%。参见https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/redis-memory-management.html#redis-memory-management-parameters
因此ElastiCache中数据的总可用内存为
(100 - reserved-memory-percent) * instance-RAM-size
(在我们的例子中,我们使用实例类型cache.r5.2xlarge,具有52.82 GB RAM,我们的默认设置为reserved-memory-percent
= 25%。
在Redis中使用info
命令检查后,我发现maxmemory_human
= 39.61 GB,等于52.82 GB的75%。)
因此,已用内存与可用内存之比为
BytesUsedForCache / ((100 - reserved-memory-percent) * instance-RAM-size)
答案 1 :(得分:0)
答案 2 :(得分:0)
通过比较freeableMemory
和bytesUsedForCache
指标,您将拥有Elasticache非集群模式的可用内存(不确定是否也适用于集群模式)。
这是我们用来监视缓存的NRQL:
SELECT Max(`provider.bytesUsedForCache.Sum`) / (Max(`provider.bytesUsedForCache.Sum`) + Min(`provider.freeableMemory.Sum`)) * 100 FROM DatastoreSample WHERE provider = 'ElastiCacheRedisNode'
这基于以下内容:
FreeableMemory
:主机上可用的可用内存量。这源自操作系统报告为可释放的RAM,缓冲区和缓存。AWS CacheMetrics HostLevel BytesUsedForCache
:Redis为所有目的分配的字节总数,包括数据集,缓冲区等。这是从Redis INFO的used_memory统计信息中得出的。{{3} } 因此BytesUsedForCache
(Redis使用的内存量)+ FreeableMemory
(Redis可以访问的数据量)= Redis可以使用的总内存。
答案 3 :(得分:0)
随着 18 个额外 CloudWatch 指标的发布,您现在可以使用 DatabaseMemoryUsagePercentage 并查看 redis 中的内存利用率百分比。
在内存部分查看有关指标的更多信息 here