[Zabbix] zabbix监控redis数据库


本文总阅读量

1、编写定期收集redis信息脚本,并指定到对应目录

cat /usr/local/zabbix/script/redis_get_data.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
#配置文件路径
dbconfigfile=/data/redis/etc/redis.conf
#主机ip地址
dbhost=`cat ${dbconfigfile} |grep bind|awk '{print $2}'`
#redis启动端口
dbport=`cat ${dbconfigfile} |grep port|awk '{print $2}'`
#数据库命令路径
dbcmdpath=/data/redis/src
#数据库密码
dbpass=`cat ${dbconfigfile} |grep requirepass|awk '{print $2}'`
#指定生成的log路径
dblogpath=/tmp/redis.log
#如果有没密码,使用以下命令
#${dbcmdpath}/redis-cli -h ${dbhost} -a ${dbpass} -p ${dbport} 'info' > ${dblogpath}
#如果没有密码,使用以下命令
${dbcmdpath}/redis-cli -h ${dbhost} -p ${dbport} 'info' > ${dblogpath}

修改redis配置文件目录,生成的log目录,修改完成之后授权脚本执行权限:

1
chmod +x /usr/local/zabbix/script/redis_get_data.sh

2、将脚本添加到定时任务,每分钟执行一次

crontab -l

1
* * * * * sh /usr/local/zabbix/script/redis_get_data.sh

3、编写zabbix监控项文件,通过/usr/local/zabbix/script/redis_get_data.sh脚本生成的log文件,根据关键字过滤,获取对应监控的数值

vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/redis_monitor_parameter.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#数据库进程是否存在
UserParameter=redis_exist[*],ps -ef|grep redis-server|grep -v grep|wc -l
#客户端连接数,包括从库的连接
UserParameter=connected_clients[*],cat /tmp/redis.log |grep 'connected_clients' |cut -d':' -f2
#当前客户端最长输出列表
UserParameter=client_longest_output_list[*],cat /tmp/redis.log |grep client_longest_output_list |cut -d':' -f2
#当前客户端最大输入缓冲区
UserParameter=client_biggest_input_buf[*],cat /tmp/redis.log |grep client_biggest_input_buf |cut -d':' -f2
#阻塞会话数
UserParameter=blocked_clients[*],cat /tmp/redis.log |grep blocked_clients |cut -d':' -f2
#redis通过分配器分配的总内存
UserParameter=used_memory[*],cat /tmp/redis.log |grep used_memory |cut -d':' -f2|head -1
#操作系统通过top和ps命令查看到redis分配的内存
UserParameter=used_memory_rss[*],cat /tmp/redis.log |grep used_memory_rss |cut -d':' -f2|head -1
#redis消耗内存的峰值
UserParameter=used_memory_peak[*],cat /tmp/redis.log |grep used_memory_peak |cut -d':' -f2|head -1
#系统为管理内部数据架构造成的所有内存开销
UserParameter=used_memory_overhead[*],cat /tmp/redis.log |grep used_memory_overhead |cut -d':' -f2|head -1
#redis启动初始化消耗的内存
UserParameter=used_memory_startup[*],cat /tmp/redis.log |grep used_memory_startup |cut -d':' -f2|head -1
#数据集的大小(used_memory减去used_memory_overhead)
UserParameter=used_memory_dataset[*],cat /tmp/redis.log |grep used_memory_dataset |cut -d':' -f2|head -1
#数据集内存占净内存的百分比(used_memory_dataset/(used_memory-used_memory_startup))
UserParameter=used_memory_dataset_perc[*],cat /tmp/redis.log |grep used_memory_dataset_perc |cut -d':' -f2|head -1|cut -d'%' -f1
#lua引擎使用的内存
UserParameter=used_memory_lua[*],cat /tmp/redis.log |grep used_memory_lua |cut -d':' -f2|head -1
#系统配置文件配置的内存
UserParameter=maxmemory[*],cat /tmp/redis.log |grep maxmemory |cut -d':' -f2|head -1
#内存碎片率(需要重点关注)远大于1过高说明内存碎片化严重,原小于1过低说明有大量内存交换,建议增加内存。
UserParameter=mem_fragmentation_ratio[*],cat /tmp/redis.log |grep mem_fragmentation_ratio |cut -d':' -f2|head -1
#自上次转存以来redis发生的更改数
UserParameter=rdb_changes_since_last_save[*],cat /tmp/redis.log |grep rdb_changes_since_last_save |cut -d':' -f2|head -1
#服务端接受的总连接数
UserParameter=total_connections_received[*],cat /tmp/redis.log |grep total_connections_received |cut -d':' -f2|head -1
#服务端处理命令总数
UserParameter=total_commands_processed[*],cat /tmp/redis.log |grep total_commands_processed |cut -d':' -f2|head -1
#服务端每秒处理命令数
UserParameter=instantaneous_ops_per_sec[*],cat /tmp/redis.log |grep instantaneous_ops_per_sec |cut -d':' -f2|head -1
#网络读取的总流量
UserParameter=total_net_input_bytes[*],cat /tmp/redis.log |grep total_net_input_bytes |cut -d':' -f2|head -1
#网络写入的总流量
UserParameter=total_net_output_bytes[*],cat /tmp/redis.log |grep total_net_output_bytes |cut -d':' -f2|head -1
#每秒网络读的流量
UserParameter=instantaneous_input_kbps[*],cat /tmp/redis.log |grep instantaneous_input_kbps |cut -d':' -f2|head -1
#每秒网络写的流量
UserParameter=instantaneous_output_kbps[*],cat /tmp/redis.log |grep instantaneous_output_kbps |cut -d':' -f2|head -1
#因最大连接数达到上限,而被拒绝的连接数,maxclient默认值为10000
UserParameter=rejected_connections[*],cat /tmp/redis.log |grep rejected_connections |cut -d':' -f2|head -1
#键值到期总数
UserParameter=expired_keys[*],cat /tmp/redis.log |grep expired_keys |cut -d':' -f2|head -1
#因maxmemory限制,被驱逐的键值
UserParameter=evicted_keys[*],cat /tmp/redis.log |grep evicted_keys |cut -d':' -f2|head -1
#在主字典里面键值匹配成功的次数
UserParameter=keyspace_hits[*],cat /tmp/redis.log |grep keyspace_hits |cut -d':' -f2|head -1
#在主字典里面键值匹配失败的次数
UserParameter=keyspace_misses[*],cat /tmp/redis.log |grep keyspace_misses |cut -d':' -f2|head -1
#db0数据库键值的数量
UserParameter=db0_keys[*], cat /tmp/redis.log |grep db0 |cat /tmp/redis.log |grep db0|cut -d ',' -f1|cut -d '=' -f2
#db0数据库键值过期的数量
UserParameter=db0_keys_expired[*],cat /tmp/redis.log |cat /tmp/redis.log |grep db0|cut -d ',' -f2|cut -d '=' -f2

4、修改/usr/local/zabbix/etc/zabbix_agentd.conf配置文件,添加该行参数:

1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

添加完成之后,需要重启zabbix_agent客户端

1
/etc/init.d/zabbix_agentd restart

5、通过zabbix-web控制台,自定义一个模板,新建监控项、触发器、图形等内容,下面链接是我创建的比较简单的redis模板,上传到百度云,仅供参考,点击下载

目录
  1. 1. 1、编写定期收集redis信息脚本,并指定到对应目录
  2. 2. 2、将脚本添加到定时任务,每分钟执行一次
  3. 3. 3、编写zabbix监控项文件,通过/usr/local/zabbix/script/redis_get_data.sh脚本生成的log文件,根据关键字过滤,获取对应监控的数值
  4. 4. 4、修改/usr/local/zabbix/etc/zabbix_agentd.conf配置文件,添加该行参数:
  5. 5. 5、通过zabbix-web控制台,自定义一个模板,新建监控项、触发器、图形等内容,下面链接是我创建的比较简单的redis模板,上传到百度云,仅供参考,点击下载

Proudly powered by Hexo and Theme by Lap
本站访客数人次
© 2020 zeven0707's blog