Ping-eko metrikak Prometheus eta Grafana-rekin

Post txiki bat, Nik uste dut edozein arlotan baliagarria izan daitekeela, Ez da beste ezer, ping-ak botatzea baizik 😊😂, Ikus dezagun, barre egingo dut, Baina askotan informazio interesgarria ematen du. Post honetan barruko/kanpoko IP helbideei ping-ak nola botatzen diren ikusiko dugu, euren atzerapenak ezagutzeko, Bada etenik… Eta Grafana-rekin bisualki ulertzeko.

Benetan interesatzen bazaigute denbora errealean ezagutzea (zehatz-mehatz 1 segundo, 5…) IP helbide jakin batzuetara konektibitatea, gutxienez sareko arazo bat dugunean jakiteko, Internetera iristen ez garen kasuak barne, publikatuta dugun zerbitzu bat, edo ordezkaritzetako barruko IP helbide batzuk, Datacenter… IP helbide horiek ezagutzea interesatzen zaiguna (i) paketeak jaisten diren ala ez eta (ii) haien erantzun-denbora (latentziak ezagutzeko). Post honetan ikusiko dugu nola daukagun hori modu sinple eta azkar batean muntatuta.

Esan nizuen bezala, aurten helburu dut pixka bat azpimarratzea blogean oraindik oso ukitu ez ditugun gai mota hauek, batez ere ezarri eta gehiengoari aplika diezaioketen errazenak 🙂 Beraz, hasteko prest gaude! Kontuan hartuta jada gure ingurunea dugula Prometheus eta Grafana bat martxan jarri ondoren, hastea ahalbidetuko digu.

Modurik eraginkorrena Docker kontainer berri bat martxan jartzea izango da, kasu honetan 'ping-exporter' erabiliko dugu’ horrek segundo gutxitan pingak egitea eta datuak Grafana dashboard batean ikustea ahalbidetuko digu, karpeta sortzen dugu eta sartzen gara:

cd
mkdir ping-exporter
mkdir ping-exporter/config
cd ping-exporter

Docker compose konfigurazio fitxategia sortzen dugu kontainer honentzat 'nano docker-compose.yaml' erabiliz’

version: '3.9'
services:
    ping_exporter:
        image: czerwonk/ping_exporter
        container_name: ping_exporter
        volumes:
            - './config:/config:ro'
        ports:
            - '9427:9427'
        restart: unless-stopped
 networks:
           ping_exporter_default:

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

Non ping_exporter izeneko kontainer bat sortuko duen, ping_exporter irudiaren arabera, que montará la carpeta de config y expondrá las métricas de los pings en el puerto 9427TCP, particularidades mías que me gusta definir rangos de red específicos, baina ez badugu, omití las últimas 4 líneas.

El siguiente paso, será crear el fichero de configuración para ping_exporter, adibide hau uzten dizuet:

targets:
  - 8.8.8.8
  - 1.1.1.1
  - 192.168.0.1
  - 192.168.1.1

ping:
  interval: 5s
 timeout: 5s
 history-size: 42
  payload-size: 120

aukera:
  disableIPv6: true

Como veis, dentro de la sección 'targets’ podremos añadir las direcciones IP a las que queremos hacer pings. Así como los parámetros por defecto, como sea hacer los pings cada 5 segundo bakoitzean, definir un timeout, el tamaño… Antes de nada, que se me olvida, os dejo el enlace oficial del proyecto por si queréis tener más información.

Ya con esto lo tenemos, no queda más que desplegar el contenedor y que se ponga a funcionar, horretarako:

sudo docker compose up -d

Una vez desplegado el contenedor, podremos comprobar que ya estará exponiendo las métricas de los PINGs, horretarako, si nos conectamos desde un navegador con http a la dirección IP del Docker, al puerto del ping_exporter (9427tcp por defecto) y ponemos el final de la URL '/metrics'.

Ahora lo que nos queda, será indicarle a Prometheus que ingeste dichas métricas, horretarako, será tan sencillo como editar el fichero de configuración de Prometheus (adibidez: 'nano ~/prometheus/prometheus/prometheus.yml’ y le añadimos un job para que se conecte a la IP y puerto del ping_exporter:

...
  - job_name: ping-prometheus
 scrape_interval: 5s
    scrape_timeout: 5s
    static_configs:
      - targets:
        - DIRECCION_IP_DOCKER:PUERTO_PING_EXPORTER
...

Por defecto conectará cada 5 segundo bakoitzean.

Y sin olvidar reiniciar el contenedor de Prometheus para que recargue la configuración:

sudo docker restart prometheus

eta prest, ya lo tenemos!! ¿Qué nos queda? Pues verlo en Grafana 😊 . Para ello, aurreko dokumentuko pausoak betetzen ari garela ematen badugu ere, jadanik Grafana martxan dugu eta Prometheus-en aurkako data source-a sortuta dugu, ez da beste ezer ez, gure gustuko eta komunitateak egindako dashboard bat inportatu beharko dugun, adibidez, gomendatzen dizuet ID hau: 19761. Beraz, Grafana-n, ez da beste ezer ez, Dashboards-en klik egitea > Berria > Inportatu > ID-a itsatsi eta dashboard-a inportatuko da, Dashboard-ari izen bat jartzea eskatuko du eta Prometheus-en konektorea aukeratu behar da. Hori egiteko prest!

Hortik aurrera, dashboard-a gustura pertsonaliza dezakezue behar baduzue, edo behar duzun guztia. Baina hala ere, veréis que en un momento tenéis un dashboard donde será sencillo interpretar si alguna dirección IP ha tenido un problema durante algún periodo de tiempo particular, así como si se caen paquetes o queremos ver los tiempos de latencia, mejores tiempos, medias o peores resultados. Al gusto los colores que son simples pings.

En alguna ocasión, gracias a este tipo de información, hemos podido determinar cuando una WAN iba mal, o cuando hay un problema de electrónica de red, y a partir de un switch se caen paquetes, ya que puede que tenga algún problema/carga

Como diría Kristian Pielholf en Bricomanía… fácil, sencillo y para toda la familia 🤣, espero como siempre que os haya resultado interesante y con tips de estos y de otro tipo podamos conocer y dominar nuestras infraestructuras.

Os mando un abrazo, portaros bien 😉

Izenburuko mezuak

Egilea

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, ez zalantzarik izan nirekin harremanetan jartzeko, ahal duzun guztietan laguntzen saiatuko naiz, partekatu ahal dudan guztietan ;) . Dokumentuez gozatu!!!