如何监控 Redis

这篇具有很好参考价值的文章主要介绍了如何监控 Redis。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如何监控 Redis

简述

上篇文章介绍了如何搭建 prometheus 监控体系,监控 linux 服务器,这篇文章跟大家介绍如何监控 redis,以及我们要关注的指标都有哪些

监控 redis 需要关注什么指标

在《聊聊监控》这篇文章,介绍了 google 提出的监控四个黄金指标(没看过的朋友可以看看这篇文章),下面我们就分别通过延迟流量错误饱和度四方面,来看看对应到 redis 中,我们要监控哪些数据指标(metrics)

延迟

redis-cli 提供了--latency命令,可以很方面的让我们获取到 redis 执行命令的延迟,其原理是用 redis-cli 连接到 redis-server 上,然后不断发送ping命令,统计ping命令的耗时

> redis-cli --latency -h 127.0.0.1 -p 6379
min: 0, max: 1, avg: 0.13 (412 samples)

可以看到这里的延迟是0.13ms,因为我是在 redis-server 所在机器执行的--latency命令,下面看看我在另外一台机器执行--latnecy命令的结果

> redis-cli -h 192.168.57.140 -p 6379 --latency
min: 0, max: 3, avg: 1.21 (199 samples)

可以看到,现在的延迟为1.21ms,证明有大概1.08ms花费在了网络 I/O 上

到这里可能有些人会说,ping 命令很简单,是不是不能反馈出真实的命令执行延迟呢?其实,我们都知道,redis 是单线程模型的,如果有一条命令执行的慢,那么其后面的命令都得等着,所以我们是可以使用 ping 命令的执行耗时来作为 redis 命令执行耗时的指标的

--latency命令只能知道 redis 在什么时间点延迟比较高,并不知道延迟高是什么原因造成的,或者说不知道是哪条命令执行比较耗时,导致 redis 延迟高。跟 mysql 一样,redis 也提供了慢查询的功能,使用slowlog get [count]可以查看最近执行的慢查询命令(慢查询时间通过slowlog-log-slower-than配置指定)

127.0.0.1:6379> SLOWLOG get 1
1) 1) (integer) 47
   2) (integer) 1668743666
   3) (integer) 13168
   4) 1) "hset"
      2) "/idents/Default"
      3) "tt-fc-dev01.nj"
      4) "1668743666"
   5) "127.0.0.1:43172"
   6) ""

流量

在 redis 的流量监控中,我们一般关注的是 redis 每秒的请求数(即执行了多少次操作)、每秒接受跟返回的数据量。这些指标在都可以通过info all命令获取

> redis-cli -h 127.0.0.1 -p 6379 info all | grep instantaneous
instantaneous_ops_per_sec:0
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
  • instantaneous_ops_per_sec: 每秒执行了多少次操作
  • instantaneous_input_kbps: 每秒接受多少 KiB 的数据
  • instantaneous_output_kbps: 每秒返回多少 KiB 的数据

如果将 redis 作为缓存使用的话,还要关注缓存的命中率,同样的,可以使用info all命令查询

> redis-cli -h 127.0.0.1 -p 6379 info all | grep keyspace
keyspace_hits:0
keyspace_misses:1
  • keyspace_hits: 自 redis 启动以来,查询命令的命中数量
  • keyspace_misses: 自 redis 启动以来,未命中的数量

有了这两个指标,就可以通过keyspace_hits / (keyspace_hits + keyspace_misses)计算出缓存的命中率

错误

因为 redis 都是内存操作,基本不会出现什么错误,有错误的话一般是命令写错导致的,这一般在开发的时候就解决了,所以不用对错误做什么特殊的监控

饱和度

饱和度指的是 redis 有多“满”,在 redis 中有两个数据可以反映出 redis 究竟有多“满”,一个是内存使用率,另外一个是内存的碎片率

内存使用率可以通过info memory命令查看

> info memory 
# Memory
used_memory:1227384
used_memory_human:1.17M
used_memory_rss:4308992
used_memory_rss_human:4.11M
...
maxmemory:134217728
maxmemory_human:128.00M
...
mem_fragmentation_ratio:3.51
...
  • used_memory: 使用了多少内存
  • used_memory_rss: 操作系统分配了多少内存给 redis
  • mem_fragmentation_ratio: 即内存碎片率,根据use_memory_rss/use_memory计算得出,正常来讲,操作系统在分配内存的时候,有最小分配单位的限制(不同操作系统不一样,有 8byte、16byte 等),所以内存碎片率稍大于 1 是正常的,如果内存碎片率过高,可能就需要考虑对内存碎片进行清理了

redis-exporter 安装使用

redis 本身不通过 prometheus 协议暴露自身的各种数据指标,与node-exporter一样,我们可以运行通过redis-exporter,将 redis 的指标暴露给 pormetheus

redis-exporter下载地址:https://github.com/oliver006/redis_exporter/releases,目前最新的版本是 1.52.0

$ wget https://github.com/oliver006/redis_exporter/releases/download/v1.52.0/redis_exporter-v1.52.0.linux-amd64.tar.gz
$ tar -zxvf redis_exporter-v1.52.0.linux-amd64.tar.gz
$ mv redis_exporter-v1.52.0
$ cd redis_exporter-v1.52.0
$ ./redis_exporter &

redis-exporter暴露的端口是9121,可以通过访问 9121 查看采集的所有指标如何监控 Redis

prometheus 配置

在 prometheus 配置文件中加入如下配置

- job_name: 'redis-exporter'
    static_configs:
      - targets: ['localhost:9121']

向 prometheus 发送 HUP 信号,让 prometheus 重新读取配置文件

