Kata pengantar
Catatan ini umumnya tentang pushgateway mendorong , namun, saya akan memperingatkan Anda dan segera mengakui bahwa teks tersebut akan berisi contoh - anti-pola pushgateway, karena penggunaan pushgateway disarankan jika layanan tidak berfungsi terus-menerus (atau untuk layanan / tugas yang dimulai secara umum tidak ada antarmuka), yang berarti lebih baik bagi prometheus untuk tidak terus-menerus mengetuk pintu yang tertutup dan tidak melakukan pekerjaan yang tidak perlu.
pengantar
Jadi, pushgateway adalah layanan tempat Anda dapat menghapus metrik saat model tarik prometheus standar tidak berlaku (dalam pengantar, saya biasanya menjelaskan bagaimana situasi seperti itu dapat muncul dan terlihat). Setelah metrik memasuki pushgateway, prometheus sudah mengambilnya dari sana, dan ini menyiratkan beberapa batasan yang terkait dengan metrik push, misalnya, tidak adanya metrik naik, karena dihasilkan oleh prometheus sendiri untuk instance yang disurvei, dan dalam hal ini, hanya pushgateway.
ps Meskipun, jika kita berbicara tentang metrik naik, itu tidak diperlukan jika Anda menggunakan pushgateway secara praktis.
Mempersiapkan prometheus untuk survei pushgateway
Katakanlah kita memiliki penulisan seperti ini dengan prometheus dan 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.
Saya memutuskan untuk menulis catatan, karena saya menemukan yang serupa dalam pekerjaan saya, saya akan segera mengatakan bahwa metode dari contoh tidak akan masuk ke produksi, namun, karena menggunakan pushgateway dengan tidak adanya penemuan layanan, untuk mengujinya dapat berhasil.