猎鹰监控复述,

  
 <代码>猎鹰结合脚本redis-monitor.py进行监控复述
  * * * * * python/usr/local/openfalcon - 0.2/mymon/redis-monitor。py和比;/usr/local/openfalcon - 0.2/mymon/redis-monitor.log
  猫redis-monitor.py
  #注意修改配置项:_redis_cli, def __init__ insts_list、ip
  # !/bin/env python
  # - * -编码:utf - 8 - *
  进口json
  导入的时间
  进口套接字
  进口操作系统
  进口再保险
  导入系统
  导入命令
  进口urllib2 base64
  类RedisStats:
  #如果你是自己编译部署到复述,请将下面的值替换为你到redis-cli路径
  _redis_cli=/usr/地方/bin/redis-cli的
  _stat_regex=re.compile (ur (\ w +): ([0 - 9] + \。? [0 - 9] *) \ r ')
  def __init__(自我,端口=' 6379 ',passwd=None,主机=127.0.0.1):
  自我。_cmd=' % s - h % s - p % s信息“%(自我。_redis_cli、主机端口)
  如果密码不是在[",没有一个):
  自我。_cmd=' % s - h % s - p % s——% s信息“%(自我。_redis_cli、主机、端口、密码)
  def统计(自我):
  “返回包含复述dict类型统计”
  信息=commands.getoutput (self._cmd)
  #打印信息
  返回dict (self._stat_regex.findall(信息))
  
  def main ():
  ip=' 192.168.1.1 '
  # ip=socket.gethostname ()
  时间戳=int (time.time ())
  一步=60
  # inst_list中保存了复述,配置文件列表,程序将从这些配置中读取端口和密码,建议使用动态发现的方法获得,如:
  # inst_list=[我的命令。getoutput (/etc/- name“找到”复述*。conf”) .split (“\ n”)]
  insts_list=[/etc/复述,复述。参看']
  p=[]
  
  monit_keys=[
  (“connected_clients”,“规”),
  (“blocked_clients”,“规”),
  (“used_memory”,“规”),
  (“used_memory_rss”,“规”),
  (“mem_fragmentation_ratio”,“规”),
  (“total_commands_processed”、“计数器”),
  (“rejected_connections”、“计数器”),
  (“expired_keys”、“计数器”),
  (“evicted_keys”、“计数器”),
  (“keyspace_hits”、“计数器”),
  (“keyspace_misses”、“计数器”),
  (“keyspace_hit_ratio”,“规”),
  ]
  
  本月在insts_list:
  端口=命令。getoutput (“sed - n ' s/* ^港口\ ([0 - 9]\ {4 5 \}\)/\ \ 1/p ' % s“%本月)
  passwd=命令。getoutput (“sed - n ' s/^ requirepass * \ [^] * \/\ \ 1/p ' % s“%本月)
  度量=案词觥?
  端点=ip
  标签='端口=% s ' %端口
  试一试:
  康涅狄格州=RedisStats(端口、密码)
  统计=conn.stats ()
  除了例外,e:
  继续
  关键,vtype monit_keys:
  #一些老版本的复述中信息输出的信息很少,如果缺少一些我们需要采集的关键就跳过
  如果关键不在stats.keys ():
  继续
  #计算命中率
  如果键==発eyspace_hit_ratio”:
  试一试:
  值=https://www.yisu.com/zixun/float(统计[' keyspace_hits '])/(int(统计[' keyspace_hits ']) + int(统计[' keyspace_misses ']))
  除了ZeroDivisionError:
  值=https://www.yisu.com/zixun/0
  #碎片率是浮点数
  elif关键==癿em_fragmentation_ratio”:
  值=https://www.yisu.com/zixun/float(统计(例子))
  其他:
  #其他的都采集成计数器,int
  试一试:
  值=int(统计(例子))
  除了:
  继续
  
  i={“指标”:“% s。% s ' %(指标、关键),
  “端点”:端点,
  “时间戳”:时间戳,
  “步骤”:一步,
  “价值”:值,
  的相等物:vtype,
  标签:标签
  }
  p.append(我)
  
  打印json。转储(p, sort_keys=True,缩进=4)
  方法=胺⒉肌?
  处理程序=urllib2.HTTPHandler ()
  刀=urllib2.build_opener(处理器)
  url=http://127.0.0.1:1998/v1/推动的=urllib2请求。请求(url, data=https://www.yisu.com/zixun/json.dumps (p))
  request.add_header(“内容类型”、“application/json”)
  请求。get_method=λ:方法
  试一试:
  连接=opener.open(请求)
  除了urllib2.HTTPError, e:
  连接=e
  #检查。以适当的HTTP代码替换。
  如果连接。代码==200:
  打印connection.read ()
  其他:
  打印“{“犯错”:1、“味精”:“% s”} ' %连接
  if __name__==癬_main__”:
  proc=命令。getoutput (“p ef | grep % s | grep - v grep | wc - l ' % os.path.basename (sys.argv [0]))
  sys.stdout.flush ()
  如果int (proc) & lt;5:
  main()  
  

复述,进程监控
猎鹰监控复述

  

复述状态监控

猎鹰监控复述,