当前位置: 首页 > 工具软件 > RedisLive > 使用案例 >

实时监控redis -- redislive与redis踩坑配置

胡玉书
2023-12-01

先简要介绍一下 redislive

RedisLive是由python编写的并且开源的图形化监控工具,非常轻量级,核心服务部分只包含一个web服务和一个基于redis自带的info命令以及monitor命令的监控服务,界面上只有一个基于BootStrap的web界面,非常简洁明了。除此之外,它还支持多实例监控,切换方便,而且配置起来也非常容易。监控信息支持redis存储和持久化存储(sqlite)两种方式。

话不多说。Getting Started for guide

在我们安装redislive以及编译安装redis之后,遇到如下情况,面对这些情况进行逐一排查

  • 编译完成,移动到新的的redis目录,启动文件夹和配置文件夹分别位于/bin/etc

  • 当我们连接redis之后,为了避免无法提供对外访问的方式,打开redis.conf的protected-mode选项,并且关闭bind所监听的列表,具体操作见此

  • 在修改完redis.conf之后,我们发现启动redis-server的报错如下

逐一排查

  • 第一条报错是指需要设置单个用户打开的最大文件数,根据建议设置为10032 ulimit -n 10032

  • 修改后的最大文件数

  • 第二条报错端口占用,kill到对应的pid就行了

  • 第三条报错为 To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local

他的意思是让我们把kernel内核在2.6.38内核增加了Transparent Huge Pages (THP)特性写入/etc/rc.local。这样可以降低redisfork子进程的速度

当我们全部解决完redis-server启动的报错之后

启动本地redislive的监控脚本

猜测是不是redis-server没有启动,打开shell查看启动过程

查看redis.conf配置文件,官方给出的配置是当设置了bind监听的ip列表,采取ip白名单机制,其他ip一律无法访问

  • 注释掉之后正常启动redis

在回到redislive启动监控脚本观察,还是无法连接redis

  • 分析存在以下两个原因

    • redislive获取不到 redis的用户进程的内存设置used_meomory
    • 可能是python2.7本身的版本获取 不到更高版本的redis软件包,导致不支持连接redis
  • 面向原因1 ,启动redis-cli使用 info meomry

  • 面向原因2,查看pip下加载的软件包版本

  • 排除原因1,查看线上redis服务器版本为3.2.6,本地pip安装的redis3.0.7
    • 尝试pip install redis==3.2.6

Solution 建议排查完redis的内存调优设置之后,注意一下本地redislive所使用的pip版本,因为 redislive编写的python脚本官方是用python2.7.5写的,请配置时一定要注意

祝各位朋友快乐的编码!

 类似资料: