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/capacity_locamail.py
#!/usr/bin/python
import commands

def __run__(params):
    try:
        director_capacity_critical = params.get("director_capacity_critical")
        director_capacity_warning = params.get("director_capacity_warning")
        node_capacity_critical = params.get("node_capacity_critical")
        node_capacity_warning = params.get("node_capacity_warning")

        status,output = commands.getstatusoutput("""ls /etc/default/locaweb/description | grep simpsons""")
        cluster = output
        status,output = commands.getstatusoutput("""sudo /usr/bin/doveadm director ring status | awk {'print $1'}""")
        n_director_servers = len(output.split("\n")) - 1
        max_director_connections_critical = n_director_servers * director_capacity_critical
        max_director_connections_warning = n_director_servers * director_capacity_warning
        status,output = commands.getstatusoutput("""sudo /usr/bin/doveadm director status | awk {'print $3'} | awk '{s+=$1} END {print s}'""")
        all_connections = int(output.split("\n")[-1])

        director_critical = False
        director_warning = False
        node_critical = False
        node_warning = False

        if all_connections > max_director_connections_critical:
            director_critical = True
        elif all_connections > max_director_connections_warning:
            director_warning = True

        perfdata = []
        perfdata.append(("connections", str(all_connections)))
        perfdata = "|".join([ "=".join(x) for x in perfdata])

        status,output = commands.getstatusoutput("""sudo /usr/bin/doveadm director status | awk {'print $3'}""")

        for node in output.split("\n"):
            if node.isdigit():
                node = int(node)
                if node > node_capacity_critical:
                    node_critical = True
                    break
                elif node > node_capacity_warning:
                    node_warning = True
                    break

        if director_critical:
            return [2,"CRITICAL: Cluster %s is over capacity with %d/%d users connected with %d directors" % (cluster,all_connections,max_director_connections_critical,n_director_servers),perfdata]
        elif node_critical:
            return [2,"CRITICAL: Cluster have nodes with more than %s connections" % node_capacity_critical,perfdata]
        elif director_warning:
            return [1,"WARNING: Cluster %s is with  %d/%d users connected with %d directors" % (cluster,all_connections,max_director_connections_critical,n_director_servers),perfdata]
        elif node_warning:
            return [1,"WARNING: Cluster have nodes with more than %s connections" % node_capacity_warning,perfdata]
        else:
            return [0,"OK: %s users connected in cluster %s" % (all_connections,cluster),perfdata]
    except Exception as e:
        return [2,"CRITICAL: %s" % e]