Zabbix5.0监控Redis

1.什么是Redis

​ Redis是一个开源的高性能NoSQL数据库,可称为远程字典服务。

  • 基于内存运行,性能高效
  • 支持分布式,理论上可以无限扩展
  • key-value存储系统
  • 使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API

1.1 基础概念普及

1.1.1 应用场景

​ 缓存系统(“热点”数据:高频读、低频写)、计数器、消息队列系统、排行榜、社交网络和实时系统。

1.1.2 数据类型

​ 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

1.1.3 操作命令
1.1.3.1 字符串类型string

它是一个二进制安全的字符串,不仅可以存储字符串,还能存储图片、视频等多种类型。

  • GET/MGET
  • SET/SETEX/MSET/MSETNX
  • INCR/DECR
  • GETSET
  • DEL
1.1.3.2 哈希类型hash

该类型就是key和value组的Hash表。

  • HGET/HMGET/HGETALL
  • HSET/HMSET/HSETNX
  • HEXISTS/HLEN
  • HKEYS/HDEL
  • HVALS
1.1.3.3 列表类型list

该类型是基于双链表实现,是按插入顺序排序的字符串集合。

  • LPUSH/LPUSHX/LPOP/RPUSH/RPUSHX/RPOP/LINSERT/LSET
  • LINDEX/LRANGE
  • LLEN/LTRIM
1.1.3.4 集合类型set

set类型和list类型的最大区别是:元素是唯一的且元素没有顺序,底层是基于哈希表不是双链表。

  • SADD/SPOP/SMOVE/SCARD
  • SINTER/SDIFF/SDIFFSTORE/SUNION
1.1.3.4 顺序集合类型zset

ZSet是一种有序集合类型,每个元素都会关联一个分数权值,通过权值来为集合中的成员进行从小到大的排序。

  • ZADD/ZPOP/ZMOVE/ZCARD/ZCOUNT
  • ZINTER/ZDIFF/ZDIFFSTORE/ZUNION
1.1.4 持久化机制

redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。

1.1.4.1 RDB 机制

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。

①、优势

(1)RDB文件紧凑,全量备份,非常适合用于进行备份和灾难恢复。

(2)生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。

(3)RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

②、劣势

RDB快照是一次全量备份,存储的是内存数据的二进制序列化形式,存储上非常紧凑。当进行快照持久化时,会开启一个子进程专门负责快照持久化,子进程会拥有父进程的内存数据,父进程修改内存子进程不会反应出来,所以在快照持久化期间修改的数据不会被保存,可能丢失数据。

1.1.4.2 AOF 机制

全量备份总是耗时的,有时候我们提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。

①、优势

(1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒执行一次fsync操作,最多丢失1秒钟的数据。

(2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。

(3)AOF日志文件的命令通过非常可读的方式进行记录,这个特性非常适合做灾难性的误删除的紧急恢复。比如某人不小心用flushall命令清空了所有数据,只要这个时候后台rewrite还没有发生,那么就可以立即拷贝AOF文件,将最后一条flushall命令给删了,然后再将该AOF文件放回去,就可以通过恢复机制,自动恢复所有数据

②、劣势

(1)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大。

(2)AOF开启后,支持的写QPS会比RDB支持的写QPS低,因为AOF一般会配置成每秒fsync一次日志文件,当然,每秒一次fsync,性能也还是很高的。

(3)AOF可能存在bug,出现过不能恢复一模一样的数据的情况。

1.2 常见的问题

1.2.1 击穿问题

​ 在Redis获取某一key时, 由于key不存在, 而必须向DB发起一次请求的行为, 称为“Redis击穿”。

引发击穿的原因:恶意访问不存在的key、Key过期

改善的方案:对某些高频访问的Key,设置合理的TTL或永不过期、标准化key的命名后可以拦截不规范的key

1.2.2 雪崩问题

​ Redis缓存层由于某种原因宕机后,所有的请求会涌向存储层,短时间内的高并发请求可能会导致存储层挂机,称之为“Redis雪崩”。

改善的方案:限流、使用Redis集群

2.如何监控Redis

2.1 使用zabbix5.0监控

zabbix5.0提供了一个redis的监控模板,专业和实用,我们选择这个自带的模板(Template DB Redis)进行监控redis就行,该模板提供了64个监控项和13个触发器,非常详细。

2.1.1 前置条件
  • 安装有Redis-server服务,可以运行redis-cli命令
  • 在Redis-server服务器上安装zabbix-agent2
2.1.2 配置Redis模板

使用zabbix5.0自带的模板监控Redis非常方便,三步搞定。

第一步,选择要监控的主机(该主机上部署有Redis服务),点击模板选项卡并选择。

第二步,选择主机群主Templates,再找到模板【Template DB Redis】点选择,然后点击更新,就绑定关联了。

第三步,查看最新数据,如果有数据,就说明可以正常监控Redis。

2.1.3 监控原理

该方案数据采集原理是通过客户端agent调用redis-cli采集的。

#通过执行以下命令info采集监控数据:
redis-cli  -h 166.8.50.* -p 端口号  -a 'password' info
#通过读取redis安装目录下的redis.conf文件内容
redis 127.0.0.1:6379> CONFIG GET *

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pJrOzMmm-1631701376129)(C:\Users\Test\Desktop\Zabbix5.0监控Redis.assets\图片1.png)]

