Lepus监控redis

说明

前面文章已经讲解过lepus的搭建,并安装了redis-py,确认方法:

root@xx:~/lepus_v3.7/python# python test_driver_redis.py
Redis python drivier is ok!

安装篇请参考:http://blog.csdn.net/wlzjsj/article/details/76216098


配置redis监控

登陆天兔系统,进入配置中心,选择redis选项,看图示步骤:


http://blog.csdn.net/wlzjsj/article/details/76549055




配置都比较简单,这里就不说了;


监控redis

刚开始配置时候发现配置后,redis健康状态健康完全是空白,没有任何显示。经过询问和查找日志,原来是需要手动执行 lepus/check_redis.py才可以;

手动执行:

python check_redis.py
2017-08-01 17:10:23 [WARNING] check redis 192.xx.xx.xx:6379 : 'int' object has no attribute '__getitem__'
2017-08-01 17:10:23 [WARNING] check redis 192.xx.x.xxx:6379 : 'int' object has no attribute '__getitem__'
2017-08-01 17:10:23 [INFO] check redis controller finished.

redis健康状态显示有数据了,但是全部是失败状态。

理论上配置redis后就已经结束了,经查发现源码有点bug

http://blog.csdn.net/wlzjsj/article/details/76549055

问题原因

根据问题原因可以大概得出是字段的属性报错了。查源码,调试

     # replication
        if role == 'slave':
           #print info
           master_host = info['master_host']
           master_port = info['master_port']
           master_link_status = info['master_link_status']
           master_last_io_seconds_ago = info['master_last_io_seconds_ago']
           master_sync_in_progress = info['master_sync_in_progress']
           #slave_repl_offset = info['slave_repl_offset']
           slave_priority = check_value(info,'slave_priority')
           slave_read_only = check_value(info,'slave_read_only')
           master_server_id = func.mysql_query("SELECT id FROM db_servers_redis WHERE host='%s' AND port='%s' limit 1;" %(master_host,master_port))
           master_server_id = master_server_id[0][0]
           role_new='s'
        else:
           master_host = '-1'
           master_port = '-1'
           master_link_status= '-1'
           master_last_io_seconds_ago = '-1'
           master_sync_in_progress = '-1'
           #slave_repl_offset = '---'
           slave_priority = '-1'
           slave_read_only = '-1'
           master_server_id = '-1'
           role_new='m'

        #add redis_status

源码的第122行,master_port是int类型,这里传入varchar类型,导致报错,修正:

           master_server_id = func.mysql_query("SELECT id FROM db_servers_redis WHERE host='%s' AND port='%d' limit 1;" %(master_host,master_port))


再次运行运行正常。

同时这里还有一个坑是:
源码这边做了role的判断,如果是slave的情况,必须配置master的redis监控,否则会一直报错

http://blog.csdn.net/wlzjsj/article/details/76549055

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值