MSV FM

[email protected]: ~ $
Path : /lib/fm-agent/plugins/
File Upload :
Current < : //lib/fm-agent/plugins/phpfpm.py

import agent_util
import logging
from agent_util import float
try:
    # Python 2.x
    import httplib
except:
    import http.client as httplib
try:
    # Python 2.x
    import urlparse
except:
    import urllib.parse as urlpars

logger = logging.getLogger(__name__)


def execute_query(query):
    ret, output = agent_util.execute_command(query)
    return str(output)


class PHPFPMPlugin(agent_util.Plugin):
    textkey = "phpfpm"
    label = "PHP-FPM"

    @classmethod
    def get_metadata(self, config):

        # Installation and config checks
        installed = agent_util.which("php5-fpm") or agent_util.which("php-fpm")
        configured = "console_url" in config

        # if config is present, trust it and proceed
        if configured:
            self.log.info("console_url found in config. Marking plugin as supported")
            status = agent_util.SUPPORTED
            msg = None

        # PHP-FPM is installed, but not configured, ask the user for more config assistance
        elif installed and not configured:
            self.log.info("PHP FPM binary found, but console_url is not in config")
            status = agent_util.MISCONFIGURED
            msg = "console_url is not in config"
            return {}

        # PHP-FPM does not appear to be installed and no config provided, disqualify the plugin
        else:
            self.log.info("No console_url provided and php-fpm binary not found")
            status = agent_util.UNSUPPORTED
            msg = "php-fpm binary not found"
            return {}

        # Generate options based on the number of entries in the config file.
        options = config.get('console_url').split(',')

        self.log.info('PHP-FPM is supported. Generating Metadata.')

        # This is the metadata for the plugin.

        data = {
            "active processes": {
                "label": "Active processes",
                "options": options,
                "status": status,
                "error_message": msg
            },
            "idle processes": {
                "label": "Idle processes",
                "options": options,
                "status": status,
                "error_message": msg
            },
            "listen queue": {
                "label": "Listen queue",
                "options": options,
                "status": status,
                "error_message": msg
            },
            "listen queue len": {
                "label": "Listen queue len",
                "options": options,
                "status": status,
                "error_message": msg
            },
            "max active processes": {
                "label": "Max active processes",
                "options": options,
                "status": status,
                "error_message": msg
            },
            "max children reached": {
                "label": "Children reached",
                "options": options,
                "status": status,
                "error_message": msg
            },
            "max listen queue": {
                "label": "Max listen queue",
                "options": options,
                "status": status,
                "error_message": msg
            },
            "slow requests": {
                "label": "Slow Requests",
                "options": options,
                "status": status,
                "error_message": msg
            },
            "start since": {
                "label": "Start since",
                "options": options,
                "status": status,
                "error_message": msg
            },
            "start time": {
                "label": "Start time",
                "options": options,
                "status": status,
                "error_message": msg
            },
            "total processes": {
                "label": "Total Processes",
                "options": options,
                "status": status,
                "error_message": msg
            },
        }

        return data

    def check(self, textkey, data, config):
        """
        Make a GET request to the console url and parse the output.
        """
        if data.startswith('http'):
            url = urlparse.urlparse(data + '?json&full')
            if data.startswith('https:'):
                connection = httplib.HTTPSConnection(
                    host=url.netloc, timeout=25
                )
            else:
                connection = httplib.HTTPConnection(
                    host=url.netloc, timeout=25
                )
            connection.request('GET', '%s?%s' % (url.path, url.query))
            resp = connection.getresponse()
            if int(resp.status) != 200:
                logging.error('Invalid response from %s/%s Reason: %s' % (
                    url.netloc, url.path, resp.reason
                ))
                return
            else:
                output = resp.read().decode('utf-8')
            connection.close()
        else:
            query = r'SCRIPT_NAME=/status SCRIPT_FILENAME=/status QUERY_STRING=json\&full REQUEST_METHOD=GET cgi-fcgi -bind -connect ' + data + ' |tail -1'
            ret, output = agent_util.execute_command(query)
        try:
            statLines = agent_util.json_loads(output)
        except Exception:
            logging.exception('Unable to parse json output.')
            return
        metric = str(textkey).replace('_',' ')
        if statLines.has_key(metric):
            return float(statLines[metric])

        else:
            raise Exception('stats output did not contain metric ' + metric +". stats output: " + statLines)
Bethany
Bethany
0%

THE FINEST HOTEL NEAR LAKE KIVU

The Perfect Base For You

Required fields are followed by *





EC1A68011

About Us

Delicious Interior With The Pinch Of Everything

Bethany Investment group is Presbyterian church in Rwanda(EPR) company that manage Hotel and Guest house in Karongi (Bethany Hotel), ISANO branch in GIKONDO(Kigali), Kiyovu branch(Kigali), AMIZERO branch(Nyagatare-East) and Gisenyi Branch(Rubavu).

Accomodation

Get a Comfortable Room
Feel The Comfort

Get a comfortable room and feel our hotel’s comfort. Bethany Hotel features a variety of fully furnished rooms with extra space, Executive rooms, Deluxe rooms with a beautiful lake view and garden space, Deluxe rooms, comfort rooms, family rooms and standard rooms at your service.

Standard Single

Services

We Provide Top Class Facility
Especially For You

Beach BBQ Party

Kick back on the beach& and enjoy our berbecue from our masterchef

Breakfast

Kick back at our hotels& enjoy our breakfast from our masterchef

Conference Hall

Kick back at our hotels& enjoy our conference halls from all bethany branches

Enjoy with your partner

Honeymoon Package

80%

Get In Touch

Don’t Miss Any Update

    +

    Search your Room

    Required fields are followed by *