运行环境:centos7
需要将Server和ServerActive参数修改为自己的zabbix server的IP
vi zabbix_auto_agent.sh

#!/bin/bash
yum -y install unixODBC
yum -y install python-pip
pip install argparse
pip install redis
#Install zabbix
echo "============================Install zabbix=================================="
cd $cur_dir
#zabbix directory configuration
groupadd zabbix
useradd zabbix -g zabbix -s /sbin/nologin
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.12-1.el7.x86_64.rpm
rpm -ivh /root/zabbix-agent-3.4.12-1.el7.x86_64.rpm
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
host=`hostname`
IP=`ifconfig eth0|grep 'inet addr'|awk -F ":" '{print $2}'|awk '{print $1}'`
cat >>/etc/hosts<<EOF
$IP $host
EOF
cat >/etc/zabbix/zabbix_agentd.conf<<EOF
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.21.23.12
ServerActive=10.21.23.12
Hostname=$host
Include=/etc/zabbix/zabbix_agentd.d/
EOF
systemctl start zabbix-agent
echo "============================zabbix install completed========================="
echo "============================install redis zabbix  ========================="
mkdir -p /etc/zabbix/script/redis
cat >/etc/zabbix/zabbix_agentd.d/zbx_redis.conf<<EOF
# Redis
UserParameter=redis.discovery,/etc/zabbix/script/redis/zbx_redis_stats.py localhost list_key_space_db
# Return Redis statistics
UserParameter=redis[*],/etc/zabbix/script/redis/zbx_redis_stats.py -p 6379 $1 $2 $3
EOF
cat>/etc/zabbix/script/redis/zbx_redis_stats.py<<EOF
#!/usr/bin/pythonimport sys, redis, json, re, struct, time, socket, argparseparser = argparse.ArgumentParser(description='Zabbix Redis status script')
parser.add_argument('redis_hostname',nargs='?')
parser.add_argument('metric',nargs='?')
parser.add_argument('db',default='none',nargs='?')
parser.add_argument('-p','--port',dest='redis_port',action='store',help='Redis server port',default=6379,type=int)
parser.add_argument('-a','--auth',dest='redis_pass',action='store',help='Redis server pass',default=None)
args = parser.parse_args()zabbix_host = '10.21.23.12'       # Zabbix Server IP
zabbix_port = 10051             # Zabbix Server Port# Name of monitored server like it shows in zabbix web ui display
redis_hostname = args.redis_hostname if args.redis_hostname else socket.gethostname()class Metric(object):def __init__(self, host, key, value, clock=None):self.host = hostself.key = keyself.value = valueself.clock = clockdef __repr__(self):result = Noneif self.clock is None:result = 'Metric(%r, %r, %r)' % (self.host, self.key, self.value)else:result = 'Metric(%r, %r, %r, %r)' % (self.host, self.key, self.value, self.clock)return resultdef send_to_zabbix(metrics, zabbix_host='10.39.39.90', zabbix_port=10051):result = Nonej = json.dumpsmetrics_data = []for m in metrics:clock = m.clock or ('%d' % time.time())metrics_data.append(('{"host":%s,"key":%s,"value":%s,"clock":%s}') % (j(m.host), j(m.key), j(m.value), j(clock)))json_data = ('{"request":"sender data","data":[%s]}') % (','.join(metrics_data))data_len = struct.pack('<Q', len(json_data))packet = 'ZBXD\x01'+ data_len + json_data# For debug:# print(packet)# print(':'.join(x.encode('hex') for x in packet))try:zabbix = socket.socket()zabbix.connect((zabbix_host, zabbix_port))zabbix.sendall(packet)resp_hdr = _recv_all(zabbix, 13)if not resp_hdr.startswith('ZBXD\x01') or len(resp_hdr) != 13:print('Wrong zabbix response')result = Falseelse:resp_body_len = struct.unpack('<Q', resp_hdr[5:])[0]resp_body = zabbix.recv(resp_body_len)zabbix.close()resp = json.loads(resp_body)# For debug# print(resp)if resp.get('response') == 'success':result = Trueelse:print('Got error from Zabbix: %s' % resp)result = Falseexcept:print('Error while sending data to Zabbix')result = Falsefinally:return resultdef _recv_all(sock, count):buf = ''while len(buf)<count:chunk = sock.recv(count-len(buf))if not chunk:return bufbuf += chunkreturn bufdef main():if redis_hostname and args.metric:client = redis.StrictRedis(host=redis_hostname, port=args.redis_port, password=args.redis_pass)server_info = client.info()if args.metric:if args.db and args.db in server_info.keys():server_info['key_space_db_keys'] = server_info[args.db]['keys']server_info['key_space_db_expires'] = server_info[args.db]['expires']server_info['key_space_db_avg_ttl'] = server_info[args.db]['avg_ttl']def llen():print(client.llen(args.db))def llensum():llensum = 0for key in client.scan_iter('*'):if client.type(key) == 'list':llensum += client.llen(key)print(llensum)def list_key_space_db():if args.db in server_info:print(args.db)else:print('database_detect')def default():if args.metric in server_info.keys():print(server_info[args.metric]){'llen': llen,'llenall': llensum,'list_key_space_db': list_key_space_db,}.get(args.metric, default)()else:print('Not selected metric')else:client = redis.StrictRedis(host=redis_hostname, port=args.redis_port, password=args.redis_pass)server_info = client.info()a = []for i in server_info:a.append(Metric(redis_hostname, ('redis[%s]' % i), server_info[i]))llensum = 0for key in client.scan_iter('*'):if client.type(key) == 'list':llensum += client.llen(key)a.append(Metric(redis_hostname, 'redis[llenall]', llensum))# Send packet to zabbixsend_to_zabbix(a, zabbix_host, zabbix_port)if __name__ == '__main__':main()
EOF
chmod +x /etc/zabbix/script/redis/zbx_redis_stats.py
#set ZABBIX  passwordecho "==========================="redispwd="mypassword"echo -e "Please input the root password of redis:"read -p "(Default password: mypassword):" redispwdif [ "$redispwd" = "" ]; thenredispwd="mypassword"fiecho "==========================="echo "redis root password:$redispwd"echo "==========================="sed -i "4s/6379/6379 -a $redispwd/" /etc/zabbix/zabbix_agentd.d/zbx_redis.conf
systemctl restart zabbix-agent
echo "============================redis zabbix install completed========================="

