Modificar los motores UDA, UDF y de flujo de trabajo
Visión general
Al crear reglas, Paragon Insights (anteriormente HealthBot) incluye la capacidad de ejecutar acciones definidas por el usuario (UDA) como parte de un desencadenador. Las UDA son esencialmente scripts de Python que se pueden ejecutar mediante una regla de Paragon Insights. Por ejemplo, puede configurar una regla con un desencadenador que reaccione a alguna interfaz crítica que deja de funcionar y responda al evento llamando a una función para enviar una alerta por SMS. Puede escribir la lógica para enviar el SMS en un script python UDA.
A partir de Paragon Insights versión 4.1.0, puede programar UDA y notificaciones. Esto resulta útil cuando se despliegan varias instancias paralelas de Paragon Insights en diferentes ubicaciones. Puede programar UDA para que se ejecuten alternativamente desde programadores UDA ubicados en diferentes regiones. En caso de que se produzca un error en un nodo, el programador de UDA que se ejecuta en una instancia paralela seguirá ejecutando las UDA y las notificaciones. Para obtener más información, consulte Habilitar el Programador UDA en una acción desencadenante.
Paragon Insights también incluye la capacidad de ejecutar funciones definidas por el usuario (UDF). Creadas como scripts de Python, las UDF proporcionan la capacidad de procesar datos de telemetría entrantes desde un dispositivo y almacenar el valor procesado en la base de datos de series temporales para ese dispositivo o grupo de dispositivos. Por ejemplo, el dispositivo puede estar enviando temperatura FPC en grados Celsius, pero desea procesarla para almacenarla como valores Fahrenheit en la base de datos.
A partir de HealthBot versión 3.2.0, el procesamiento de los campos UDF/UDA se ha movido a microservicios denominados granja UDF. Este enfoque permite a Paragon Insights procesar varios puntos de datos de varios dispositivos y campos al mismo tiempo (procesamiento paralelo). El resultado es un aumento de 4 a 5 veces en el rendimiento de procesamiento para UDA/UDF.
Aunque las UDA y las UDF proporcionan excelentes capacidades adicionales a Paragon Insights, puede haber casos en los que los scripts importen módulos de Python que no están incluidos en la instalación predeterminada de Paragon Insights. Dado esto, debe poder agregar módulos según sea necesario al motor que ejecuta estos scripts. Paragon Insights versión 2.1.0 y posteriores resuelven este desafío permitiéndole modificar los motores UDA, UDF y Workflow mediante un script bash que contiene las instrucciones para instalar cualquier dependencia.
Variables globales en scripts de Python
TAND ejecuta scripts de Python que usan variables globales. Las variables globales conservan un valor en varias UDF.
La siguiente es una función de ejemplo para calcular la suma acumulada y almacenar el valor en una variable sumglobal.
sum = 0 def cumulative_sum (a, b): global sum sum = sum + a + b return sum
El uso de variables globales en las FDU puede impedir que aproveche las ganancias en el rendimiento de procesamiento garantizadas por las granjas de UDF.
En lugar de variables globales, puede usar la construcción **kwargs
de Python para capturar valores que deben conservarse en diferentes funciones. Cuando Paragon Insights llama a una función (definida en una UDF), envía el nombre del tema, el nombre de la regla, el grupo de dispositivos, la hora puntual y el ID del dispositivo que se capturan mediante la construcción **kwargs
. En el caso de las UDA, Paragon Insights envía el nombre del tema y el nombre de la regla mientras se ejecuta el script de Python.
Junto con los valores de infraestructura, Paragon Insights también envía un parámetro llamado hb_store que **kwargs
recupera el último valor calculado para una variable.
Para ilustrar cómo funciona hb_store en el ejemplo de suma acumulativa:
def sum(a, b, **kwargs): if ’sum’ not in kwargs[hb_store]: kwargs[hb_store][’sum’] = 0 #if ’sum’ is not present in kwargs, declare the initial ’sum’ value as 0. kwargs[hb_store][’sum’] = kwargs[hb_store][’sum’] + a + b #Store cumulative addition value in ’sum’ return kwargs[hb_store][’sum’]
Cada vez que se llama a una función con el código anterior, realiza la adición del último valor almacenado en 'suma' con el valor de y el valor de a b. El nuevo valor de la operación de suma se muestra y almacena en 'suma'.
Cómo funciona
Puede modificar el motor UDA, UDF o Workflow mediante la CLI de Paragon Insights, como se muestra a continuación.
user@HB-server:~$ healthbot modify-uda-engine --help usage: healthbot modify-uda-engine [-h] (-s SCRIPT | --rollback) [--simulate] optional arguments: -h, --help show this help message and exit -s SCRIPT, --script SCRIPT Run script in UDA engine --rollback, -r Rollback UDA engine to original state --simulate Run script in simulated UDA engine and show output user@HB-server:~$ healthbot modify-udf-engine --help usage: healthbot modify-udf-engine [-h] (-s SCRIPT | --rollback) [--simulate] [--service SERVICE] optional arguments: -h, --help show this help message and exit -s SCRIPT, --script SCRIPT Run script in UDF engine --rollback, -r Rollback UDF engine to original state --simulate Run script in simulated UDF engine and show output --service SERVICE Modify specific service UDF root@davinci-master:/var/local/healthbot# healthbot modify-workflow-engine --help usage: healthbot.py modify-workflow-engine [-h] (-s SCRIPT | --rollback) [--simulate] optional arguments: -h, --help show this help message and exit -s SCRIPT, --script SCRIPT Run script in WORKFLOW engine --rollback, -r Rollback WORKFLOW engine to original state --simulate Run script in simulated WORKFLOW engine and show output
Los comandos tienen tres opciones principales:
Simular: pruebe un script (y vea su resultado) en el entorno simulado del motor UDA/UDF/Workflow sin afectar al sistema Paragon Insights en ejecución
Modificar: modifica el motor UDA/UDF/Workflow real mediante un script
Reversión: revertir a la versión original del motor UDA/UDF/Workflow
Notas de uso
El script bash se ejecutará en un contenedor que ejecute Ubuntu OS versión 16.04 o 18.04; Escriba el guión en consecuencia.
El script debe ser no interactivo; Cualquier pregunta debe ser respondida previamente. Por ejemplo, use la opción '-y' al instalar un paquete usando apt-get.
Si prefiere copiar los paquetes de origen de los módulos de dependencia en el servidor de Paragon Insights para que el motor pueda instalarlos manualmente en lugar de descargarlos de Internet, coloque los paquetes de origen necesarios en el directorio /var/local/healthbot/input. Luego, dentro de su script bash, apunte al directorio /input. Por ejemplo, para usar un archivo colocado en /var/local/healthbot/input/myfile.txt, establezca el script bash para acceder a él en /input/myfile.txt.
Modificar el motor UDA/UDF/Workflow más de una vez no es un procedimiento incremental; Utilice un nuevo script bash que incluya tanto las instrucciones originales como las nuevas, y vuelva a ejecutar el procedimiento de modificación con el nuevo script.
Las modificaciones UDA/UDF/Workflow son persistentes en todas las actualizaciones.
Configuración
Como práctica recomendada, se recomienda usar el siguiente flujo de trabajo:
Este enfoque de prácticas recomendadas garantiza que primero valide el script en el entorno simulado antes de modificar el motor real.
Los ejemplos siguientes utilizan el motor UDA; estos procedimientos se aplican por igual a los motores UDF y Workflow.
En el procedimiento siguiente se asume que el servidor de Paragon Insights está instalado, incluida la ejecución del sudo healthbot setup
comando.
SIMULAR
Utilice la función simular para probar el script bash en el entorno simulado, sin que ello afecte al sistema Paragon Insights en ejecución.
Para simular la modificación del motor UDA:
Escriba el comando
healthbot modify-uda-engine -s /<path>/<script-file> --simulate
.El script se ejecuta y la salida se muestra en la pantalla, como si hubiera ingresado los comandos de script usted mismo.
user@HB-server:~$ healthbot modify-uda-engine -s /var/tmp/test-script.sh --simulate Running /var/tmp/test-script.sh in simulated alerta engine.. Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB] ... Fetched 4296 kB in 15s (278 kB/s) Reading package lists... Building dependency tree... Reading state information… ...
MODIFICAR
Cuando esté satisfecho con los resultados de la simulación, continúe con el procedimiento de modificación real.
Para modificar el motor UDA:
Cargue el script bash deseado en el servidor de Paragon Insights.
Si el servidor de Paragon Insights está completamente en funcionamiento, emita el comando
healthbot stop -s alerta
para detener los servicios en ejecución.Ejecute el comando
healthbot modify-uda-engine -s /<path>/<script-file>
.user@HB-server:~$ healthbot modify-uda-engine -s /var/tmp/test-script.sh Running /var/tmp/test-script.sh in simulated alerta engine.. Success! See /tmp/.alerta_modification.log for logs Please restart alerta by issuing 'healthbot start --device-group healthbot -s alerta'
(Opcional) Como se indica en el resultado, puede comprobar el archivo de registro para comprobar que el script se cargó correctamente.
Reinicie el servicio de alerta con el comando
healthbot start -s alerta
.Una vez completado, verifique que el servicio de alerta esté en funcionamiento utilizando el comando
healthbot status
.Para comprobar que el motor UDA se ha actualizado, utilice el comando
healthbot version -s alerta
y compruebe que el contenedor healthot_alerta está utilizando la<version>-custom
etiqueta.user@HB-server:~$ healthbot version -s alerta {'alerta': 'healthbot_alerta:2.1.0-custom'}
El motor UDA ahora se está ejecutando con las dependencias instaladas según el script bash.
ROLLBACK
Si tiene la necesidad o el deseo de eliminar los cambios en el motor, puede revertir el motor a su estado original.
Para revertir el motor UDA:
Escriba el comando
healthbot modify-uda-engine --rollback
.user@HB-server:~$ healthbot modify-uda-engine --rollback Rolling back alerta engine to original state.. Successfully rolled back alerta engine Please restart alerta by issuing 'healthbot start --device-group healthbot -s alerta'
Tenga en cuenta que no es necesario reiniciar el servicio de alerta en este momento.
Una vez completado, verifique que el servicio de alerta esté en funcionamiento utilizando el comando
healthbot status
.Para comprobar que el motor UDA se ha revertido, utilice el comando
healthbot version -s alerta
y compruebe que el contenedor healthot_alerta está utilizando la<version>
etiqueta.user@HB-server:~$ healthbot version -s alerta {'alerta': 'healthbot_alerta:2.1.0'}
El motor UDA ahora se está ejecutando en su estado original, sin dependencias instaladas adicionales.
Habilitar el Programador UDA en la acción de activación
En Paragon Insights versión 4.1.0, puede programar UDA y notificaciones para que se ejecuten dentro de un intervalo de tiempo establecido. Para programar UDA, primero debe crear un programador discreto y, a continuación, vincular el programador en la página Acción desencadenante.
Solo puede vincular un programador de acciones desencadenantes a una instancia de Paragon Insights.
Para obtener más información sobre cómo crear un programador, consulte Generar informes.
El programador establecido en Acción de activación se aplica a todos los grupos de dispositivos y grupos de red. Puede deshabilitar la programación de UDA en la configuración del grupo de dispositivos o del grupo de red. Para obtener más información, consulte Administrar dispositivos, grupos de dispositivos y grupos de red.
Para habilitar un programador:
Vaya a Configuración > sistema.
Haga clic en la ficha Acción desencadenante.
Aparecerá la página Acción desencadenante.
Seleccione un perfil de programador que desee asociar a Trigger Action.
Realice una de las siguientes acciones:
Haga clic en Guardar para guardar el perfil del programador.
El perfil no se aplica a dispositivos ni a grupos de red. Esta opción le permite confirmar o revertir los cambios de configuración en la plataforma.
Haga clic en Save and Deploy (Guardar e implementar) para implementar la configuración en la instancia de Paragon Insights.
Las UDA y las notificaciones se generan en función del período de tiempo y el intervalo de tiempo configurados en el programador para la instancia de la aplicación.
No puede revertir los cambios de configuración aplicados a través de Guardar e implementar. Sin embargo. puede quitar el perfil del programador y repetir la opción Guardar e implementar para cancelar la programación de UDA.