开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用Zabbix去监控Redis

简介:
+关注继续查看

了解Redis的info

要获得Redis的当前情况,使用info命令即可。具体用法:#redis-cli -h 127.0.0.1 -p 6379 -a redis_passwd info [参数]。针对不同的参数就会看到具体的数字,如果没有带参数,那么就会把默认情况写出来,如果带上all参数,那么就会把所有情况都写出来。比如:#redis-cli -h 127.0.0.1 -p 6379 -a redis_passwd info server,就会看到redis关于server的一些数据,如下:

image.png

可以看出,从server里可以查询到的是版本号、pid号、配置文件路径等等东西。


如果参数是client,记录了是客户端的相关信息:

1
2
3
4
5
6
[root@func-redis-001 ~]# redis-cli -h 127.0.0.1 -p 6379 info clients
# Clients
connected_clients:64    #已连接客户端的数量(不包括通过从属服务器连接的客户端)
client_longest_output_list:0    #当前连接的客户端当中,最长的输出列表
client_biggest_input_buf:0    #当前连接的客户端当中,最大输入缓存
blocked_clients:0    #正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量


如果参数是memory,记录的是内存的相关信息:

1
2
3
4
5
6
7
8
9
10
[root@func-redis-001 ~]# redis-cli -h 127.0.0.1 -p 6379 info memory
# Memory
used_memory:2252984    #由 Redis 分配器分配的内存总量,以字节(byte)为单位
used_memory_human:2.15M    #上面的数字加上了单位
used_memory_rss:9293824    #常驻集大小,即Redis已分配的内存总量。这个值和top、ps等命令的输出一致
used_memory_peak:2607520    #Redis 的内存消耗峰值(以字节为单位)
used_memory_peak_human:2.49M    #上面的数字加上了单位
used_memory_lua:33792    #Lua 引擎所使用的内存大小(以字节为单位)
mem_fragmentation_ratio:4.13    #used_memory_rss 和 used_memory 之间的比率
mem_allocator:jemalloc-3.2.0    #在编译时指定的,Redis所使用的内存分配器。可以是libc、jemalloc或者tcmalloc。

这里要注意!在理想情况下, used_memory_rss 的值应该只比 used_memory 稍微高一点儿(我这个机器就已经属于严重的级别了)。当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。


如果参数是stats,那就是统计的相关信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@func-redis-001 ~]# redis-cli -h 127.0.0.1 -p 6379 info stats
# Stats
total_connections_received:150383    #服务器已接受的连接请求数量
total_commands_processed:500935    #服务器已执行的命令数量
instantaneous_ops_per_sec:0    #服务器每秒钟执行的命令数量
rejected_connections:0    #因为最大客户端数量限制而被拒绝的连接请求数量
sync_full:0    
sync_partial_ok:0    
sync_partial_err:0    #查找数据库键成功的次数
expired_keys:41    #因为过期而被自动删除的数据库键数量
evicted_keys:0    #因为最大内存容量限制而被驱逐(evict)的键数量
keyspace_hits:78121    #查找数据库键成功的次数
keyspace_misses:56    #查找数据库键失败的次数
pubsub_channels:0    #目前被订阅的频道数量
pubsub_patterns:0    #目前被订阅的模式数量
latest_fork_usec:878    #最近一次 fork() 操作耗费的微秒数


如果参数是CPU,那么就会返回CPU的相关信息:

1
2
3
4
5
6
[root@func-redis-001 ~]# redis-cli -h 127.0.0.1 -p 6379 info cpu
# CPU
used_cpu_sys:63.95    #Redis服务器耗费的系统CPU
used_cpu_user:129.54    #Redis服务器耗费的用户CPU 
used_cpu_sys_children:1.70    #子进程耗费的系统CPU
used_cpu_user_children:1.03    #子进程耗费的用户CPU


如果参数是keyspace,那么就会返回数据库相关的统计信息:

1
2
3
[root@func-redis-001 ~]# redis-cli -h 127.0.0.1 -p 6379 info keyspace
# Keyspace
db0:keys=262,expires=183,avg_ttl=284091259423    #据库的键数量、数据库设置有过期时间的key的数量(这个值减少是正常的)

其他还有更多信息,请移步:http://redisdoc.com/server/info.html 。感谢前人栽树!!!


使用zabbix监控redis

用zabbix监控redis是一个很简单的事儿,只需要把需要监控的数据提取出来即可。而提取数据的方法就是利用info去得到对应的数值。


首先先来一个判断redis服务器连接的脚本:

1
2
3
4
5
6
7
8
9
10
11
[root@func-redis-001 ~]# cat check_redis.sh
#这个脚本是用来zabbix监控自建redis的
#!/bin/bash
PORT='6379'
PASSWD=‘REDIS密码’ 
STATUS_redis=$(redis-cli -h '127.0.0.1' -p $PORT -a $PASSWD ping)
if "$STATUS_redis" == 'PONG' ];then
        echo '1'
else
        echo '0'
fi


然后更改zabbix_agentd.conf,如下:

1
2
UserParameter=redis_status[*],redis-cli -h '127.0.0.1' -p $1 info | grep -w $2 | awk -F':' '{print $NF}'
UserParameter=redis_ping,sudo sh /root/check_redis.sh


修改/etc/sudoers文件如下:

1
2
3
4
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
zabbix  ALL=(ALL)       NOPASSWD:ALL    #这个是新增
Defaults:zabbix !requiretty        #这个是新增


保存之后,重启zabbix-agent服务,由于我这个redis是通过zabbix-proxy监控的,所以在zabbix-proxy一端用zabbix_get来查看结果:

1.png


然后在zabbix-proxy的模板里面添加一些需要监控的item即可,有必要的话可以设置trigger+action用来报警,如图:

image.png


最后就是grafana搞一个炫酷的图表来,如图:

image.png


最后一点,关于redis的内存优化,各位可以来看看:https://cachecloud.github.io/2017/02/16/Redis%E5%86%85%E5%AD%98%E4%BC%98%E5%8C%96/,写的很全面了。还有zabbix各种模板整理,有需要的同学也可以去下载:https://monitoringartist.github.io/zabbix-searcher/ 。




 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/2047273

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Redis高可用集群
Redis高可用集群
137 0
redis 集群
redis 使用的数据库
99 0
Redis概述和单机、集群安装
Redis概述和单机、集群安装
44 0
Redis——集群
Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)进行数据共享。
503 0
Redis之集群环境搭建
前面文章介绍了Redis的主从复制,虽然该模式能够在一定程度上提高系统的稳定性,但是在数据访问量比较大的情况下,单个master应付起来还是比较吃力的,这时我们可以考虑将redis集群部署,本文就来重点给大家介绍下Redis的集群部署操作。
129 0
Redis 集群之Redis+Codis方案
Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有显著区别, 上层应用可以像使用单机的 Redis 一样使用。
729 0
Redis 复制与集群

复制

为提高高可用性,排除单点故障,redis支持主从复制功能。
其整体结构是一个有向无环图。

同步方式

分为两种:

  • 全同步
    全同步是第一次从机连主机是进行的同步,主机会生
2089 0
23703
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载