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