ok
Direktori : /proc/self/root/lib/fm-agent/plugins/ |
Current File : //proc/self/root/lib/fm-agent/plugins/elasticsearch.py |
import agent_util class ElasticSearchPlugin(agent_util.Plugin): textkey = "elasticsearch" label = "Elastic Search" @classmethod def get_metadata(self, config): status = agent_util.SUPPORTED msg = None if not config: self.log.info( "The [elasticsearch] config block not found in the config file" ) return {} if not "hostname" in config or not "port" in config: self.log.info( "The [elasticsearch] config block does not contain variables for hostname and/or port" ) return {} if not agent_util.which("curl", exc=False): self.log.info("curl not found!") status = agent_util.UNSUPPORTED msg = "Curl is not installed - please install" return {} options = [] data = { "number_of_nodes": { "label": "Total number of nodes in cluster", "options": None, "status": status, "error_message": msg, }, "number_of_data_nodes": { "label": "Number of data nodes in cluster", "options": None, "status": status, "error_message": msg, }, "active_primary_shards": { "label": "Number of active primary shards", "options": None, "status": status, "error_message": msg, }, "active_shards": { "label": "Total number of shards", "options": None, "status": status, "error_message": msg, }, "relocating_shards": { "label": "Number of shards getting relocated", "options": None, "status": status, "error_message": msg, }, "initializing_shards": { "label": "Number of initializing shards", "options": None, "status": status, "error_message": msg, }, "unassigned_shards": { "label": "Number of unassigned shards", "options": None, "status": status, "error_message": msg, }, } return data def check(self, textkey, data, config): user_string = "" if config.get("username") and config.get("password"): user_string = "--user %s:%s" % ( config.get("username"), config.get("password"), ) cmd = "curl %s %s:%s/_cluster/health" % ( user_string, config["hostname"], config["port"], ) ret, output = agent_util.execute_command(cmd) reply = agent_util.json_loads(output) return int(reply[textkey])