我们正在用swag升级FutureStack注册,直到4月30日。条款和条件适用。 现在注册

用New Relic监控Redis数据库性能

读取9分钟

复述,是一种快速、分布式、内存中的键值数据库。虽然Redis通常不被用作主要的数据存储,但它经常被用作性能至关重要的应用领域的快速缓存。作为一个内存中的键值数据库,Redis比传统的数据库系统要快得多。它还经常被用作轻量级分布式队列。你可以使用Redis的发布/订阅功能来分发消息给不同的接收者,而不用自己构建这个功能。

这样的用例使REDIS成为其内置的任何应用程序的一个组成部分,因此确保它具有峰值性能非常重要。否则,您的应用程序性能会降低,导致用户体验差。在最糟糕的情况下,您的申请将无法全部工作。

Redis的部署也很复杂,从单个内存节点到多节点集群,甚至是混合内存/磁盘部署复述在闪光。Redis集群中的节点越多,故障的潜在点就越多。

因此,监测REDIS至关重要。因为redis用于这么多不同的场景,所以确保您正在监视正确的指标,为您的用例很重要。确保Redis保持健康帮助创建一个顶级用户体验并减轻交易数据库的负担。

关键复述,指标

由于基于redis的应用架构可以变得非常复杂,因此涉及的组件和数据交互产生许多您应该实时监视的不同度量。并非所有指标都具有相同的权重,因此让我们检查一些关键的REDIS指标值得关注。

小费:要查看所有可用的度量,请查看我们的复述,集成文档(我们将通过下面的设置而行走)。

状态指标

software.uptimeMilliseconds: Redis服务器启动后的毫秒数。一个意想不到的低值可能意味着Redis最近崩溃了。您希望确保服务没有重新启动,因此运行时间越长越好。

system.totalSystemMemoryBytes:这是Redis运行实例中可用的内存量(以字节为单位)。监控这个指标很重要。如果你的Redis安装无法扩展,并且主机内存不足,操作系统可能会杀死Redis服务器进程。您可以通过增加存储容量来提高数量,以满足不断增加的需求。

性能指标

net.connectedClients.:这是客户端连接数(不包括来自副本的连接)。因为Redis是单线程的,一个进程服务所有的客户端请求。如果连接的客户机数量增加,服务器将花费更少的资源时间来处理每个请求,因此客户机需要等待更长的响应时间。监控客户端数量还可以揭示正在创建意外客户端连接或在使用后未能关闭它们的应用程序。

net.commandsProcessedPerSecond:监控这一指标对于确保Redis以高标准运行至关重要。如果您注意到高延迟连接和低吞吐量,您可以调查这些问题的原因,然后确定并消除根本问题。

  • 如果数字是常量,则原因不是一个计算密集型命令。
  • 如果数字突然下降,则导致延迟问题存在慢的命令。
  • 数字中不寻常的下降可以指示低命令卷或慢速命令。

db.keyspaceHitsPerSeconddb.keyspaceMissesPerSecond:这是每秒在主字典中成功查找键的次数和在主字典中失败查找的次数。

当结合在一个新的度量称为缓存命中率,这两个指标可以指示是否有效地使用redis高速缓存。缓存命中比率是keyspace命中的数量除以keyspace命中和keyspace未命中的总和。换句话说,每秒redis数据库中的所有读取操作中成功读取的成功读数的百分比。

低高速缓存命中率可能是由几个因素引起的,包括已过期数据和对REDIS的内存分配不足。低击中率意味着高应用延迟,因为应用程序必须从较慢的数据库获取数据。

错误指标

net.rejectedConnectionsPerSecond:由于客户限制,每秒拒绝的连接数。您应该不断地观看这个关键的公制,因为拒绝连接的数量的增加可能表明以下方案之一:

  • 未授权的客户端正在请求新的连接。在这种情况下,您应该确定需要这些连接的应用程序,并修改它们的流程。
  • 合法但不可预见的客户端试图建立连接,但是价值被低估了。Redis允许你通过增加配置。

维护适当的总连接数将有助于您优化Redis性能。

db.syncPartialErr:部分同步失败的次数。主服务器和副本之间的复制基于主服务器定义的特定复制ID进行。当一个副本被选为新的主副本时,该复制ID也会改变。在这种情况下,副本和旧主机之间的部分重新同步仍然是可能的。

监测Redis与新遗迹

我们的复述,集成使用新的Relic基础设施代理人收集和发送redis实例的性能指标到我们的平台。

