HEX
Server: Apache
System: Linux vpshost0650.publiccloud.com.br 4.4.79-grsec-1.lc.x86_64 #1 SMP Wed Aug 2 14:18:21 -03 2017 x86_64
User: bandeirantesbomb3 (10068)
PHP: 8.0.7
Disabled: apache_child_terminate,dl,escapeshellarg,escapeshellcmd,exec,link,mail,openlog,passthru,pcntl_alarm,pcntl_exec,pcntl_fork,pcntl_get_last_error,pcntl_getpriority,pcntl_setpriority,pcntl_signal,pcntl_signal_dispatch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,php_check_syntax,php_strip_whitespace,popen,proc_close,proc_open,shell_exec,symlink,system
Upload Files
File: //lib/python2.7/site-packages/lap/memcached.py
import yaml
import socket

def format(number):
    for x in ["bytes", "KB", "MB", "GB"]:
        if number < 1024.0 and number > -1024.0:
            return "%3.2f %s" % (number, x)
        number /= 1024.0
    return "%3.1f%s" % (number, "TB")

def __run__(params):
    try:
        host = params.get("host", "localhost")
        port = int(params.get("port", "11211"))
        setget = params.get("setget", False)
        thresold = yaml.load(params.get("thresholds"))
    except Exception, e:
        return [2, "CRITICAL - Error: %s" % repr(e)]

    try:
        socket.setdefaulttimeout(5)
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.connect((host, port))
        sock.send("stats\n")
    except socket.error, e:
        return [2, "CRITICAL - Error: %s" % repr(e)]
    except Exception, e:
        return [2, "CRITICAL - Error: %s" % repr(e)]

    try:
        line = ""
        while True:
            line += sock.recv(4096)
            if line[-1] == "\n":
                sock.close()
                break
    except Exception, e:
        return [2, "CRITICAL - Error: %s" % repr(e)]

    if setget:
        try:
            socket.setdefaulttimeout(5)
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.connect((host, port))
            sock.send("set MEMCACHETEST 0 10 2\nOK\n")
            value = sock.send("get MEMCACHETEST\n")
        except:
            return [2, "CRITICAL - Error: Unable to set and get value on memcache" ]

    stats = {}
    [ stats.update({data.split()[1]: data.split()[2]}) for data in line.split("\r\n") if "STAT" in data ]

    used_memory = ((int(stats["bytes"]) * 100) / int(stats["limit_maxbytes"]))
    total_memory = format(float(stats["limit_maxbytes"]))

    if used_memory > thresold["critical"]:
        return [2, "CRITICAL - %d%% used of %s RAM" % (used_memory, total_memory)]
    elif used_memory > thresold["warning"]:
        return [1, "WARNING - %d%% used of %s RAM" % (used_memory, total_memory)]
    else:
        return [0, "OK - %d%% used of %s RAM" % (used_memory, total_memory), "used_memory=%d%%" % used_memory]