
Mètriques de Ping amb Prometheus i Grafana
Un post senzillesa, que jo crec que pot aportar en qualsevol àmbit, i no és més que llançar pings 😊😂, a veure em riu, però proporciona informació interessant en moltes ocasions. En aquest post veurem com llançar pings a adreces IP internes/externes que ens interessi conèixer la seva latència, si hi ha talls… i comprendre-ho visualment amb Grafana.
Si nos interesase conocer en tiempo real (a nivel de 1 segon, 5…) la conectividad a determinadas direcciones IP, para saber mínimamente cuando tengamos un problema de red, sea que no llegamos a Internet, un servicio que tengamos publicado, o unas direcciones IPs internas de delegaciones, datacenter… Direcciones IP de las cuales nos interesará conocer (i) si se caen paquetes y (ii) su tiempo de respuesta (para conocer latencias). En este post veremos cómo de una manera muy sencilla y rápida lo tenemos montado.
Como os comenté, este año pretendo enfatizar un poco este tipo de temas que todavía no hemos tocado mucho en el blog, sobre todo los que son sencillotes de desplegar y aplican a una mayoría 🙂 Así que empezamos! Dando por hecho que ya tenemos en nuestro entorno desplegado un Prometheus y un Grafana, podemos comenzar.
La forma más efectiva será desplegando otro contenedor de Docker, en este caso usaremos ‘ping-exporter’ que en un periquete nos permitirá hacer pings y visualizar sus datos en un dashboard de Grafana, creamos la carpeta y nos metemos:
cd
mkdir ping-exporter
mkdir ping-exporter/config
cd ping-exporter
Creamos el fichero de configuración de docker compose para este contenedor con ‘nano docker-compose.yaml’
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.XX.0/24 gateway: XX.XX.XX.XX.1
Donde creará un contenedor llamado ping_exporter, basado en la imagen de ping_exporter, 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, si no, omití las últimas 4 línies.
El següent pas, será crear el fichero de configuración para ping_exporter, os dejo este ejemplo:
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 options: disableIPv6: true
Com veieu, 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 segons, definir un timeout, el tamaño… Abans de res, que se me olvida, us deixo 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, per a això:
sudo docker compose up -d
Un cop desplegat el contenidor, podremos comprobar que ya estará exponiendo las métricas de los PINGs, per a això, si nos conectamos desde un navegador con http a la dirección IP del Docker, al puerto del ping_exporter (9427tcp per defecte) y ponemos el final de la URL ‘/metrics’.
Ahora lo que nos queda, será indicarle a Prometheus que ingeste dichas métricas, per a això, será tan sencillo como editar el fichero de configuración de Prometheus (per exemple: ‘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 segons.
Y sin olvidar reiniciar el contenedor de Prometheus para que recargue la configuración:
sudo docker restart prometheus
I llest, ya lo tenemos!! Què ens queda? Pues verlo en Grafana 😊. Per a això, dando por hecho que seguimos los pasos del documento anterior, tenemos ya desplegado Grafana y creado el data source contra Prometheus, pues no es más que tendremos que importar un dashboard que nos guste y haya hecho la comunidad, por ejemplo os recomiendo este ID: 19761. Así que en Grafana, no será más que darle en Dashboards > Nou > Import > Pegáis el ID y se importará el dashboard, os solicitará que le pongáis un nombre al Dashboard y escoger el conector de Prometheus. A partir de ahí listo!
A partir de ahí podéis personalizar el dashboard a vuestro gusto si lo consideráis, o lo que necesitéis. Pero vaya, 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.
Us mando una abraçada, portaros bien 😉