Desplegant Prometheus & Grafana

Despertem de la hibernació! Vam començar si us sembla bé a tod@s amb aquest document que farem servir com a base en futurs posts. Havia pensat que enguany vam fer costat a les mètriques i logs (a part del de sempre), així que crec que aquest document de com desplegar ràpidament Prometheus i Grafana pot venir bé.

Abans de començar, doncs això, que se'm van fer llargues les vacances de nadal… m'agrada a mi això dels festius i els ponts =) Però bo, indicar-vos que ja he preparat la base del que anirem veient aquest any al blog, espero que us sigui interessant; serà com sempre, una mica de tot, sempre que es pugui 2 posts setmanals, però posant el focus en coses que encara no s'han desenvolupat gaire en el blog, coses que potser són fàcils d'implementar i aporten molt a donar-li visibilitat a l'entorn. Suggeriments oberts en el meu mail. Ah i també li podeu fer SPAM a Fede Cinalli per tornar amb el Podcast 🙂

Comencem! El que s'ha dit, avui un primer document inicial, on vam poder veure el senzill que resulta desplegar Prometheus i Grafana. Ambdues solucions entenc són conegudes, Prometheus és open source i ens permetrà emmagatzemar diferents mètriques per visualitzar-les elegantment amb Grafana. La idea és muntar un sistema complet de telemetria que ens permeti conèixer els estats dels sistemes que considerem core de negoci.

En els exemples que anirem veient, usarem sempre contenidors de Docker (per tots els avantatges que ens puguin donar a l'hora d'instal·lar, actualitzar, gestionar…), així que tant Prometheus com Grafana aniran en els seus propis contenidors. Habitualment els posts els baso a Ubuntu Server, on a part de la configuració base, haueu de tenir instal·lat Docker.

Desplegant Prometheus

Per desplegar el primer contenidor, si us sembla bé, crearem una carpeta, dins d'ella deixarem el docker-compose.yaml amb la definició del contenidor que vam desplegar, i ja després, el desplegarem.

cd mkdir prometheus cd prometheus mkdir prometheus

Creem i editem el contenidor amb 'nano docker-compose.yaml’

version: '3.8'
services:
  prometheus:
    image: prom/prometheus container_name: prometheus restart: unless-stopped command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.retention.time=15d'
    volumes:
      - ./prometheus:/etc/prometheus
      - prom_data:/prometheus ports:
      - 9090:9090
    networks:
      prometheus_default:
volums:
  prom_data:

networks:
  prometheus_default:
    driver: bridge ipam:
     config:
       - subnet: XX.XX.XX.XX.0/24
         gateway: XX.XX.XX.XX.1

Crearem un contenidor que s'anomenarà prometheus, basada en aquesta imatge, que exposarà (per defecte) el port 9090 al qual ens podrem connectar posteriorment. (En el meu cas) li passem 2 comandaments, un per passar-li el fitxer de configuració de Prometheus (prometheus.yml) i un altre per indicar-li que vull una retenció de 15 dies (si volem). Així com la xarxa, particularment m'agrada assignar rangs, indicar-s'ho, o ometre les 4 últimes línies.

I abans d'arrencar el contenidor, hem de crear el seu fitxer de configuració, per a això, simplement executem 'nano prometheus/prometheus.yml’ i ho definim:

global:
  scrape_interval: 5s scrape_timeout: 5s evaluation_interval: 5s #scrape_configs:
#  - job_name: prometheus
#    honor_timestamps: true
#    scrape_interval: 15s
#    scrape_timeout: 10s
#    metrics_path: /metrics
#    scheme: http
#    static_configs:
#      - targets:
#        - localhost:9090

En el meu cas, veureu que he comentat (#) que no m'agafi les mètriques locals, del mateix contenidor de Prometheus, no m'interessen, però per a gustos, colors 🙂 Si no tens mètriques amb les quals provar, ho descomentes.

I ja només ens quedaria desplegar el contenidor, executant:

sudo docker compose up -d

Un cop ens descarregui la imatge de Prometheus, aixecarà el contenidor i ens podrem connectar a la GUI si volem confirmar que ha anat tot bé (recordar, al 9090tcp). Recordar que si no us portàveu bé amb els comandaments de Docker, sempre tindrem a Portainer; però vagi, en aquest cas si heu seguit bé els passos, el contenidor s'haurà aixecat, i si no, li miràveu els logs 'sudo docker logs prometheus -f'.

Desplegant Grafana

Igualment que Prometheus, Grafana anirà en un altre contenidor de Docker, així de fàcil i senzill. Creem una carpeta on vam deixar el docker i després el despleguem:

cd mkdir grafana cd grafana

I creem ací amb 'nano docker-compose.yaml’ definició del contenidor de Grafana que volem:

services:
  grafana:
    image: grafana/grafana-oss container_name: grafana restart: unless-stopped ports:
     - '3000:3000'
    volumes:
      - ./grafana-storage:/var/lib/grafana networks:
      - grafana_default volums:
  grafana-storage: {}

networks:
  grafana_default:
    driver: bridge ipam:
     config:
       - subnet: XX.XX.XX.XX.0/24
         gateway: XX.XX.XX.XX.1

Que es descarregarà l'última imatge de Grafana Open Source, i el publicarà pel port 3000.

Finalment, despleguem i arrenquem el contenidor amb:

sudo docker compose up -d

Obrim un navegador contra el port 3000 de la màquina Docker i tindrem ja Grafana corrent. Entrem com a admin / admin per defecte, i ens assegurarem de canviar el password.

Acabem el document creant el Data source a Grafana, que serà el connector contra Prometheus, anem a 'Home’ > 'Connections’ > 'Data sources’ > 'Add new data source', i n'hi afegim un del tipus Prometheus. Li indiquem un nom al data source i indiquem la URL del nostre Prometheus.

A partir d'ara, ja podrem començar a emmagatzemar mètriques a Prometheus, i visualitzar-les des de Grafana, bé ja que fem nosaltres mateixos els Dashboards, o directament els agafem de la comunitat de Grafana 🙂

Això és tot per ara, comencem amb els pilars =) Espero que com sempre us vagi fenomenal, i que aquest temps ens hagi servit per madurar una mica més! Us mando una abraçada, ¡cuidar-vos molt!

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!