博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis监控方案
阅读量:6516 次
发布时间:2019-06-24

本文共 3763 字,大约阅读时间需要 12 分钟。

Redis介绍

Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表、哈希、集合和有序集合5种。支持在服务器端计算集合的并、交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。

Redis监控

首先判断客户端和服务器连接是否正常

# 客户端和服务器连接正常,返回PONGredis> PINGPONG# 客户端和服务器连接不正常(网络不正常或服务器未能正常运行),返回连接异常redis 127.0.0.1:6379> PINGCould not connect to Redis at 127.0.0.1:6379: Connection refused

Redis 监控最直接的方法就是使用系统提供的 info 命令,只需要执行下面一条命令,就能获得 Redis 系统的状态报告。

redis-cli info

结果会返回 Server、Clients、Memory、Persistence、Stats、Replication、CPU、Keyspace 8个部分。从info大返回结果中提取相关信息,就可以达到有效监控的目的。

先解释下各个参数含义

# Serverredis_version:2.8.8                     # Redis 的版本redis_git_sha1:00000000redis_git_dirty:0redis_build_id:bf5d1747be5380fredis_mode:standaloneos:Linux 2.6.32-220.7.1.el6.x86_64 x86_64arch_bits:64multiplexing_api:epollgcc_version:4.4.7                       #gcc版本process_id:49324                        # 当前 Redis 服务器进程idrun_id:bbd7b17efcf108fdde285d8987e50392f6a38f48tcp_port:6379uptime_in_seconds:1739082               # 运行时间(秒)uptime_in_days:20                       # 运行时间(天)hz:10lru_clock:1734729config_file:/home/s/apps/RedisMulti_video_so/conf/zzz.conf# Clientsconnected_clients:1                     #连接的客户端数量client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0# Memoryused_memory:821848                       #Redis分配的内存总量              used_memory_human:802.59Kused_memory_rss:85532672                 #Redis分配的内存总量(包括内存碎片) used_memory_peak:178987632used_memory_peak_human:170.70M           #Redis所用内存的高峰值used_memory_lua:33792mem_fragmentation_ratio:104.07           #内存碎片比率mem_allocator:tcmalloc-2.0# Persistenceloading:0rdb_changes_since_last_save:0            #上次保存数据库之后,执行命令的次数rdb_bgsave_in_progress:0                 #后台进行中的 save 操作的数量rdb_last_save_time:1410848505            #最后一次成功保存的时间点,以 UNIX 时间戳格式显示rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:0rdb_current_bgsave_time_sec:-1aof_enabled:0                            #redis是否开启了aofaof_rewrite_in_progress:0aof_rewrite_scheduled:0aof_last_rewrite_time_sec:-1aof_current_rewrite_time_sec:-1aof_last_bgrewrite_status:okaof_last_write_status:ok# Statstotal_connections_received:5705          #运行以来连接过的客户端的总数量total_commands_processed:204013          # 运行以来执行过的命令的总数量instantaneous_ops_per_sec:0rejected_connections:0sync_full:0sync_partial_ok:0sync_partial_err:0expired_keys:34401                       #运行以来过期的 key 的数量evicted_keys:0                           #运行以来删除过的key的数量keyspace_hits:2129                       #命中key 的次数keyspace_misses:3148                     #没命中key 的次数pubsub_channels:0                        #当前使用中的频道数量pubsub_patterns:0                        #当前使用中的模式数量latest_fork_usec:4391# Replicationrole:master                              #当前实例的角色master还是slaveconnected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0# CPUused_cpu_sys:1551.61used_cpu_user:1083.37used_cpu_sys_children:2.52used_cpu_user_children:16.79# Keyspacedb0:keys=3,expires=0,avg_ttl=0             #各个数据库的 key 的数量,以及带有生存期的 key 的数量

内存使用

如果 Redis 使用的内存超出了可用的物理内存大小,那么 Redis 很可能系统会被杀掉。针对这一点,你可以通过 info 命令对 used_memory 和 used_memory_peak 进行监控,为使用内存量设定阀值,并设定相应的报警机制。当然,报警只是手段,重要的是你得预先计划好,当内存使用量过大后,你应该做些什么,是清除一些没用的冷数据,还是把 Redis 迁移到更强大的机器上去。

持久化

如果因为你的机器或 Redis 本身的问题导致 Redis 崩溃了,那么你唯一的救命稻草可能就是 dump 出来的rdb文件了,所以,对 Redis dump 文件进行监控也是很重要的。可以通过对rdb_last_save_time 进行监控,了解最近一次 dump 数据操作的时间,还可以通过对rdb_changes_since_last_save进行监控来获得如果这时候出现故障,会丢失(即已改变)多少数据。

Keys

通过获取Keyspace中的结果得到各个数据库中key的数量

QPS

即每分钟执行的命令个数,即:(total_commands_processed2-total_commands_processed1)/span,为了实时得到QPS,可以设定脚本在后台运行,记录过去几分钟的total_commands_processed。在计算QPS时,利用过去的信息和当前的信息得出QPS的估计值。

参考

 

转载地址:http://eqafo.baihongyu.com/

你可能感兴趣的文章
@Autowired标签与 @Resource标签 的区别
查看>>
Java远程调试
查看>>
我的友情链接
查看>>
查看Linux系统的平均负载
查看>>
c#中的枚举
查看>>
Redis 学习(配置文件和常用命令注释)
查看>>
lvm磁盘在线扩容
查看>>
cacti监控机硬盘满了,于是mysql的表损坏了,通过查看cacti日志的报错信息,搜索到解决办法...
查看>>
START – MODERN MINIMALIST OPENCART 2.X 自适应主题模板 ABC-0573-02
查看>>
运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(三)
查看>>
mysql基础操作命令
查看>>
新建独立博客
查看>>
IT十八掌作业_java基础第九天_多线程、自动拆装箱
查看>>
使用交互式shell脚本实现对DNS服务的管理以及启动
查看>>
Mysql主从同步部署
查看>>
Asterisk Elastix2.3版咬线问题解决方法
查看>>
声明式限定.NET函数的调用用户
查看>>
光猫手机自动激活系统-开发指南-004- OLT添加vlan(ADD- VLAN)
查看>>
Linux运维 第四阶段 (三) MySQL的SQL语句
查看>>
php&获取当前字符串的编码格式
查看>>