From 0a4d1e5674679914afde1c2145952ada8d0068fb Mon Sep 17 00:00:00 2001 From: epicgdog <91296067+epicgdog@users.noreply.github.com> Date: Tue, 10 Jun 2025 17:52:40 -0700 Subject: [PATCH 1/5] ips parsed from config.json --- collector/server.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/collector/server.py b/collector/server.py index 17d64126..118943e7 100644 --- a/collector/server.py +++ b/collector/server.py @@ -3,6 +3,7 @@ from threading import Thread import enum import logging +import json from fastapi import FastAPI, Response from fastapi.middleware.cors import CORSMiddleware @@ -140,10 +141,18 @@ async def metrics(): ) args = parser.parse_args() - ip_list = args.ips.split(',') + try: + with open("../config/config.json", "r") as f: + config = json.load(f) + left_ip = config["PRINTING"]["LEFT"]["IP"] + right_ip = config["PRINTING"]["RIGHT"]["IP"] + ip_list=[left_ip, right_ip] + + thread = Thread(target = scrape_snmp, args=(ip_list,), daemon=True) + thread.start() + except Exception as e: + logging.error(f"error opening config file: {e}") - thread = Thread(target = scrape_snmp, args=(ip_list,), daemon=True) - thread.start() uvicorn.run( app, host=args.host, From 32f068498bc436e039f51c0a2169c87bda91010d Mon Sep 17 00:00:00 2001 From: epicgdog <91296067+epicgdog@users.noreply.github.com> Date: Tue, 10 Jun 2025 18:08:16 -0700 Subject: [PATCH 2/5] added logs for debugging --- collector/server.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/collector/server.py b/collector/server.py index 118943e7..85f2e1a4 100644 --- a/collector/server.py +++ b/collector/server.py @@ -148,6 +148,8 @@ async def metrics(): right_ip = config["PRINTING"]["RIGHT"]["IP"] ip_list=[left_ip, right_ip] + logging.info(f"connected to left printer ip: {left_ip}") + logging.info(f"connected to right printer ip: {right_ip}") thread = Thread(target = scrape_snmp, args=(ip_list,), daemon=True) thread.start() except Exception as e: From aee8413e8865de486cfca13550d3be314163ea50 Mon Sep 17 00:00:00 2001 From: epicgdog <91296067+epicgdog@users.noreply.github.com> Date: Tue, 10 Jun 2025 20:38:35 -0700 Subject: [PATCH 3/5] absolute path for config --- collector/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collector/server.py b/collector/server.py index 85f2e1a4..02340133 100644 --- a/collector/server.py +++ b/collector/server.py @@ -142,7 +142,7 @@ async def metrics(): args = parser.parse_args() try: - with open("../config/config.json", "r") as f: + with open("/config/config.json", "r") as f: config = json.load(f) left_ip = config["PRINTING"]["LEFT"]["IP"] right_ip = config["PRINTING"]["RIGHT"]["IP"] From 505dca12e152cd4a00e0bcccc85013c12956963b Mon Sep 17 00:00:00 2001 From: epicgdog <91296067+epicgdog@users.noreply.github.com> Date: Tue, 10 Jun 2025 20:39:54 -0700 Subject: [PATCH 4/5] mounted config as volume --- collector/server.py | 2 +- docker-compose.yml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/collector/server.py b/collector/server.py index 02340133..2c672072 100644 --- a/collector/server.py +++ b/collector/server.py @@ -142,7 +142,7 @@ async def metrics(): args = parser.parse_args() try: - with open("/config/config.json", "r") as f: + with open("/tmp/config.json", "r") as f: config = json.load(f) left_ip = config["PRINTING"]["LEFT"]["IP"] right_ip = config["PRINTING"]["RIGHT"]["IP"] diff --git a/docker-compose.yml b/docker-compose.yml index ef33ca44..85fdf370 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,6 +17,9 @@ services: build: context: . dockerfile: ./collector/Dockerfile + + volumes: + - ./config/config.json:/tmp/config.json # we attach the print container to an external docker # network called "poweredge". we do this so a prometheus # container can pull metrics from the server over HTTP From 77693d6df00484dce2906f9bd2a807b02a8cbb07 Mon Sep 17 00:00:00 2001 From: epicgdog <91296067+epicgdog@users.noreply.github.com> Date: Tue, 10 Jun 2025 22:18:51 -0700 Subject: [PATCH 5/5] turned config path as required command argument --- collector/Dockerfile | 4 +++- collector/server.py | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/collector/Dockerfile b/collector/Dockerfile index 67bda78a..33ece497 100644 --- a/collector/Dockerfile +++ b/collector/Dockerfile @@ -10,4 +10,6 @@ COPY ./collector/server.py /app EXPOSE 5000 -ENTRYPOINT [ "python", "server.py" ] +ENTRYPOINT [ "python", "server.py"] + +CMD [ "--config-file-path", "/tmp/config.json"] diff --git a/collector/server.py b/collector/server.py index 2c672072..506843a6 100644 --- a/collector/server.py +++ b/collector/server.py @@ -116,7 +116,12 @@ async def metrics(): if __name__ == "__main__": parser = argparse.ArgumentParser("snmp coolness") - + parser.add_argument( + "--config-file-path", + required=True, + help="Path to config file that stores IPs", + ) + parser.add_argument( "--ips", help="List of IP addresses of snmp agent (default: 192.168.69.208,192.168.69.149)", @@ -142,7 +147,7 @@ async def metrics(): args = parser.parse_args() try: - with open("/tmp/config.json", "r") as f: + with open(args.config_file_path, "r") as f: config = json.load(f) left_ip = config["PRINTING"]["LEFT"]["IP"] right_ip = config["PRINTING"]["RIGHT"]["IP"]