diff --git a/metrics.py b/metrics.py index dc44c6d..7819e06 100644 --- a/metrics.py +++ b/metrics.py @@ -43,3 +43,9 @@ def init(cls) -> None: metric.title, metric.description, labelnames=metric.labels ), ) + @classmethod + def push(cls, pushgateway_url: str) -> None: + prometheus_client.push_to_gateway( + pushgateway_url, + job="sce-cicd", + ) diff --git a/modules/args.py b/modules/args.py index ad9ae93..7845fd3 100644 --- a/modules/args.py +++ b/modules/args.py @@ -23,4 +23,9 @@ def get_args(): default=0, help="increase logging verbosity; can be used multiple times like -vvv" ) + parser.add_argument( + "--pushgateway-url", + default="http://127.0.0.1:9091", + help="URL of the Prometheus Pushgateway", + ) return parser.parse_args() diff --git a/server.py b/server.py index 83aeba6..33e1de9 100644 --- a/server.py +++ b/server.py @@ -272,6 +272,7 @@ def get_docker_images_disk_usage_bytes(): multiplier = UNIT_MAP.get(unit.upper(), 1) usage = int(float(number) * multiplier) MetricsHandler.docker_image_disk_usage_bytes.set(usage) + MetricsHandler.push(args.pushgateway_url) return None except Exception: @@ -280,6 +281,7 @@ def get_docker_images_disk_usage_bytes(): def handle_deploy(repo_cfg: RepoConfig, payload: dict, is_dev: bool): MetricsHandler.last_push_timestamp.labels(repo=repo_cfg.name).set(time.time()) + MetricsHandler.push(args.pushgateway_url) commit = payload.get("head_commit") or {} status = DeploymentStatus( @@ -654,6 +656,7 @@ def smee_listen(): while True: message = ws.recv() MetricsHandler.last_smee_request_timestamp.set(time.time()) + MetricsHandler.push(args.pushgateway_url) data = json.loads(message) # we used to get it like