version: '3'
services:
prometheus:
image: prom/prometheus:v2.9.2
container_name: prometheus
ports:
- 9090:9090
restart: always
user: '1000'
volumes:
- "$PWD/promdata:/prometheus"
- "$PWD/promconf:/etc/prometheus:ro"
command: "--config.file=/etc/prometheus/prometheus.yml --storage.tsdb.retention=90d"
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
Prometheus Tutorial: 2 - Getting started
Tutorial sull’utilizzo del Prometheus - parte 2: avvio e configurazione del Prometheus tramite Docker Compose.
Getting started
Prometheus può essere installato tramite i binari precompilati nella sezione download del sito Prometheus, oppure tramite le immagini [Docker] presenti su Quay.io o Docker hub.
In questo documento utilizzero l’approccio basato su [Docker] e [Docker_Compose].
Il file docker_compose.yml che segue descrive una possibile configurazione per utilizzare il Prometheus tramite Docker compose.
In questo docker-compose.yml è definito il mapping di due volumi:
“$PWD/promdata:/prometheus” → nella cartella locale promdata sarà salvato lo storage prometheus
“$PWD/promconf:/etc/prometheus:ro” → nella cartella locale promconf deve essere presente la configurazione Prometheus
Il file prometheus.yml dovrà essere presente nella cartella $PWD/promconf.
Configurare Prometheus per monitorare se stesso
Prometheus colleziona le metriche dei target monitorati effettuando lo scraping degli endpoint HTTP di questi target. Visto che Prometheus stesso espone le proprie metriche interne tramite lo stesso meccanismo è possibile fare lo scrape ed il monitoraggio del suo stato di salute tramite lo stesso meccanismo.
L’esempio seguente mostra la configurazione da inserire nel prometheus.yml per far si che Prometheus effettui il monitoraggio di stesso:
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['127.0.0.1:9090']
Avviare il Prometheus
Per avviare il Prometheus è necessario aver installato il [Docker_Compose] ed eseguire nella cartella che contiene il file docker-compose.yml il comando:
$ docker-compose up -d
Per verificare i log:
$ docker-compose logs
È possibile verificare che il Prometheus stia funzionando anche visualizzando le sue stesse metriche attraverso l’endpoint:
Utilizzare l’Expression Browser
Per visualizzare i dati che il Prometheus ha collezionato di se stesso è possibile utilizzare l’expression browser built-in andando all’indirizzo http://127.0.0.1:9090/graph e scegliento la vista “Console” dentro la tab “Graph“.
Come è possibile verificare all’indirizzo http://127.0.0.1/metrics, una delle metriche che Prometheus esporta di se stesso è chiamata prometheus_target_interval_length_seconds (la latenza che intercorre tra due scrape delle metriche). Inserisci questa espressione nella console:
prometheus_target_interval_length_seconds
Questa fornirà un numero differente di time series (insieme con l’ultimo valore registrato per ognuna), ovvero tutte quelle con la metrica con nome prometheus_target_interval_length_seconds ma con label differenti. Le varie label rappresentano differenti percentili di latenza ed intervalli dei gruppi di target.
Un esempio è riportato nella figura seguente.
TOBECONTINUED
Segui la terza parte del tutorial per imparare a monitorare un’applicazione di esempio ed utilizzare gli exporter opensource già disponibili online.
Per maggiori approfondimenti:
[Prometheus] https://prometheus.io/
[Docker] https://www.docker.com
[Docker_Compose] https://docs.docker.com/compose/