Mendorong metrik Prometheus dengan pushgateway

Semua sama, hanya pushgateway yang memiliki api biru di favicon







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 .







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









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.








All Articles