From 9480495155f6ace41531b527dd6550e2bb888e20 Mon Sep 17 00:00:00 2001 From: vitor-aignosi Date: Mon, 18 Aug 2025 13:45:20 -0300 Subject: [PATCH] SIENTIAPDE-1169 Enable SDK metrics service in values.yaml and update worker.py to initialize SDK metrics server with Prometheus configuration, enhancing observability of the application. --- scouter/worker/worker.py | 14 +++++++++++++- values.yaml | 29 ++++++++++++++++++----------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/scouter/worker/worker.py b/scouter/worker/worker.py index aff8341..6aa61ea 100644 --- a/scouter/worker/worker.py +++ b/scouter/worker/worker.py @@ -1,5 +1,6 @@ from temporalio import workflow, client from temporalio.worker import Worker +from temporalio.runtime import Runtime, TelemetryConfig, PrometheusConfig with workflow.unsafe.imports_passed_through(): import sys @@ -21,6 +22,7 @@ with workflow.unsafe.imports_passed_through(): ) POD_ID = os.getenv("HOSTNAME", "localhost") +SDK_METRICS_PORT = int(os.getenv('HTTP_SDK_METRICS_PORT', "9091")) async def main(): @@ -62,11 +64,21 @@ async def main(): 'KAFKA_BOOTSTRAP_SERVERS', 'localhost:9092') ) + logger.info(f'Starting SDK Metrics Server on port {SDK_METRICS_PORT}...') + + new_runtime = Runtime( + telemetry=TelemetryConfig( + metrics=PrometheusConfig( + bind_address=f"0.0.0.0:{SDK_METRICS_PORT}") + ) + ) + logger.info('Starting Temporal Client...') temporal_client = await client.Client.connect( target_host=host, - namespace=os.getenv('TEMPORAL_NAMESPACE', 'default') + namespace=os.getenv('TEMPORAL_NAMESPACE', 'laborious'), + runtime=new_runtime ) logger.info('Starting Workers...') diff --git a/values.yaml b/values.yaml index ea7e4a1..b54199c 100644 --- a/values.yaml +++ b/values.yaml @@ -112,6 +112,13 @@ tolerations: [] affinity: {} services: + sdk-metrics: + enabled: true + type: ClusterIP + port: 9091 + targetPort: 9091 + name: sdk-metrics + metrics: enabled: true type: ClusterIP @@ -125,18 +132,18 @@ serviceMonitor: # Se true, um recurso ServiceMonitor será criado. enabled: true # O intervalo no qual as métricas devem ser coletadas (ex: 30s, 1m). - interval: 30s - # O path do endpoint de métricas na sua aplicação. - path: /metrics - # Labels adicionais para o recurso ServiceMonitor. - # Essencial para que o Prometheus Operator o descubra. Se você usa o helm chart kube-prometheus-stack, - # ele procura por ServiceMonitors com o label "release: kube-prometheus-stack". + endpoints: + - port: metrics + path: /metrics + interval: 30s + relabelings: [] + - port: sdk-metrics + path: /metrics + interval: 30s + relabelings: [] + additionalLabels: release: kube-prometheus-stack - # Configurações de relabeling adicionais, se necessário. - # ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - relabelings: [] - port: metrics env: # Entrypoint variables @@ -217,7 +224,7 @@ ssh: # kubectl create secret docker-registry docker-hub-secret --namespace sientia --docker-server=http://aignosi.azurecr.io --docker-username=aignosi --docker-password=5I5zpQ6sRaHqX1hD3dr+2mo647yO3FRc359/wu6gsP+ACRDRz5mp -# helm upgrade --install sientia-scouter-worker sientia/sientia-module -n sientia --create-namespace -f ./values.yaml --version 0.4.0 +# helm upgrade --install sientia-scouter-worker sientia/sientia-module -n sientia --create-namespace -f ./values.yaml --version 0.5.0 # kubectl create secret generic git-ssh-key-sientia-scouter-worker \ # --namespace sientia \