新的遗物基础架构代理在与Redis节点相同的机器上生活,从Redis服务器收集关键性能数据,并将其发送到新的遗物平台。您可以使用预先构建的仪表板监视环境,创建警报策略,自定义查询和自定义图表。

让我们来看看在Linux(本例中是Ubuntu服务器)上监控Redis所需要的设置步骤。

注意:你也可以监控Redis作为在Kubernetes的服务中运行或者亚马逊ECS

在Ubuntu Server上安装代理和集成

  1. 新的遗物一体,导航到您的帐户下拉(在右上角),并选择添加更多数据
  2. 选择操作系统(本例中为Ubuntu),根据提示获取许可密钥并选择Ubuntu版本。
  3. 要部署基础设施代理和Redis集成,在你的服务器上运行以下命令:
    • 导入基础设施代理GPG密钥
      curl - s https://download.newrelic.com/infrastructure_agent/gpg/newrelic-infra.gpg|sudo apt-key add -
    • 添加新的Relic存储库(查看所有发行版)在这里)
      printf“deb [arch = amd64] https://download.newrelic.com/infrastructure_agent/linux/apt仿生主要”|sudo tee-a /etc/apt/sources.list.d/newrelic-infra.list
    • 安装基础架构代理(newrelic-infra)和Redis的整合(NRI-REDIS.)
      sudo apt-get更新& &sudo apt-get安装-y newrelic-infra nri-redis

配置redis集成

  1. 将目录更改为integrations配置文件夹:
    cd /etc/newrelic-infra / integrations.d
  2. 复制示例配置文件:
    sudo cp redis-config.yml。样本redis-config.yml
  3. 编辑redis-config.yml基于Redis服务器的连接方法:
    • 连接UNIX套接字:如果使用UNIX套接字连接,请指定UNIX_SOCKET_PATH.在配置文件中。如果多个Redis实例使用UNIX套接字,请务必设置use_unix_socket.为true。确保执行Redis集成的用户有正确的权限访问Unix套接字。Unix套接字的权限在Redis配置中设置(值为unixsocketperm)。
    • 连接TCP:如果通过TCP连接,配置文件默认设置为本地主机和港口6379。您可以通过指定来更改此项主机名或者港口争论。如果使用此方法,则UNIX_SOCKET_PATH.参数无法设置。
  4. 如果需要,设置其他配置文件设置基于您的Redis设置,如Redis集成文档的配置部分
  5. 重启基础架构代理:
    systemctl重新启动newrelic-infra

查看新遗物中的redis数据

要开始监控你的Redis数据库,请导航到基础设施>第三方服务>redis仪表板

让我们看一些例子,关注前面提到的一些关键指标。我们将从状态度量开始。

正常运行时间毫秒图表跟踪Redis可用性。更高的正常运行时间,更好,因为它意味着服务器已经可用,不间断。

正常运行时间毫秒图跟踪Redis的可用性

使用系统内存总字节数预测何时应该增加存储容量以满足不断增长的需求。

连接的客户机chart让你有机会检查你的Redis部署是否适应你的客户端进程和应用程序。

盯紧每秒处理的命令数图表以查看任何突然下降的情况,这可能表明命令缓慢和延迟问题。

每秒钟键空间点击次数keyspace每秒偏出图表显示缓存命中率,或者您的客户端如何使用REDIS。

拒绝每秒连接chart允许您可视化数字中的任何峰值,这可能表明未经授权的客户端正在请求新的连接,或者您低估了maxclients配置。

与之同步错误数量图表,您可以轻松捕获任何意外增加,这可能指示主实例经常失败。

包起来

您现在已经看到了为什么监视对于实现快速,可扩展和容错的Redis数据库至关重要,并且了解了您应该监控的关键指标,以确保您的Redis Master和Replica实例最佳运行。

New Relic的整合是一个很有价值的工具,你可以使用它来帮助保持Redis实例的健康。通过提供关键指标的早期警告,New Relic帮助防止数据库故障,这些故障可能会导致应用程序的糟糕用户体验、事务性数据库的更高负担和拒绝客户端连接。

Redis集成是开源软件。这意味着你可以浏览源代码发送的改进,或者创建你自己的分叉并构建它。

看看我们的完整列表On-Host集成更多信息。

如果您已准备好控制您的数据库,报名对于100GB的ingest每月和一个全栈可观性用户许可永远免费!