使用python监控memcached基本信息

使用python监控memcached基本信息




使用python监控memcached的基本信息,例如:connections、hitRate、freeMemory、memoryUsage、evictions等等。然后自定义zabbix keys值实现自定义监控模版!

首先安装需要的环境:

pip install python-memcached

话不多说,直接上脚本:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = ‘chenmingle‘

import sys
import subprocess
import json

try:
    import memcache
except Exception, e:
    print ‘pip install python-memcached‘
    sys.exit(1)

class Memcached(object):
    def __init__(self, host_list):
        self.mc = memcache.Client(host_list)
        try:
            self.stats = self.mc.get_stats()[0][1]
        except Exception, e:
            pass

    def get_curr_connections(self):
        """
        Get current connections for Memcached
        UserParameter: connections
        """
        try:
            return int(self.stats[‘curr_connections‘])
        except Exception, e:
            return 0

    def get_cache_hit_rate(self):
        """
        Get the hit rate for Memcached
        UserParameter: hitRate
        """
        try:
            rate = float(self.stats[‘get_hits‘]) / float(self.stats[‘cmd_get‘])
            return "%.2f" % (rate * 100)
        except Exception, e:
            return 0.0

    def get_free_memory(self):
        """
        Get the free memory in Memcached Byte
        UserParameter: freeMemory
        """
        try:
            free = int(self.stats[‘limit_maxbytes‘]) - int(self.stats[‘bytes‘])
            return free
        except Exception, e:
            return 0

    def get_memory_usage_rate(self):
        """
        Get the memory usage rate in Memcached
        UserParameter: memoryRate
        """
        try:
            rate = float(self.stats[‘bytes‘]) / float(self.stats[‘limit_maxbytes‘])
            return "%.2f" % (rate * 100)
        except Exception, e:
            return 0.0

    def get_evictions(self):
        """
        Get evictd items in Memcached one minute avg
        UserParameter: evictions
        """
        try:
            # minutes = int(self.stats[‘uptime‘]) / 60
            # return int(self.stats[‘evictions‘]) / int(minutes)
            return int(self.stats[‘evictions‘])
        except Exception, e:
            return 0

    def test(self):
        # print json.dumps(self.stats, indent=4)
        print ‘connections: %s‘ % self.get_curr_connections()
        print ‘hitRate: %s %%‘ % self.get_cache_hit_rate()
        print ‘freeMemory: %s Byte‘ % self.get_free_memory()
        print ‘memoryUsage: %s %%‘ % self.get_memory_usage_rate()
        print ‘evictions: %s‘ % self.get_evictions()
        print ‘alive: %s‘ % check_alive(host_list)

def check_alive(host_list):
    host = host_list.split(‘:‘)[0]
    port = host_list.split(‘:‘)[1]
    cmd = ‘nc -z %s %s > /dev/null 2>&1‘ % (host, port)
    return subprocess.call(cmd, shell=True)

def parse(type, host_list):
    mc = Memcached([host_list])
    if type == ‘connections‘:
        print mc.get_curr_connections()
    elif type == ‘hitRate‘:
        print mc.get_cache_hit_rate()
    elif type == ‘freeMemory‘:
        print mc.get_free_memory()
    elif type == ‘memoryUsage‘:
        print mc.get_memory_usage_rate()
    elif type == ‘evictions‘:
        print mc.get_evictions()
    elif type == ‘alive‘:
        print check_alive(host_list)
    else:
        mc.test()

if __name__ == ‘__main__‘:
    try:
        host_list = sys.argv[1]
        type = sys.argv[2]
    except Exception, e:
        print "Usage: python %s 127.0.0.1:11211 connections" % sys.argv[0]
        sys.exit(1)
    parse(type, host_list)

例行测试一下脚本的效果:

[[email protected] zabbix_agentd.d]# /usr/local/bin/python /home/python/check_memcached.py 10.0.0.90:11211 test
connections: 1593
hitRate: 98.15 %
freeMemory: 849551027 Byte
memoryUsage: 80.22 %
evictions: 7477932
alive: 0

