def number_of_nodes(ctxt): """ data = {} Uses the monitoredservice Cloudforms tag to retrieve number of nodes """ monitoredservice = ctxt["service"].infrastructure.name machines = get_vms_by_service(monitoredservice) return len(machines)
def snmp_oid_service_avg(ctxt): """ REtrieves service infrastructure from ctxt data = { "snmp_read_comunity": "....", "snmp_variable": "...." } """ import sys # logging.basicConfig(level=logging.DEBUG, stream=sys.stdout) try: data = _load_data(ctxt["service"].data) monitoredservice = ctxt["service"].infrastructure.name machines = get_vms_by_service(monitoredservice) # print("Returned machines: %s" % machines) values = [] for machine in machines: logging.debug("[metric: snmp_oid_service_avg] quering variable %s in machine: %s " % (data["snmp_variable"], machine.name)) try: name = machine.name community = data.get("snmp_read_comunity", "public") variable = data["snmp_variable"] logging.debug("Machine: %s, Community: %s, variable: %s" % (name, community, variable)) ret = get_variable(name, 514, community, ".1.3.6.1.4.1.2021.11.9.0") logging.debug("[metric: snmp_oid_service_avg] retrieved: %s " % ret) values.append(ret) except Exception as err: logging.error("[metric: snmp_oid_service_avg] reading snmp variable from machine %s got error: %s" % (machine.name, err)) if not len(values): logging.debug("[metric: snmp_oid_service_avg] no values, returning 0") return 0 tot = 0 for val in values: tot += float(val) tot /= len(values) logging.debug("[metric: snmp_oid_service_avg] snmp query returned: %s" % tot) logging.debug("[metric: snmp_oid_service_avg] metric ended") return tot except Exception as er: logging.error("[metric: snmp_oid_service_avg] Exception: %s" % er) return 0