ok
Direktori : /usr/lib/fm-agent/plugins/ |
Current File : //usr/lib/fm-agent/plugins/opcache.py |
import agent_util import logging from agent_util import float try: # Python 2.x from urllib2 import urlopen except ImportError: from urllib.request import urlopen logger = logging.getLogger(__name__) class OpCachePlugin(agent_util.Plugin): textkey = "opcache" label = "PHP OpCache" @classmethod def update_metrics(self, config): # Make initial call to opcache.py using url set in config metric = {} r = urlopen(config["opcache_url"]) reply = r.read() reply = reply.strip().strip(";").split(";") for item in reply: if "time" in item: continue # So we can strip out the duplicate entries from the metadata like the duplicate free/used_memory stats # did this because the first metric it returns is the actual correct one, the second is the default elif item.split(":")[0] in metric.keys(): continue elif "Array" in item: continue else: metric_name = item.split(":")[0] metric_value = item.split(":")[-1] metric[metric_name] = float(metric_value) return metric @classmethod def get_metadata(self, config): status = agent_util.MISCONFIGURED msg = "Missing/incorrect data in [opcache] block!" if "opcache_url" in config: url = config["opcache_url"] status = agent_util.SUPPORTED msg = None else: return {} metadata = {} metrics = self.update_metrics(config) options = [] for textkey in metrics: if textkey == "Array": continue metadata[textkey] = { "label": textkey.replace("_", " ").title(), "options": options, "status": status, "error_message": msg, } return metadata def check(self, textkey, data, config): tmp = self.update_metrics(config) if textkey in tmp: # Adjusting for MB since it outputs in bytes if "memory" in textkey or "buffer" in textkey: return float(tmp[str(textkey)]) / 1048576 else: return tmp[str(textkey)] else: return None