默认采集地址是{$REDIS.CONN.URI} 6379端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E9y01hig-1631701376130)(C:\Users\Test\Desktop\Zabbix5.0监控Redis.assets\图片2.png)]

从上面的提示可以看出,Template DB Redis的宏配置是默认Server端不设置密码的,如果Redis-server设置了密码,需要额外配置,否则会报如下错误:

Redis.ping[“{KaTex parse error:Expected ‘EOF’ , got ‘}’ at position 15:
REDIS.CONN.URI}”,”{REDIS.AUTH}”]

添加下面的宏就可以解决上述问题

{$REDIS.AUTH}=<password>

2.2 模板监控指标介绍

1.3.1 性能指标 Performance
# redis-cli info
instantaneous_ops_per_sec:0 #平均每秒处理请求总数
instantaneous_input_bytes:0.01  #输入带宽(单位字节)
instantaneous_output_bytes:0.00 #输出带宽(单位字节)
total_commands_processed:642719 #Redis服务处理命令的总数(字段的值是递增的)
1.3.2 内存指标 Memory
# redis-cli info
used_memory:831391096        #由 Redis分配器分配的内存总量(以字节为单位)
used_memory_rss:888795136    #从操作系统的角度,返回 Redis 已分配的内存总量( top 输出一致)
used_memory_peak:833008000   #Redis 的内存消耗峰值(以字节为单位)
used_memory_lua:37888        #Lua 引擎所使用的内存大小(以字节为单位)
mem_fragmentation_ratio:1.07 #内存碎片比率
1.3.3 基本活动指标 Basic activity

包括Client连接数和key指标。

# redis-cli info
connected_clients:2  #已连接客户端的数量(不包括通过从属服务器连接的客户端)
connected_slaves:0   #通过从属服务器连接的客户端
blocked_clients:0    #由于BLPOP,BRPOP or BRPOP,LPUSH而阻塞的客户端
evicted_keys:0       #由于最大内存限制被移除的key的数量
expired_keys:0       #因为过期而被自动删除的数据库键数量
keyspace_hits:1      #查找数据库键成功的次数
keyspace_misses:0    #查找数据库键失败的次数
keyspace_hit_ratio   #keyspace_hits/(keyspace_hits+keyspace_misses)
rejected_connections:0 # redis连接个数达到maxclients限制,拒绝新连接的个数
total_connections_received:6 #新创建连接个数
# CONFIG GET *
maxclients:4064      #最大可同时连接的客户端数量
1.3.4 持久性指标 Persistence

​ 持久化指标主要是体现RDB和AOF的工作状态。

# redis-cli info
rdb_changes_since_last_save:7358 #距离最近一次成功创建持久化文件之后,经过了多少秒
rdb_bgsave_in_progress:0 #一个标志值,记录了服务器是否正在创建 RDB 文件
rdb_last_save_time:1505285008 #最近一次成功创建 RDB 文件的 UNIX 时间戳
rdb_last_bgsave_status:ok #一个标志值,记录了最近一次创建 RDB 文件的结果是成功还是失败
rdb_last_bgsave_time_sec:10 #记录了最近一次创建 RDB 文件耗费的秒数
rdb_current_bgsave_time_sec:-1 #如果服务器正在创建 RDB 文件,那么这个值记录的就是当前的创建操作已经耗费的秒数
aof_enabled:1 #redis是否开启了aof
aof_rewrite_in_progress:0 #一个标志值,记录了服务器是否正在创建 AOF 文件
aof_rewrite_scheduled:0 #一个标志值,记录了在 RDB 文件创建完毕后,是否需要执行预约的 AOF 重写操作
aof_last_rewrite_time_sec:4 #最近一次创建 AOF 文件耗费的时长
aof_current_rewrite_time_sec:-1 #如果服务器正在创建 AOF文件,当前的创建操作已经耗费的秒数
aof_last_bgrewrite_status:ok #一个标志值,记录了最近一次创建 AOF 文件的结果是成功还是失败
aof_last_write_status:ok
2.3 zabbix监控触发器

