Prometheus Tutorial: 3 - Exporter

Tutorial sull’utilizzo del Prometheus - configurazione ed utilizzo degli exporter per prelevare le metriche applicative e di sistema.

Exporter per un’applicazione di esempio

Avviare un’applicazione di esempio

Utilizziamo un applicazione di esempio per verificare come poter configurare un nuovo exporter e configurarlo nel Prometheus al fine di essere monitorato. Utilizzeremo come applicazione di esempio quella disponibile al seguente indirizzo:

Questa applicazione è configurata per contenere delle metriche applicative di esempio ed il suo utilizzo è molto semplice, ogni richiesta a / fornirà un codice HTTP di ritorno 200 ed incrementarà una metrica interna per queste risposte. Allo stesso modo l’endpoint /err restituirà un codice HTTP404, incrementando il rispettivo contatore.

Le metriche dell’applicazione sono disponibili all’indirizzo /metrics, un esempio è il seguente:

# HELP http_requests_total Count of all HTTP requests
# TYPE http_requests_total counter
http_requests_total{code="200",method="get"} 2
# HELP version Version information about this binary
# TYPE version gauge
version{version="v0.1.0"} 0

La metrica di nostro interesse per questo esempio è quella con nome http_requests_total.

Per avviare l’applicazione di esempio è possibile ancora utilizzare docker:

$ docker run -d --name prom-example-app-0 -p8080:8080 quay.io/brancz/prometheus-example-app:v0.1.0

Per verificarne il comportamento è possibile contattare l’applicazione di esempio all’indirizzo http://127.0.0.1:8080/ ed utilizzare gli endpoint

  • /

  • /err

  • /metrics

È anche possibile avviarne più istanze su porte diverse per simulare un’applicazione ridondata con più istanze:

$ docker run -d --name prom-example-app-1 -p8081:8080 quay.io/brancz/prometheus-example-app:v0.1.0
$ docker run -d --name prom-example-app-2 -p8082:8080 quay.io/brancz/prometheus-example-app:v0.1.0

Configurare Prometheus per lo scrape dell’app

Configuriamo adesso Prometheus per eseguire lo scrape di questi nuovi target. Raggruppiamo questi tre endpoint in un job chiamato prometheus-example-app ed immaginiamo che i primi due target siano di servizi in produzione ed il terzo per il canary testing. Per modellare questo in Prometheus possiamo aggiungere diversi gruppi di endpoints allo stesso singolo job, aggiungendo ulteriori label per ogni gruppo di target. Nel esempio seguente aggiungiamo un group=”canary” alla seconda tipologia di servizi.

Per ottenere il risultato desiderato aggiungere la seguente configurazione alla sezione scrape_configs nel file prometheus.yml.

prometheus.yml
# ......
scrape_configs:
  - job_name:       'prometheus-example-app'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s

    static_configs:
      - targets: ['172.17.0.1:8080', '172.17.0.1:8081']
        labels:
          group: 'production'

      - targets: ['172.17.0.1:8082']
        labels:
          group: 'canary'

NOTA: l’indirizzo 172.17.0.1 corrisponde all’indirizzo del gateway docker tramite cui far parlare le varie applicazioni.

Adesso riavviate la vostra istanza prometheus con il comando:

$ docker-compose restart.

altri exporters utili

Sono inoltre già disponibili molti exporter sviluppati per Prometheus, due di quelli più utili sono i seguenti:

  • Node exporter → exporter per metriche hardware e software esposte dai kernel *NIX

  • Blackbox exporter → blackbox che verifica gli endpoint HTTP, HTTPS, DNS, TCP e ICMP.

TOBECONTINUED

Segui la quarte parte del tutorial per imparare ad configurare ed utilizzare l’alertmanager.


Pubblicato il
    Be Smart Be Open

    Business Software Solutions

    Ultimi articoli

    Rilasciata in produzione applicazione Wasteful basata su Flutter

    11 Marzo 2022

    I nostri contatti

    Email: besmart@besmartbeopen.it
    Pec: besmartbeopen@pec.it
    P.IVA e C.F.: 02137570509
    Top
    Noi ed alcuni partner utilizziamo cookie o tecnologie simili come specificato nella cookie policy Per maggiori informazioni consulta la nostra Cookie Policy Cookie Policy