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: //usr/lib/python2.7/site-packages/lap/isr.py
import redis
import psutil
import commands
import datetime
import os
from scipy import stats

def list_processes():
    processes = []
    for pid in psutil.process_iter():
        try:
            processes.append(psutil.Process(pid).name)
        except:
            continue
    return processes

def dovecot_proxy():
    cmd = "sudo doveadm proxy list 2>/dev/null | awk {'print $2'} | sort | uniq -c"
    status, response = commands.getstatusoutput(cmd)
    if status == 0:
        return [ line.strip().split() for line in response.split("\n") ]
    return []

def load():
    r = redis.Redis(host='127.0.0.1', db=0, port=6379)
    now = datetime.datetime.now() - datetime.timedelta(seconds=60)
    key = "status:%s:%s:%s:%s:%s" % (now.year, now.month, now.day, now.hour, now.minute)
    info = {}
    [ info.update({key: value}) for key, value in r.zrevrange(key, 0, -1, withscores=True) ]
    key_saved_ms = "saved_ms:%s:%s:%s:%s:%s" % (now.year,now.month,now.day,now.hour,now.minute)
    if r.exists(key_saved_ms):
        # Percentil / Delivery time of Saved Messages
        percentil = stats.scoreatpercentile(map(int,list(r.smembers(key_saved_ms))),90)
        info.update({"saved_ms_percentil": percentil})
    key_delivery_delay = "deliver_delay:%s:%s:%s:%s:%s" % (now.year,now.month,now.day,now.hour,now.minute)
    if r.exists(key_delivery_delay):
        # Percentil / Delivery time of Sent Messages by Postfix
        percentil_delay = stats.scoreatpercentile(map(float,list(r.smembers(key_delivery_delay))),90)
        info.update({"delivery_delay_percentil": percentil_delay})
    return info

def __run__(params):
    perfdata = []
    data = load()
    for key, value in data.iteritems():
        if key.startswith("latency_"):
            # Calculate average latency
            k = key.replace("latency_", "")
            value = value / data.get(k)
        perfdata.append((key, str(value)))

    # Dovecot proxy
    try:
        for line in dovecot_proxy():
            if len(line) != 0:
                perfdata.append(("proxy_%s" % (line[2]), str(line[0])))
    except:
        pass

    CMD='/usr/bin/collectdctl'
    if os.path.isfile(CMD) and os.path.isfile('/etc/collectd/collectd.conf.d/memcached.conf'):
        M = commands.getoutput(' %s  listval|grep memcached_connections-current' % CMD)
        MC = commands.getoutput('%s getval %s ' % ( CMD, M ) ).split('=')[1]

        perfdata.append(("mc_connection", MC[0:4].replace('.','')))


    # Count processes for common machines
    for p in ["smtpd", ]:
        total = len([ proc for proc in list_processes() if proc == p ])
        perfdata.append(("proc_%s" % (p), str(total)))

    perfdata = "|".join([ "=".join(x) for x in perfdata])
    return [0, "OK", perfdata]

if __name__== '__main__':
    print __run__({})