$ kill -HUP `pidof prometheus`

prometheus 与 grafana 的安装,在我上篇文章有讲,还不清楚怎么搭建的同学可以翻阅我上篇文章——《如何搭建 Linux 服务器监控系统》

grafana 配置

redis 控制面板,我这里用的是11835这个面板,一样通过 dashboard ID 的方式导入如何监控 Redis

监控面板如下如何监控 Redis

可以看到,面板除了展示了我们上面所讲到的指标外(如内存使用率、缓存命中数等),还展示了客户端连接数、redis 正常运行时间等

另外需要注意的是:如果你像下面一样不展示内存使用率的话

如何监控 Redis

可能是读取不到redis_memory_max_bytes指标,那是因为没配置 redis 的最大内存,可以在 redis 配置文件中添加maxmemory配置,或者使用config rewrite命令进行修改

127.0.0.1:6379> config set maxmemory 128mb
OK
127.0.0.1:6379> config rewrite
8110:M 07 Aug 2023 09:21:53.983 # CONFIG REWRITE executed with success.
OK

总结

本篇文章讲了 redis 监控需要关注的指标。并通过redis-exporter的方式,将 redis 的监控纳入到 prometheus 体系中来,如果觉得我的文章对你有帮助的话,可以点个关注或者在看哦,你的支持是我写作的动力。

 

作者|huangxy文章来源地址https://www.toymoban.com/news/detail-661328.html

到了这里,关于如何监控 Redis的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis原理简述

    1. 特性 key-value 型内存数据库 单线程——原子化操作 支持lua脚本 发布与订阅 可持久化 逐出与过期 …… 2. 持久化 RDB:经过压缩的二进制文件;fork子进程进行操作 AOF:保存所有写命令;先写缓存再同步至AOF文件;文件过大时会触发AOF重写 3. 过期:key到达了TTL时间 惰性删除

    2024年02月13日
    浏览(31)
  • 【redis】list类型命令简述

    redis的list类型,可以存储双向链表作为value,key保留有head和tail指针可以指向双向链表的头和尾,因此可以直接从头或尾对list进行操作。 全部命令如下: 下面示例如下: lpush :lpush key e1 e2 e3…将数据从头那里推入list lpop :lpop key,将数据从head弹出 这样2个同向的命令组合起

    2024年02月17日
    浏览(45)
  • 结合底层源码介绍ConcurrentHashMap如何保证线程安全,佬会爱上这篇文章嘛

    前言: 本篇文章主要讲解 结合底层源码介绍ConcurrentHashMap如何保证线程安全 的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出,对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小伙伴儿了😁 以下正文开

    2024年02月11日
    浏览(42)
  • 【redis】通过配置文件简述redis的rdb和aof

    redis的持久化方式有2种,rdb,即通过快照的方式将全量数据以二进制记录在磁盘中,aof,仅追加文件,将增量的写命令追加在aof文件中。在恢复的时候,rdb要更快,但是会丢失一部分数据。aof丢失数据极少,但是恢复数据很慢。redis默认使用rdb进行持久化。 下面结合配置文件

    2024年02月14日
    浏览(45)
  • Redis简述|以及它能用于做什么?

    Redis是一种开源的NoSQL内存数据库,用于高性能的数据存储和访问。Redis支持多种数据类型,包括字符串、哈希、列表、集合和有序集合,并且支持分布式存储和操作。Redis的特点包括快速、高可用和易扩展等,适用于各种应用场景。 Redis可以广泛应用于多种场景,包括但不限

    2024年02月02日
    浏览(80)
  • 【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群指令分析—上篇)

    Redis Cluster提供了一套完整的功能技术,使得Redis能够以分布式的方式运行,并具备高可用性、容错性和扩展性。通过自动发现、主从选举、在线分片等机制,Redis Cluster能够自动管理集群中的节点,并保证数据的一致性和可靠性。同时,基于配置文件和转向机制,Redis Cluster能

    2024年02月14日
    浏览(55)
  • 写一个监控采集公众号文章的插件

    原文链接: https://mp.weixin.qq.com/s/f8zbM6wMld3koqjaFbCuxw 微信关注了很多技术类的公众号,但是一直都没看,所以想先把文章下载下来,放着以后 可能 一定会看。 之前写的Python微信机器人系列文章里提到了如何hook微信的实时消息,实时消息里也包含了公众号文章的推送,可以获取

    2024年04月22日
    浏览(41)
  • 微服务系列文章 之 Nginx服务状态监控的方法

    在Nginx的插件模块中有一个模块stub_status可以监控Nginx的一些状态信息,默认安装可能没有这个模块,手动编译的时候加一下即可。 1. 模块安装 先使用命令查看是否已经安装这个模块: [root@ihxb123Z nginx]# ./nginx -V (V大写会显示版本号和模块等信息、v小写仅显示版本信息。 如果

    2024年02月16日
    浏览(40)
  • 微服务系列文章 之 Nginx状态监控日志分析详解

    1、Nginx状态监控 Nginx提供了一个内置的状态信息监控页面可用于监控Nginx的整体访问情况,这个功能由ngx_http_stub_status_module模块进行实现。 使用nginx -V 21 | grep -o with-http_stub_status_module命令检测当前Nginx是否有status功能,如果输出ngx_http_stub_status_module则说明是有的,如果没有可以

    2024年02月16日
    浏览(52)
  • 文章预览 安防监控/视频存储/视频汇聚平台EasyCVR播放优化小tips

    视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、H.265自动转码H.264、平台级联等。为了便于用户二次开发、调用与集成,TSINGSEE旭帆科

    2024年02月09日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包