利用ganglia监控redis的最新解决方法
前言
Ganglia主要用来监控系统性能的软件,通过曲线很容易见到每个节点的工作状态,对合理调整,分配系统资源,提高系统整体性能起到重要作用,支持浏览器方式访问,但不能监控节点硬件技术指标。Ganglia是分布式的监控系统。
Redis现在在业务中应用已经很广泛了,但是如何监控redis,实时的观察redis的性能,在搜索引擎搜索“ganglia监控redis”,发现都是13年的老文章,都是说要到https://github.com/ganglia/gmond_python_modules这个第三方插件库下载redis监控模块
解决方法
但是我发现gmond_python_modules
这个repo下面已经没有redis模块了,于是查看git log
,发现redis模块已经集成到ganglia源码包里了
于是下载了源码包,搜索之后发现redis模块位于gmond/python_modules/db/redis.py
,配置文件在gmond/python_modules/conf.d/redis.pyconf.disabled
。
修改配置文件里的host和port两个参数为要监控redis的ip和端口,然后将两个文件复制到对应的目录下。(通常redis.pyconf
复制到ganglia安装目录/etc/conf.d/
下,redis.py复制到ganglia安装目录/lib64/ganglia/python_modules
)
重启gmond,可以看到有redis的图出来了,但是数据却都是空的。
于是停掉gmond,使用gmond -f -d 1
启用调试模式,发现redis.py报错
[PYTHON] Can't call the metric handler function for [connected_clients] in the python module [redis]. Traceback (most recent call last): File “/opt/gmond/lib64/ganglia/python_modules/redis.py”, line 21, in metric_handler n, v = line.split(“:”) ValueError: need more than 1 value to unpack
查看上下文代码
for line in info.splitlines()[1:]: if "" == line: continue n, v = line.split(":")
大概意思是把redis info
命令输出的每一个非空行用:分割,但是我安装的redis版本是2.8+,info命令会输出类似#Server这样的注释,这样就导致按:分割失败,所以python报错,gmond取不到值。
所以解决方案也很简单,把上面那段代码修改成如下即可,也就是跳过空行和以#开头的行
for line in info.splitlines()[1:]: if "" == line or line[0] == '#': continue n, v = line.split(":")
再重启gmond,过一会就可以在ganglia看到数据了
==========================================
看了下ganglia在github上的代码,发现最新代码已经把这个bug修复了,只不过还没有release
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
相关推荐
-
redis 队列操作的例子(php)
入队操作 复制代码 代码如下: <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); while(True){ try{ $value = 'value_'.date('Y-m-d H:i:s'); $redis->LPUSH('key1',$value); sleep(rand()%3); echo $value."\n"; }catch(Exception $e){ echo $e->g
-
Redis中5种数据结构的使用场景介绍
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 redis 中一共有5种数据结构,那每种数据结构的使用场景都是什么呢? String--字符串 Hash--字典 List--列表 Set--集合 Sorted Set--有序集合 下面我们就来简单说明一下它们各自的使用场景: 1. String--字符串 String 数据结构是简单的 key-
-
超强、超详细Redis数据库入门教程
[本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动redis 6.使用redis客户端 7.redis数据结构 – 简介 8.redis数据结构 – strings 9.redis数据结构 – lists 10.redis数据结构 – 集合 11.redis数据结构 – 有序集合 12.redis数据结构 – 哈希 13.聊聊redis持久化 – 两种方式 14.聊聊redis持久化 – RDB 15.聊聊redis持
-
Redis操作命令总结
一.key pattern 查询相应的key (1)redis允许模糊查询key 有3个通配符 *.?.[] (2)randomkey:返回随机key (3)type key:返回key存储的类型 (4)exists key:判断某个key是否存在 (5)del key:删除key (6)rename key newkey:改名 (7)renamenx key newkey:如果newkey不存在则修改成功 (8)move key 1:将key移动到1数据库 (9)ttl key:查询key的
-
Python读写Redis数据库操作示例
使用Python如何操作Redis呢?下面用实例来说明用Python读写Redis数据库.比如,我们插入一条数据,如下: 复制代码 代码如下: import redis class Database: def __init__(self): self.host = 'localhost' self.port = 6379 def write(self,website,city,year,month,day,deal_number):
-
redis中使用redis-dump导出、导入、还原数据实例
redis的备份和还原,借助了第三方的工具,redis-dump 1.安装redis-dump 复制代码 代码如下: [root@localhost tank]# yum install ruby rubygems ruby-devel //安装rubygems 以及相关包 [root@localhost tank]# gem sources -a http://ruby.taobao.org/ //源,加入淘宝,外面的源不能访问 http://ruby.taobao.org/ ad
-
redis常用命令、常见错误、配置技巧等分享
1. redis查看当前所有的key 复制代码 代码如下: KEYS * 2. 查看当前redis的配置信息 复制代码 代码如下: CONFIG GET * 3. MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis
-
利用ganglia监控redis的最新解决方法
前言 Ganglia主要用来监控系统性能的软件,通过曲线很容易见到每个节点的工作状态,对合理调整,分配系统资源,提高系统整体性能起到重要作用,支持浏览器方式访问,但不能监控节点硬件技术指标.Ganglia是分布式的监控系统. Redis现在在业务中应用已经很广泛了,但是如何监控redis,实时的观察redis的性能,在搜索引擎搜索"ganglia监控redis",发现都是13年的老文章,都是说要到https://github.com/ganglia/gmond_python_modul
-
PHP利用header跳转失效的解决方法
本文实例讲述了PHP利用header跳转失效的解决方法,分享给大家供大家参考.具体方法分析如下: 一.问题: 今天header(\"Location: $url\"),以往跳转总是可以的,今天却不动,只是输出结果,以往自己要确认检查,$url的值获取的是否正确,所以在前面加了echo $url:来调试用,结果就导致了header函数的无效. 二.解决方法: 在PHP中用header("location:test.php")进行跳转要注意以下几点: 1.locatio
-
docker django无法访问redis容器的解决方法
docker-compose.yal文件中: redis: image: redis container_name: xdemo.redis ports: - 6379:6379 restart: always django setting.py中配置redis: CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379', "OPTIONS&qu
-
RedisDesktopManager无法远程连接Redis的完美解决方法
Linux环境:ubuntu16.04 Redis服务端版本:3.2.6 Redis客户端下载链接:https://redisdesktop.com/download 省略Linux系统安装Redis教程,网上安装教程很多:建议用tar.gz包安装 Redis官网tar.gz下载地址:wget http://xiazai.jb51.net/201803/yuanma/redis-3.2.6(jb51.net).rar 下载RedisDesktopManager客户端,输入服务器IP地址,端口(缺
-
php运行报错Call to undefined function curl_init()的最新解决方法
之前网上的解决方法如下: 1.在php.ini中开启curl扩展 2.将php目录下的libeay32.dll.ssleay32.dll.php5ts.dll拷贝到c:\windows\system32里面 (还有一种方法是说在httpd.conf中加上动态链接库,如:LoadFile d:/php/libeay32.dll 和 LoadFile d:/php/ssleay32.dll,但我试过了,同样不起作用) 3.重启apache,OK! 不知道这些人是不是真的试过而且成功了,就把这些所谓的
-
解决最近Hotmail无法登陆,hotmail不能登陆的最新解决方法总结
这两天很多人都不能登录,无法登录hotmail.使到很多人有意见.现提供登录方法. 大家可以用下面的hotmail的秘密通道登录hotmail,这样就可以解决我们不能登录hotmail的问题了 一.无法登录Hotmail的"秘密通道": http://mobile.msn.com/hm/folder.aspx [mobile.msn.com] 这个是微软为手机用户定制的手机登陆PDA网页,界面简单,速度很快.可以解决燃眉之急. 二.无法登录MSNSpace的"秘密通道&quo
-
JavaScript利用append添加元素报错的解决方法
1.错误描述 在IE浏览器上: Uncaught HierarchyRequestError:Failed to excute 'appendChild' on 'Node':The new child element contains the parent. 在谷歌浏览器上: SCRIPT5022:DOM Exception:HIERARCHY_REQUEST_ERR(3) error 2.错误原因 在append()中包含append() 如: append(append("String&q
-
利用nginx+lua+redis实现反向代理方法教程
前言 最近因为工作需要,要进行IVR的重构, 我们现在系统接了三家IVR服务商, N个业务, 由于IVR这玩意一般只能外网回调, 而开发环境又不允许外网随便访问, 着实烦人. 所有我们打算重构一把, 封装多家IVR, 对业务透明, 同时回调可以针对多家IVR服务商的不同callid直接转发到当时请求的同学的 开发域名去. 而不同的IVR服务商的callid参数是不同的,有的是在url里面(call_id), 有的则是直接post的json数据(callid), 所以太扯了. 直接用lua处理下,
-
redis缓存穿透解决方法
缓存技术可以用来减轻数据库的压力,提升访问效率.目前在企业项目中对缓存也是越来越重视.但是缓存不是说随随便便加入项目就可以了.将缓存整合到项目中,这才是第一步.而缓存带来的穿透问题,进而导致的雪蹦问题都是我们迫切需要解决的问题.本篇文章将我平时项目中的解决方案分享给大家,以供参考. 一.缓存穿透的原理 缓存的正常使用如图: 如图所示,缓存的使用流程: 1.先从缓存中取数据,如果能取到,则直接返回数据给用户.这样不用访问数据库,减轻数据库的压力. 2.如果缓存中没有数据,就会访问数据库. 这里面就
-
利用yum安装Redis的方法详解
介绍 Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set –有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新
随机推荐
- XML指南——察看 XML 文件
- jquery.mobile 共同布局遇到的问题小结
- Javascript Throttle & Debounce应用介绍
- python学习笔记:字典的使用示例详解
- Java CGLib动态代理机制(全面解析)
- 设计模式开发中的备忘录模式在iOS应用开发中的运用实例
- python中numpy包使用教程之数组和相关操作详解
- 浅谈javascript中new操作符的原理
- Linux系统下PHP-FPM的安装和配置教程
- javascript URL编码和解码使用说明
- javascript轮播图算法
- C#监控文件夹并自动给图片文件打水印的方法
- SQL Server根据分区表名查找所在的文件及文件组实现脚本
- jQuery插件zTree实现清空选中第一个节点所有子节点的方法
- jQuery+HTML5美女瀑布流布局实现方法
- jQuery 弹出层插件(推荐)
- ASP小贴士/ASP Tips javascript tips可以当桌面
- IOS 出现问题POST网络请求状态code:500的解决方法
- vue.js $refs和$emit 父子组件交互的方法
- Android中的Bmob移动后端云服务器功能