En el post anterior vimos cómo desplegar la consola web (Functions UI) del proyecto fn project, en donde, entre otras cosas podemos:
1. Tener acceso al listado de APIs que nos ofrece la plataforma. APIs para obtener las aplicaciones desplegadas, borrarlas, actualizarlas. Algunas otras para listar las rutas. Otras mas para obtener los logs, etc
2. Tienes acceso al listado de aplicaciones y puedes probar las funciones que estén adentro de ella
3. Tienes acceso un dashboard que te permite saber:
a) Hay funciones encoladas
b) Cuántas funciones han sido ejecutadas exitosamente
c) Cuántas estásn ejecución o bien están fallidas
Este Dashboard y las capacidades del Functions UI seguramente serán mejoradas y extendidas en el futuro cercano, pero si uno quiere crear su propia consola de monitoreo, existe también ya un Dashboard que alguien creó usando Prometheus (prometheus.io) y Grafana (grafana.com).
Lo primero a entender es que el propio fn project tiene dentro de sus funciones, una que publica las métricas. Esta la encuentras aquí:
http://192.168.99.100:8080/metrics (cambia la IP por la de tu ambiente)
También existe una que te da las estadísticas que la Function UI publica en su tablero principal:
Básicamente es la información que ves en esta parte del Dashboard del Function UI:
Digamos que es lo mínimo y de una manera simplificada tienes esas estadísticas tanto disponibles a través de la URL mencionada, como graficadas en el dashboard.
Pero si quieres algo mas, entonces podemos usar el recurso /metrics y de ahí ya usar Prometheus y Grafana como medio de análisis( el primero ) y como medio para graficar (el segundo).
Prometheus es un sistema de monitoreo y alertamiento open source que Soundcloud construyó hace unos años. Algunas compañías y organizaciones lo han adoptado y su base de desarrolladores es bastante extensa actualmente. Hoy es un proyecto standalone y mantenido independientemente por cualquier compañía que lo use.
Grafana es igualmente un proyecto open source que te permite consultar, visualizar, alertar y entender tus métricas sin importar en dónde están almacenadas. Sus capacidades de graficación son bastante avanzadas y en cuanto su estética, simplemente es difícil que alguien lo supere.
El proyecto fn tiene ya un Dashboard construido con Grafana y analizado con Prometheus. Este último se alimentará de las métricas producidas por fn (a través de la URL mencionada anteriormente) y Grafana utlizará un datasource de tipo Prometheus para leer la información y graficarla.
Para poder tener acceso al dashboard, realiza lo siguiente:
1. Ejecuta prometheus, para eso podemos usar docker:
docker run --name=prometheus -d -p 9090:9090 --link functions prom/prometheus
El puerto en el que quedará escuchando será el 9090 y vamos a ligar este contenedor al de fn (functions). Esto lo vimos en el primer artículo: http://oracleradio.blogspot.mx/2017/12/primer-contacto-con-fn-project.html
2. Una vez que levantó, dirígete a su consola web:
3. Ahora ve a la opción de configuración (Menú Status->Configuration). Ahí verás la siguiente información:
El archivo contiene varias opciones, pero la que nos interesa es la que viene hasta abajo y que marco en rojo:
Ese es tu server de funciones (fn project server), por default la configuración apunta a localhost y puerto 9090.
Y la confguración que dice /metrics, es justamente para indicarle que de ahí quieres tomar la información. En nuestro caso ahí es donde se publica la información de las métricas de nuestras funciones.
Lo que vamos a hacer es actualizar ese archivo de configuración. Para hacerlo, desde docker vamos a hacer la edición del archivo. Este se encuentra en /etc/prometheus/prometheus.yml . Por lo que, para lograrlo, vamos a ejecutar el comando sed de UNIX:
docker exec prometheus sed -i -- 's/localhost:9090/192.168.99.100:8080/g' /etc/prometheus/prometheus.yml
Con esto vamos a cambiar la configuración original, para que apunte a nuestro fn server.
Una vez hecho esto, tenemos que actualizar la configuración. Yo he usado el comando:
killall .
Con esto la configuración se va a refrescar y quedará apuntando a tu server.
4. Ahora levanta Grafana, para eso también vamos a usar docker:
docker run --name=grafana -d -p 3000:3000 --link prometheus grafana/grafana
En este caso quedará escuchando en el puerto 3000 y ligado al contenedor que usamos para Prometheus.
Una vez que lo levantes, entra a su consola:
El usuario default es admin y password admin.
5. Ya que entres a Grafana vamos a crear un datasource:
Estando en la sección de datasources, agrega uno nuevo con los siguientes datos:
Guárdalo y Pruébalo, y saldrá esa franja verde diciendo que todo está bien.
6. Ahora vamos a impotar el Dashboard que fn project ya tiene creado para Grafana. Yo he hecho un fork de esto y lo puedes encontrar aquí: https://github.com/RCPDevChamp/fn/blob/master/examples/grafana/fn_grafana_dashboard.json
Ya que tengas el archivo que representa al Dashboard, ve a la sección de Dashboard e impórtalo.
Esto te llevará a la siguiente pantalla y ahí selecciona el fn_grafana_dashboard.json :
7. Ya que se haya importado, simplemente ábrelo:
8. Ahora simplemente ejecuta algunas de tus funciones y verás cómo se empieza a poblar la información:
La información se actualiza de manera automática y a partir del intervalo de tiempo que hayas configurado para que recupere las métricas.
Con esto habrás integrado tu fn project server con Grafana y con Prometheus.
Publicar un comentario