Sobes.tech
Middle

Come configurare i clienti per trasmettere metriche a Prometheus?

sobes.tech AI

Risposta dell'AI

Per trasmettere metriche a Prometheus, è necessario utilizzare exporter. Gli exporter sono piccoli servizi che aprono un endpoint HTTP contenente metriche in un formato comprensibile per Prometheus.

Principali metodi:

  1. Utilizzo di exporter ufficiali e di terze parti:

    • Esistono exporter pronti all’uso per molti servizi e sistemi popolari: node_exporter (metriche del sistema operativo), mysqld_exporter (metriche MySQL), kube-state-metrics (metriche di Kubernetes), ecc.
    • La configurazione consiste nell’installare l’exporter sul server di destinazione e specificare il suo indirizzo nella configurazione di Prometheus.
  2. Instrumentazione delle applicazioni:

    • Gli sviluppatori possono aggiungere codice alle loro applicazioni per esporre direttamente le metriche.
    • Prometheus fornisce librerie client per vari linguaggi di programmazione (Go, Java, Python, Ruby, ecc.).
    • Queste librerie permettono di creare contatori, gauge, istogrammi e riassunti, e poi aprire un endpoint HTTP per la raccolta da parte di Prometheus.
  3. Textfile Collector (per node_exporter):

    • node_exporter ha un collector textfile che può leggere metriche da file in un formato specifico.
    • Questo è utile per script periodici o task che generano metriche.
  4. Pushgateway:

    • Pushgateway viene usato per task di breve durata o batch che non possono essere raccolti direttamente da Prometheus (poiché potrebbero non esistere al momento della raccolta).
    • L’applicazione invia le sue metriche a Pushgateway, e Prometheus raccoglie i dati da Pushgateway.
# Esempio di configurazione di Prometheus (prometheus.yml)
scrape_configs:
  - job_name: 'node_exporter_servers' # Nome del job di raccolta
    static_configs:
      - targets: ['server1:9100', 'server2:9100'] # Lista di host/porte dove è in esecuzione node_exporter

  - job_name: 'application_metrics' # Job per la raccolta delle metriche dell’applicazione
    metrics_path: /metrics # Percorso in cui l’applicazione espone le metriche
    static_configs:
      - targets: ['application-host:8080'] # Indirizzo dell’applicazione

  - job_name: 'pushgateway' # Job per la raccolta delle metriche da Pushgateway
    honor_labels: true # Importante per la corretta gestione delle etichette di Pushgateway
    static_configs:
      - targets: ['pushgateway-host:9091'] # Indirizzo di Pushgateway

Dopo aver configurato gli exporter o aver instrumentato le applicazioni, Prometheus interrogherà periodicamente (scraping) gli endpoint indicati per raccogliere le metriche.