现在已经完成一个简单的监控memcached基本信息的脚本了,接下来为了以后方便查看做个自定义监控项加入到zabbix上去。

  • 首先定义监控项配置:
cd /etc/zabbix/zabbix_agentd.d
cat Memcached.conf
# Memcached
UserParameter=memcached.stats[*],/usr/local/bin/python /home/python/check_memcached.py 10.0.0.90:11211 $1
  • 在zabbix上配置自定义模版自定义监控项:





这样就完成一个简单的监控memcached的自定义模版,如果觉得这文章不错的,请在本人Github上点个star,感谢!!

原文地址:http://blog.51cto.com/legehappy/2145967

时间: 2024-11-05 22:44:59

使用python监控memcached基本信息的相关文章

Nagios监控Memcached服务

说到Memcached服务,其实作为运维人员用的还是很多的: 1.在做LB的时候,为了保证同一台机器的请求的session信息防止丢失,我们用Memcached对session做分布式存储. 2.做mysql缓存的时候,我们常常吧mysql查询的结果缓存到Memcached中,这样能够较少php程序与mysql的交互,也能大大减轻数据库的压力. 从以上来看,Memcached其实也是蛮重要的,那么我们更有必要对其进行时刻的监控,接下来引入正题 Nagios监控Memcached服务是否正常运行.

【Python运维脚本】Python监控内存(swap)的使用率

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected] #Python监控内存(swap)的使用率 ''' 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 ''' #!/usr/bin/python import os def getAllit

python监控linux性能以及进程消耗的性能

ExecutorService 建立多线程线程池的步骤: 线程池的作用: 线程池作用就是限制系统中执行线程的数量. 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量,其他线程排队等候.一个任务执行完毕,再从队列的中取最前面的任务开始执行.若队列中没有等待进程,线程池的这一资源处于等待.当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了:否则进入等待队列. 为什么要用线程池: 1.减少了创建和

Python 监控nginx服务是否正常

Python 监控nginx服务是否正常 #!/usr/bin/env python import os, sys, time from time import strftime while True: try: ret = os.popen('ps -C nginx -o pid,cmd').readlines() if len(ret) <2: os.system("service nginx start") sys.exit(0) except Exception,ex:

【Python运维脚本】Python监控磁盘

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v3.3 #Author: [email protected] #Python监控磁盘 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/python import

用python监控您的window服务

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://world77.blog.51cto.com/414605/782935 最近比较烦,研发给的pc服务版本在虚拟机上已经开始给客户使用了,服务老是莫名的死翘翘,客户不停的电话给我,搞的我心情很差,于是在一个下午,静下心来,用python写了个简单的监控进程的脚本,当发现进程消失的时候,立即调用服务,开启服务... 脚本的工作原理是这样的:脚本读取配置文件,读取预先配置好的调用系统

python 操作Memcached

启动Memcached memcached -d -m 10 -u root -l 10.211.55.4 -p 12000 -c 256 -P /tmp/memcached.pid 参数说明: -d 是启动一个守护进程 -m 是分配给Memcache使用的内存数量,单位是MB -u 是运行Memcache的用户 -l 是监听的服务器IP地址 -p 是设置Memcache监听的端口,最好是1024以上的端口 -c 选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定 -P 是设

python操作memcached以及分布式

memcached 是以 LiveJournal 旗下 Danga Interactive 公司的 Brad Fitzpatric 为首开发的一款软件.现在已成为 mixi.Facebook.LiveJournal 等众多服务中提高 Web 应用扩展性的重要因素. 许多 Web 应用都将数据保存到 RDBMS 中,应用服务器从中读取数据并在浏览器中显示.但随着数据量的增大.访问的集中,就会出现 RDBMS 的负担加重.数据库响应恶化.网站显示延迟等重大影响.这时就该 memcached 大显身手

【Python运维脚本】Python监控网卡流量

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected]126.com #Python监控网卡流量 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/pytho