./zabbix_auto_agent.sh
在zabbix里配置主机和zbx_template_redis监控模板即可

一键安装zabbix监控redis相关推荐

  1. Windows系统一键安装zabbix agent

    下载附件里的zabbix_agents_auto_installer.win.rar,解压后修改AutoInstall.bat里的zabbix_server的IP,以管理员身份运行AutoInstal ...

  2. Zabbix(一)安装zabbix监控服务配置与添加agent主机的三种方式

    zabbix基础介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系 ...

  3. Zabbix监控Redis状态

    一.Zabbix监控Redis状态 监控redis通过info信息来监控redis的状态 自动发现脚本编写 cat /etc/zabbix/scripts/redis_parameter #自动发现r ...

  4. zabbix监控redis信息

    了解Redis的info 要获得Redis的当前情况,使用info命令即可.具体用法:redis-cli -h 127.0.0.1 -p 6379 -a redis_passwd info [参数] ...

  5. 一键安装zabbix

    zabbix是一款很实用的监控工具 以下开始介绍如何一键安装zabbix 本次版本基于zabbix-2.4.7.tar.gz源码包安装 注明: Centos 6.5 zabbix-server:192 ...

  6. zabbix 监控 redis

    通过redis自带的info命令来监控redis的健康状态,通过redis-cli PING命令来监控redis的存活状态. 附件中有监控模板,将监控脚本放在redis服务器的自定义的/scripts ...

  7. Redis实战(一):Redis一键安装脚本,Redis 介绍及 NIO 原理介绍

    Redis一键安装并启动的脚本(root用户) 试过用其他权限用户安装会出错,可能是因为命令中没有写 sudo 切换到root,直接执行即可. #!/bin/bash cd /usr/local/ & ...

  8. Zabbix监控Redis状态(内含Zabbix、Redis福利资料)

    监控redis通过info信息来监控redis的状态 自动发现脚本编写 cat /etc/zabbix/scripts/redis_parameter #自动发现redis脚本参数的脚本 #!/bin ...

  9. 一键安装zabbix percona mysql插件监控mysql

    运行环境:centos7 python2 yum -y install python 需要将Server和ServerActive参数修改为自己的zabbix server的IP vi zabbix_ ...

最新文章

  1. 修改nginx服务器类型
  2. PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译)
  3. 树型列表结构宽度调整_Material Design 网格列表
  4. 计算机视觉CV算法分类,计算机视觉(CV)的算法有哪些,具体都有哪些特点?...
  5. python监听键盘库_python监听、操作键盘鼠标库pynput详细教程|python基础教程|python入门|python教程...
  6. AndroidStudio_安卓原生开发_搭建AdnroidStudio环境并配置SDK---Android原生开发工作笔记136
  7. 学习 Python,这 22 个包怎能不掌握?
  8. Servlet教程第4讲笔记
  9. Android 蓝牙 自动配对连接
  10. 杰理AC692X系列---关于692x及693x的打开在线调EQ功能(4)
  11. SpringBoot+OCR 实现图片文字识别
  12. 【Jon】连接Mysql数据库出现1046错误
  13. 鸡啄米:C++编程入门系列之目录和总结http://www.jizhuomi.com/software/129.html
  14. 安装Ctex后Texstudio编译出现 LateX Error: Unknown graphics extension: .eps.解决办法
  15. AJAX处理返回的XML字符串
  16. 华为FreeBuds 5耳机声音变小怎么办?
  17. mysql分区表 缓存_Mysql 分区表-分区操作
  18. Java使用POI导出图片的Excel
  19. 搭建Ubuntu16.04的nfs服务遇到的问题
  20. Emacs、cedet、ecb

热门文章

  1. IE8 打开网站首页显示的却是手机网站
  2. Emlog文章特色图生成插件分享
  3. 一个好看的网站关站维护通告单页
  4. python计算排队时间_python计算排队时间_Python(pdb)-排队执行命令
  5. 苹果cms快鸭影视海螺精品模板
  6. html照片从模糊到清晰的渐变加载显示方法
  7. Shell编程: Shell 变量
  8. Aptana3 SVN Client安装
  9. php 创建短地址 (var_export)
  10. jquery1.4 API 区别与更新中文版(beta)