Impulsando las métricas de Prometheus con pushgateway

De todos modos, solo pushgateway tiene una llama azul en el favicon







Prefacio



Esta nota generalmente trata sobre empujar la puerta de enlace , sin embargo, le advertiré y admitiré de inmediato que el texto contendrá un ejemplo: un anti-patrón de empujar la puerta de entrada, ya que se recomienda el uso de la puerta de empuje en el caso de que el servicio no funcione constantemente (o para un servicio / tarea iniciada en general no hay interfaz), lo que significa que es mejor para prometheus no golpear constantemente las puertas cerradas y no realizar trabajos innecesarios.







Introducción



, pushgateway — , pull- prometheus' ( , , ). , pushgateway prometheus , , , up, prometheus , — pushgateway.







p.s. , up , , , pushgateway -.







prometheus pushgateway



, compose prometheus pushgateway:







# ....( -   ..)   
prometheus:  
    restart: always  
    image: bitnami/prometheus:latest  
    links:  
        - pushgateway  
    volumes:  
        - ./.prom.yml:/opt/bitnami/prometheus/conf/prometheus.yml  

pushgateway:  
    restart: always  
    image: bitnami/pushgateway:latest  
    ports:  
        - 9091:9091  
      
      





prom.yml - , pushgateway:







global: null
scrape_interval: 5s
scrape_timeout: 2s
evaluation_interval: 15s

scrape_configs:
  - job_name: pushgateway
    honor_labels: true
    static_configs:
      - targets:
          - 'pushgateway:9091'
      
      





, honor_lables, , , , "X" pushgateway, "X", honor_lables=false "X" pushgateway "exported_X" , pushgateway, true ( , ).







p.s. pushgateway — - , , basic_auth.









, , , , , - , service_discovery ( , , ).







, , Faust ( swarm, ), consul prometheus, docker compose scale.







, , , , :







ports:  
- "9100-9200:6066"  
      
      





prometheus .







. . , — , push_to_gateway .







async def push_metrics():  
    def auth_handler(url, method, timeout, headers, data):  
        return basic_auth_handler(url, method, timeout, headers, data, PUSHGATEWAY_USERNAME, PUSHGATEWAY_PASSWORD)  
    push_to_gateway(PUSHGATEWAY_URI, job=f"{WORKERS_APP_NAME}-{ENV}", registry=registry_metrics, handler=auth_handler)  

@app.timer(interval=PUSH_METRICS_INTERVAL)  
async def push_metrics_cron():  
    await push_metrics()  
      
      





— job name ( — prometheus'), handler registry . , pushgateway - , , prometheus.









Decidí escribir una nota, ya que encontré una similar en mi trabajo, diré inmediatamente que el método del ejemplo no entrará en producción, sin embargo, ya que usar pushgateway en ausencia del descubrimiento del servicio, para probarlo puede salir.








All Articles