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 .
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.