复述,监控zabbix自动化模板-节点状态,内存,连接数

  

首先介绍下监控复述那些信息:

  
 <代码>平复述:检验平
  复述,活着:查看检查端口是否活着
  复述,连接:查看连接数
  复述,blockedClients:正在等待阻塞客户端数量
  复述,connectionsUsage:复述的连接使用率
  复述,memoryUsage:复述,内存使用的量
  复述,memoryUsageRate:复述,内存使用率
  复述,evictedKeys:运行以来删除过的关键的数量
  复述,rejectedConnections:拒绝连接数
  复述,运维:复述的行动
  复述,hitRate:复述,命中率
   
  

复述,自动检测端口(壳)

  
 <代码> # !/bin/sh
  REDIS_SERVER_PIDS=" $ (p ef | egrep - v的grep | egrep第六| | vim |找到猫| | tac | | |头尾更少| | grep的redis-server | awk“{打印$ 2}”)”
  REDIS_PORTS=" "
  $ {REDIS_SERVER_PIDS}; pid的做
  端口=$ (sudo netstat -anlp | grep - w美元{pid} | awk的{打印4美元}| awk - f:‘{打印$ 2}| grep - v”[0 - 9] [0 - 9] [0 - 9] [0 - 9] [0 - 9]“| grep - v“^ $ |头1)
  REDIS_PORTS=" ${港口}$ {REDIS_PORTS} "
  完成
  端口=($ {REDIS_PORTS})
  
  函数node_port {
  长度=${#端口[@]}
  printf“{\ n”
  printf \ t \“\”数据”:["
  ((i=0; i<$长度;我+ +));
  printf“\ n \ t \ {”
  printf“\”{# REDIS_PORT} \ ": \ " ${端口[$ i]} \“}”
  如果(我lt[长度是1美元]]美元;
  printf”、“
  fi
  完成
  printf“\ n \ t] \ n”
  printf“} \ n”
  }
  node_por  
  

复述,监控zabbix自动化模板-节点状态,内存,连接数

  

复述,自动检测端口(python)

  
 <代码> # !/usr/bin/env python
  进口操作系统
  进口json
  # t=操作系统。popen (“”“netstat natp | awk - f:“redis-server/,,/听/{打印$ 2}’| awk{打印1美元}”" ")
  t=操作系统。popen (““ps辅助| egrep - v的grep | egrep猫vim第六| | | | tac | | |头尾更少| | grep的redis-server | awk - f”*:“‘{打印$ 2}| awk{打印1美元}”" ")
  港口=[]
  对港口t.readlines ():
  r=os.path.basename (port.strip ())
  港口+=[{{# REDIS_PORT}: r}]
  打印json.dumps({}“数据”:港口,sort_keys=True,缩进=4,分隔符=(',',':')) 
  

检测内存,节点状态,连接数,内存使用率,连接数使用率等等

  
 <代码> # !/usr/bin/env python
  # - * -编码:utf - 8 - *
  __author__=' chenmingle '
  
  导入系统
  导入子流程
  进口json
  
  试一试:
  进口复述,
  除了例外,e:
  打印的pip安装复述,
  sys.exit (1)
  
  类复述(对象):
  def __init__(自我、主机、端口、密码=None):
  自我。主机=主机
  自我。端口=端口
  自我。密码=密码
  如果self.password:
  自我。rds=复述。StrictRedis(主机=主机、端口=端口密码=self.password)
  其他:
  自我。rds=复述。StrictRedis(主机=主机、端口=港口)
  试一试:
  self.info=self.rds.info ()
  除了例外,e:
  self.info=没有
  
  def redis_connections(自我):
  试一试:
  返回self.info (“connected_clients”)
  除了例外,e:
  返回0
  
  def redis_connections_usage(自我):
  试一试:
  curr_connections=self.redis_connections ()
  max_clients=self.parse_config(数)
  率=(curr_connections)/浮动浮动(max_clients)
  返回“%。2 f“%(率* 100)
  除了例外,e:
  返回0
  
  def redis_used_memory(自我):
  试一试:
  返回self.info (“used_memory”)
  除了例外,e:
  返回0
  
  def redis_memory_usage(自我):
  试一试:
  used_memory=self.info (“used_memory”)
  max_memory=self.info (“maxmemory”)
  system_memory=self.info (“total_system_memory”)
  如果max_memory:
  率=(used_memory)/浮动浮动(max_memory)
  其他:
  率=(used_memory)/浮动浮动(system_memory)
  返回“%。2 f“%(率* 100)
  除了例外,e:
  返回0
  
  def redis_ping(自我):
  试一试:
  返回self.rds.ping ()
  除了例外,e:
  返回假
  
  def rejected_connections(自我):
  试一试:
  返回self.info (“rejected_connections”)
  除了例外,e:
  返回999
  
  def evicted_keys(自我):
  试一试:
  返回self.info (“evicted_keys”)
  除了例外,e:
  返回999
  
  def blocked_clients(自我):
  试一试:
  返回self.info (“blocked_clients”)
  除了例外,e:
  返回0
  
  def行动(自我):
  试一试:
  返回self.info (“instantaneous_ops_per_sec”)
  除了例外,e:
  返回0
  
  def hitRate(自我):
  试一试:
  错过=self.info (“keyspace_misses”)
  点击率=self.info (“keyspace_hits”)
  率=浮动(点击)/浮动(int(点击)+ int(错过))
  返回“%。2 f“%(率* 100)
  除了例外,e:
  返回0
  
  def parse_config(自我、类型):
  试一试:
  返回self.rds.config_get(类型)(类型)
  除了例外,e:
  回来没有
  
  def测试(自我):
  打印的复述,萍:% s % self.redis_ping ()
  打印的复述,活着:% s % check_alive(自我。主机,self.port)
  打印的复述,连接:% s % self.redis_connections ()
  打印的复述,blockedClients % s % self.blocked_clients ()
  打印的复述,connectionsUsage: % s % % % self.redis_connections_usage ()
  打印的复述,memoryUsage: % s % self.redis_used_memory ()
  打印的复述,memoryUsageRate: % s % % % self.redis_memory_usage ()
  打印的复述,evictedKeys: % s % self.evicted_keys ()
  打印的复述,rejectedConnections: % s % self.rejected_connections ()
  打印的复述,运维:% s % self.ops ()
  打印的复述,hitRate: % s % % % self.hitRate ()
  
  def check_alive(主机、端口):
  cmd=' nc - z % s % s比;2/dev/null祝辞,1 ' %(主机、端口)
  返回子进程。调用(cmd,壳牌=True)
  
  def解析(类型、主机、端口、密码):
  rds=复述(主机、端口、密码)
  如果type==傲印?
  打印rds.redis_connections ()
  elif类型==癱onnectionsUsage”:
  打印rds.redis_connections_usage ()
  elif类型==癰lockedClients”:
  打印rds.blocked_clients ()
  elif类型==皃ing”:
  打印rds.redis_ping ()
  elif类型==盎钭拧?
  打印check_alive(主机、端口)
  elif类型==癿emoryUsage”:
  打印rds.redis_used_memory ()
  elif类型==癿emoryUsageRate”:
  打印rds.redis_memory_usage ()
  elif类型==皉ejectedConnections”:
  打印rds.rejected_connections ()
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

复述,监控zabbix自动化模板-节点状态,内存,连接数