From 3336126ceb20e382e2de6ebc4a63b658c9fdaf4b Mon Sep 17 00:00:00 2001 From: Kai Jan Kriegel Date: Tue, 7 Feb 2023 20:25:54 +0100 Subject: [PATCH] switch to labels --- main.py | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/main.py b/main.py index 3f58f1a..1a05143 100644 --- a/main.py +++ b/main.py @@ -5,49 +5,48 @@ import asyncio import pyfabapi.fabapi def convert2int(enum): - if(enum == "free"): + if enum == "free": return 0.0 - if(enum == "inUse"): + if enum == "inUse": return 1.0 - if(enum == "toCheck"): + if enum == "toCheck": return 2.0 - if(enum == "blocked"): + if enum == "blocked": return 3.0 - if(enum == "disabled"): + if enum == "disabled": return 4.0 - if(enum == "reserved"): + if enum == "reserved": return 5.0 - if(enum == "totakeover"): + if enum == "totakeover": return 6.0 + async def main(): polling_interval_seconds = int(os.getenv("POLLING_INTERVAL_SECONDS", "5")) exporter_port = int(os.getenv("EXPORTER_PORT", "9000")) - + bffh_host = str(os.getenv("BFFH_HOST", "localhost")) bffh_port = int(os.getenv("BFFH_PORT", "59661")) bffh_user = str(os.getenv("BFFH_USER", "Admin1")) bffh_password = str(os.getenv("BFFH_PASSWORD", "secret")) - + await aio.web.start_http_server(addr="0.0.0.0", port=exporter_port) - + metriclist = {} session = await pyfabapi.fabapi.connect(bffh_host, bffh_port, bffh_user, bffh_password) - machine_list = await session.machineSystem.info.getMachineList().a_wait() - machine_list = machine_list.machine_list - - for machine in machine_list: - metriclist[machine.id] = Gauge("bffh_machine_" + machine.id + "_state", "Machine State") - + + machine_state = Gauge("bffh_machine_state", "Machine State", ["machine_id", "machine_name", "category"]) + while True: - machine_list_new = await session.machineSystem.info.getMachineList().a_wait() - machine_list_new = machine_list_new.machine_list - - for machine in machine_list_new: - metriclist[machine.id].set(convert2int(machine.state)) - + machine_list = await session.machineSystem.info.getMachineList().a_wait() + machine_list = machine_list.machine_list + + for machine in machine_list: + machine_state.labels(machine.id, machine.name, machine.category).set(convert2int(machine.state)) + await asyncio.sleep(polling_interval_seconds) + if __name__ == "__main__": loop = asyncio.new_event_loop() asyncio.set_event_loop(loop)