Zabbix5.0监控Redis相关推荐

  1. Zabbix5.0监控系统安装详解

    Zabbix5.0监控系统安装详解 一.Zabbix介绍 二.Zbbix的LAMP环境安装 1.防火墙和SElinux配置 2.安装LAMP环境 三.安装Zabbix软件 四.Zabbix的Mysql ...

  2. Zabbix5.0监控Nginx

    Zabbix5.0监控Nginx 1.什么是Nginx? ​ Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器. ​ Nginx是一款轻量级的Web服务 ...

  3. CentOS 7.6 zabbix5.0监控实现微信告警

    zabbix5.0监控实现微信告警 一.配置zabbix客户端 1.环境说明 2.下载zabbix_agent 3.修改配置文件 4.启动zabbix_agentd 二.安装启动httpd 三.监控告 ...

  4. Zabbix5.0 监控mysql

    Zabbix5.0 监控mysql案列 文章目录 Zabbix5.0 监控mysql案列 1.mysql监控什么?监控方式? 2.准备数据库 3.准备取值脚本 4.自定义模板 5.解决zabbix中文 ...

  5. liunx基础—zabbix5.0监控系统安装部署

    常用的监控命令 1.磁盘监控 df -TH 查看磁盘大小,解决:删除比较大无用的文件 df -ih 查看inode:文件的字节数,拥有者id,组id,权限,改动时间,链接数,数据block的位置,解决 ...

  6. 设置中文字体解决Zabbix5.0监控图表乱码问题

    Zabbix5.0管理界面提供多语种支持,切换中文可以通过如下操作完成:User settings→Users →Language→Chinese(zh_CN)→Update. 中文界面中有一个小问题 ...

  7. linux 交换机硬件监控,zabbix5.0监控华为交换机,添加自定义监控项

    运维开发网 https://www.qedev.com 2020-12-11 13:20 出处:51CTO作者:wx5b51b2b2d2e98 参考网址https://www.zabbix.com/d ...

  8. zabbix5.0监控mysql服务

    1.登录mysql数据库,增加mysql监控用户和密码:user\password >grant all privileges on *.* to user@localhost identifi ...

  9. zabbix5.0监控esxi和vcenter

    zabbix_server.conf配置文件参数可用于调整虚拟机监控 StartVMwareCollectors - vmware 收集器实例的数量. 此值取决于要监控的 VMware 服务的数量.在 ...

最新文章

  1. IT界惊现文豪!华为领导及阿里P10遭吐槽
  2. 关于Java的Classpath详解
  3. 解决 fastjson 泛型报错 : java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to X
  4. Libra教程之:Libra protocol的逻辑数据模型
  5. 使用TFHelp解析Html
  6. 前端工程师需要懂的前端面试题(c s s方面)总结(二)
  7. Ubuntu 12.04下配置JDK7
  8. Redis学习总结(2)——Java使用Redis
  9. git 命令总结(转)
  10. SpringBoot缓存技术
  11. zk-snark 时延
  12. HIVE存储(五)HIVE文件的性能测试
  13. mathtype——小白安装
  14. node 压缩图片_6大免费图片压缩神器你值得拥有!
  15. 计算机单片机实训报告,单片机实训报告范文
  16. numpy 随机生成矩阵
  17. linux内核驱动使用hugepages,Linux系统下快速配置HugePages的完整步骤
  18. gradle报错this sometimes occurs after a network connection timeout.解决
  19. 微信开发者工具模拟器中图片无法显示
  20. idea如何实现修改代码即时生效

热门文章

  1. python编写一个名片_教你做一张能运行 Python 的名片,成本只要20元!
  2. 内网服务器外网连接SSH远程端口转发实战详解
  3. 开源组件,三步完成 SpringBoot 日志脱敏
  4. 微擎--登录页跳转修改
  5. python培训推广
  6. android之基于Zxing二维码扫描
  7. python包在哪个文件夹_python之包和文件目录规范
  8. [转]最封闭的开源系统,话说Android的八宗罪
  9. php 不恒等,Re: 弱问:Latex里不恒等号(三横一撇) - 精华区 - 数学科学学院(SMS)版 - 北大未名BBS...
  10. 超精典的菜名,大家要注意点