diff --git a/laborious/worker/worker.py b/laborious/worker/worker.py index 9540258..fa8c57d 100644 --- a/laborious/worker/worker.py +++ b/laborious/worker/worker.py @@ -1,6 +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 os @@ -24,6 +24,7 @@ with workflow.unsafe.imports_passed_through(): from prometheus_client import start_http_server POD_ID = os.getenv('POD_ID') +SDK_METRICS_PORT = int(os.getenv('HTTP_SDK_METRICS_PORT', "9091")) async def main(): @@ -57,9 +58,17 @@ async def main(): logger.info('Starting Temporal Client...') + new_runtime = Runtime( + telemetry=TelemetryConfig( + metrics=PrometheusConfig( + bind_address=f"0.0.0.0:{SDK_METRICS_PORT}") + ) + ) + temporal_client = await client.Client.connect( target_host=host, - namespace=os.getenv('TEMPORAL_NAMESPACE', 'laborious') + namespace=os.getenv('TEMPORAL_NAMESPACE', 'laborious'), + runtime=new_runtime ) logger.info('Starting Workers...') diff --git a/values.yaml b/values.yaml index 3502f24..46e72e2 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: @@ -185,6 +192,8 @@ env: value: "DEBUG" - name: HTTP_METRICS_PORT value: "9090" + - name: HTTP_SDK_METRICS_PORT + value: "9091" - name: PROJECT_NAME value: "sientia-laborious"