Monitorización en Notebooks Engine
Esta funcionalidad incluida en la versión 5.3.0-Ultimate de Onesait Platform, la plataforma de Minsait, permite monitorizar el consumo individual y en conjunto de los Notebooks. De esta forma, nos va a ser posible conocer el estado de cada Notebook, ver los procesos en ejecución, controlar el estado, etc.
Modos de ejecución de Notebooks
Los Notebooks de Onesait Platform (basados en Apache Zeppelin) se ejecutan en base a intérpretes con diferentes configuraciones, de modo que un Notebook, puede ejecutar intérpretes en diferentes modos.
En la Plataforma se contemplan tres modos de ejecución de intérpretes en Notebooks:
- Shared: el proceso del intérprete, se comparte con todos los notebooks, de modo que no se pueden hacer ejecuciones paralelas de este intérprete en varios Notebook. El gestor es el mismo para ese intérprete. En estos casos, al no estar asociado el intérprete a un Notebook, no podrá saberse de forma sencilla cuál es el Notebook que ha ejecutado, ya que podrá ir saltando de unos a otros y tendrá que cruzarse la entidad de recursos con la entidad de ejecuciones para poderse conocer el detalle.
- Por Notebook:
- Scoped: el proceso del intérprete es común para todos los Notebooks por lo tanto es un gestor de varias ejecuciones.
- Isolated: el proceso del intérprete está separado también por Notebook con lo que el gestor sólo maneja un Notebook. En este caso, el intérprete estará asociado a un Notebook con lo que se podrá saber que Notebook es en todo momento por el nombre del intérprete. Si se quiere saber el detalle de párrafos habrá que cruzar la entidad de recursos con la de ejecuciones.
Además, existen los modos de ejecución en Kubernetes de modo que la ejecución de cada Notebook se delega en cada pod. El gestor se mantiene en este pod a modo de control de los diversos tipos de ejecuciones.
En base a esto, será el gestor (proceso RemoteInterpreterServer) el encargado de reportar la información de métricas y ejecuciones a la Plataforma, independientemente de donde se ejecute.
Métricas disponibles
Se han creado dos métricas, ambas complementarias:
Métricas de recursos
Esta monitorización se almacena en una entidad de tipo TimeSeries (notebooks_metrics_resources). A nivel intérprete, se sacan los procesos, tipo de intérprete (shared, scoped, isolated), si está asociado a un Notebook y el consumo de CPU y RAM.
Tiene un informe periódico (configurable a nivel pod del módulo de Notebooks), por defecto, estará a diez segundos.
En intérprete “shared“, será necesario cruzar con la entidad de monitorización para saber que Notebook ha consumido el intérprete.
Métricas de ejecución
Estas métricas (notebooks_metrics_executions) dan el detalle de ejecución de los párrafos que se ve el usuario, Notebook, párrafo, intérprete, etc.
Esta monitorización hará de “history“ de ejecuciones, se almacenará en una entidad propia y podrá ser desactivada si no se cree necesaria.
Con esta monitorización, cruzada con la anterior, podremos saber el consumo real por párrafo.
Informe de métricas
Para el informe de métricas existen dos métodos:
- Reporte push desde intérprete: a través de estas variables de entorno (incluidas en el zeppelin-env.sh) se configura el acceso, vía Digital Client, a dos entidades sobre las que se insertarán las métricas anteriores.
#### Monitor reporter zeppelin onesait platform ####
export ZEPPELIN_INTERPRETER_MONITORREPORTER_ENABLE=true
export ZEPPELIN_INTERPRETER_MONITORREPORTER_DIGITALCLIENT_HOST=https://development.onesaitplatform.com/iot-broker
export ZEPPELIN_INTERPRETER_MONITORREPORTER_DIGITALCLIENT_NAME=notebook_metrics_client
export ZEPPELIN_INTERPRETER_MONITORREPORTER_DIGITALCLIENT_INSTANCE=notebook_metrics_client_interpreter
export ZEPPELIN_INTERPRETER_MONITORREPORTER_DIGITALCLIENT_TOKEN=XXXXXXX
export ZEPPELIN_INTERPRETER_MONITORREPORTER_ENTITY_RESOURCES=notebook_metrics_resources
export ZEPPELIN_INTERPRETER_MONITORREPORTER_ENTITY_EXECUTIONS=notebook_metrics_executions
- Reporte desde API Rest de Zeppelin: a través de un nuevo API creado (tipo actuator) se puede conocer el consumo de todos los intérpretes (métrica de recursos). En este caso, no es posible obtener la métrica de ejecución al depender en si de la temporalidad de la misma.
Se disponen de varios endpoints:
- /api/interpreter/metrics/all: obtener todos los recursos de los intérpretes de Zeppelin así como su estado y consumo.
- /api/interpreter/metrics/running: obtener todos los recursos de los intérpretes arrancados de Zeppelin así como su estado y consumo.
- /api/interpreter/metrics/notebook/{notebookId}: obtener todos los recursos de los intérpretes de Zeppelin para el Notebook parametrizado así como su estado y consumo.
- /api/interpreter/metrics/running/notebook/{notebookId}: obtener todos los recursos de los intérpretes arrancados de Zeppelin para el Notebook parametrizado así como su estado y consumo.
- /api/interpreter/metrics/interpreter/{interpreterId}: obtener todos los recursos del intérprete por id (Python, Spark, onesaitplatform, etc.) así como su estado y consumo. https://mosbet.group/in-en/
Próximos pasos
Para futuras versiones tenemos pensado seguir trabajando en los siguientes puntos:
- Tener controles sobre los mismos en la Plataforma (interfaz de usuario de los Notebooks): poder usar los elementos anteriores en la interfaz de los Notebooks para conocer los activos, poder pararlos de forma sencilla, etc.
- Dashboard de visualización de métricas de forma sencilla.
- Limitar el uso de procesos de Notebooks tanto por RAM como por CPU.
Si estáis interesados en conocer más acerca de cómo monitorizamos los Notebooks en Onesait Platform, no dudéis en dejarnos un comentario o mandarnos un aviso en nuestro canal de soporte de Onesait Platform.
Imagen de cabecera: Henry & Co. en Unsplash