es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para exportar las métricas desde el punto final de Prometheus en la API ASGI de FastAPI a Google Cloud Monitoring utilizando OpenTelemetry sin usar un sidecar, siga estos pasos:

    1. Instale los paquetes requeridos:
      pip install opentelemetry-api
      pip install opentelemetry-sdk
      pip install opentelemetry-exporter-google-cloud
      pip install opentelemetry-instrumentation-prometheus
      
    2. Importe los paquetes requeridos:
      from fastapi import FastAPI
      from opentelemetry import metrics
      from opentelemetry.exporter.google_cloud.monitoring import (
          GoogleCloudMetricsExporter,
      )
      from opentelemetry.sdk.metrics import Counter, MeterProvider
      from opentelemetry.sdk.metrics.export import MetricRecord
      from opentelemetry.exporter.prometheus import PrometheusMetricsExporter
      from opentelemetry.sdk.metrics.export.interval import (
          IntervalMetricReader
      )
      from opentelemetry.instrumentation.prometheus import PrometheusInstrumentor
      from opentelemetry.sdk.resources import Resource
      from opentelemetry.sdk.metrics.export.controller import PushController
      
    3. Configure la configuración de métricas:
      exporter = GoogleCloudMetricsExporter(
          project_id="su-id-de-proyecto",
          location="us-central1",
      )
      
      meter_provider = MeterProvider(
          resource=Resource.create({"service.name": "nombre-de-su-servicio"}),
          exporters=[exporter],
      )
      
      # acceda al objeto medidor de métricas estándar, si es necesario
      request_count = meter_provider.get_meter(__name__).create_counter(
          "total_peticiones",
          "Número total de peticiones",
          "peticiones",
      )
      
      # evite las etiquetas duplicadas creadas por las solicitudes de webhook
      metric_options = MetricOptions(
          label_keys=["exportador", "trabajo", "instancia", "ruta"],
      )
      
      prometheus_exporter = PrometheusMetricsExporter("su-punto-final-de-prometheus")
      interval_metric_reader = IntervalMetricReader()
      interval_metric_reader.export_metrics(prometheus_exporter)
      
      push_controller = PushController(
          meter_provider=metric_provider,
          exporter=exporter,
          interval=60,
      )
      
      nombre_metrica = "nombre_metrica"
      descripcion_metrica = "descripcion_metrica"
      
      # crear y registrar el contador
      counter = meter_provider.get_meter(__name__).create_counter(
          nombre_metrica,
          descripcion_metrica,
          "unidad",
      )
      
    4. Configure la aplicación FastAPI:
      app = FastAPI()
      
      @app.get("/metrics")
      def leer_prometheus():
          # exponga el punto final de Prometheus
          texto = generate_latest(prometheus_exporter.registry)
          return Response(content=texto, media_type=CONTENT_TYPE_LATEST)
      
      # registre PrometheusInstrumentor
      PrometheusInstrumentor().instrument()
      
      # incrementar el contador
      counter.add(1, {"clave": "valor"})
      
      # inicio del envío por intervalos
      push_controller.start()
      
      # ejecute la aplicación
      if __name__ == "__main__":
          uvicorn.run(app, host="0.0.0.0", port=8000)
      
    5. Verifique las métricas en Google Cloud Monitoring:
      • Vaya a la consola de Google Cloud Monitoring.
      • Haga clic en “Explorador de métricas”.
      • Seleccione la pestaña “Personalizado”.
      • Seleccione su proyecto y el “Tipo de métrica” como la métrica de Prometheus.
      • Haga clic en “Crear gráfico”.

    ¡Eso es todo! Ahora debería poder exportar las métricas desde el punto final de Prometheus en la API ASGI de FastAPI a Google Cloud Monitoring utilizando OpenTelemetry sin usar un sidecar.

Comments are closed.