Integración con Service Now
Este plugin posibilita la creación, actualización y cierre automáticos de incidencias en Service Now desde Pandora FMS.
Introducción y funcionamiento
Este plugin posibilita la creación, actualización y cierre automáticos de incidencias en Service Now desde Pandora FMS.
Creación de incidencias
En caso de que se detecte un estado alterado (ej. Critical, Warning) para los módulos configurados en Pandora, se ejecutará el plugin de integración para crear una incidencia en Service Now, o actualizarla en el caso de que ya exista.
La información que se usa para crear las incidencias en Service Now es:
-
Nombre del activo que ha fallado. Debe coincidir con el nombre indicado en Service Now. Se recomienda utilizar el alias o el nombre del agente para esto..
-
En caso de que no se encuentre un activo válido con ese nombre, se generará la incidencia con un activo genérico “PandoraAPI”.
-
Título de la incidencia, indicando los nombres del agente y módulo afectados.
-
Mensaje descriptivo del error. Totalmente personalizable, pudiendo indicar, entre otros:
-
Nombre del agente.
-
Nombre e ID del módulo afectado.
-
Estado y valor del módulo afectado.
-
Fecha y hora del problema.
-
Indicación de que la incidencia se ha generado con un activo genérico, en caso de que así haya sido.
-
Otros datos necesarios para la generación de la incidencia, como:
-
La prioridad de la incidencia
-
El grupo de apertura
-
En su caso, datos requeridos por el propio SN, como el entorno, objeto y el tipo operacional.
Al crearse la incidencia, Pandora almacena el ID de la misma en el campo custom_id del módulo afectado para su uso posterior en actualizaciones o para su cierre. Esto implica que cada módulo podrá tener únicamente una incidencia abierta en Service Now.
Actualización de incidencias
En caso de actuar el plugin sobre un módulo que ya tiene una incidencia registrada en su custom_id, se toma dicha referencia para actualizar el ticket abierto, que puede:
-
Añadir una nota interna al ticket con los cambios relevantes en el módulo (por ejemplo, cambio de estado de Critical a Warning).
-
Cambiar la prioridad de la incidencia
Cierre de incidencias
También puede utilizarse la integración para el cierre de incidencias asociadas a módulos, siempre y cuando estos alberguen un ID de incidencia en su custom_id. En este caso el propósito de dicha ejecución es la validación de la incidencia en Service Now. Para ello el plugin:
-
Adquiere el ID de la incidencia abierta para el módulo en su campo custom_id.
-
Cierra remotamente la incidencia de Service now, añadiendo un epílogo de resolución para indicar que la incidencia se ha cerrado automáticamente desde Pandora FMS.
-
Vacía el custom_id del módulo afectado en Pandora FMS, por lo que un nuevo problema en dicho módulo iniciará el proceso desde el principio, con una nueva incidencia.
El flujo de creación y actualización de incidencias se muestra en el diagrama a continuación.
Configuración de la integración
Requisitos previos en Pandora FMS
Para que la integración funcione correctamente:
-
El servidor Pandora debe tener conectividad con la web del servidor Service Now.
-
La API de Service Now debe responder dentro de los tiempos máximos establecidos en el plugin (5 segundos).
-
Debe proveerse a Pandora FMS de un usuario en Service Now con permisos suficientes para crear y cerrar incidencias vía API.
El usuario de Pandora FMS utilizado debe tener, al menos, acceso AW (Agent Write) sobre el grupo de los agentes que vayan a disparar las alertas.
Opciones del plugin
-
Acción (--Action '<create/close>'): Con la opción “create”, el plugin crea o actualiza tickets. La opción “close” es para cerrarlos.
-
Activo (--Asset '<cmdb_asset>'): el nombre del activo que se usará en la incidencia. Si no se encuentra el activo, se utilizará uno genérico.
-
Agente (--Agent '<pandora_agent_name>'): El nombre del agente de Pandora que ha generado la alerta.
-
Módulo (--Module '<pandora_module_name>'): El nombre del módulo que ha generado la alerta.
-
ID del módulo (--IdModule '<pandora_module_id>'): La ID numérica del módulo que ha generado la incidencia.
-
URL de Service Now (--Host '<login_url>'): URL base de Service Now.
-
URL de la integración con incidencias de SN (--HostAPIUrl <sn_integration_url>): URL de la integración con incidencias de Service Now (por ejemplo /api/customer/incident_integration/ )
-
Tipo de autenticación (--Auth '<basic/oauth>'): En esta integración se ha usado “basic”, pero se incluye OAuth como opción.
-
Usuario de SN (--User '<sn_user>'): Usuario de acceso a Service Now.
-
Contraseña de SN (--Pass '<sn_pass>'): Contraseña de acceso a SN del usuario indicado en --User.
-
URL de Proxy (--ProxyUrl ‘<proxy_url>’): URL de acceso al proxy. Opcional.
-
Usuario de Proxy (--ProxyUser ‘<proxy_user>’): Usuario de acceso al proxy. Opcional.
-
Contraseña de Proxy (--ProxyPass ‘<proxy_pwd>’): Contraseña de acceso al proxy del usuario indicado en --ProxyUser. Opcional.
-
URL de la API de Pandora (--PandoraAPI '<pandora_api_url>'): URL de acceso a la API de Pandora FMS (ej. https://pandoraserver/pandora_console/include/api.php ).
-
Contraseña de la API de Pandora (--PandoraAPIPass '<pandora_apipass>').
-
Usuario de acceso a Pandora (--PandoraUser '<pandora_user>'): Usuario de acceso a Pandora FMS. Como mínimo debe tener permiso AW.
-
Contraseña de acceso a Pandora (--PandoraPass '<pandora_pass>'): Contraseña del usuario indicado en el token --PandoraUser.
-
Grupo de asignación (--Group '<ticket_assignment_group>'): Grupo de Service Now al que se asignará la incidencia creada.
-
Impacto (--Impact '<ticket_impact>'): Prioridad de la incidencia creada en Service Now.
-
Título (--Title '<ticket_short_description>'): Título de la incidencia en Service Now. Sólo es necesario para la apertura de incidencias.
-
Descripción (--Message '<ticket_description>'): Descripción de la incidencia en Service Now.
-
Estado de la incidencia (--State '<ticket_state>'): Código numérico del estado de la incidencia. Sólo es necesario para el cierre de incidencias.
-
Archivo de log (--Log '<log_file>'): Ruta completa al archivo de log en el que volcar los datos de ejecución del plugin. Opcional.
Ejemplo completo de llamada manual para apertura (o actualización) de incidencias:
pandora_sn_ticket.64 --Action 'create' --Auth 'basic' --Host 'https://my-service-now.com:1234' –-HostAPIUrl '/api/customer/incident_integration/' --PandoraAPI 'http://192.168.1.1/pandora_console/include/api.php' --User 'sn-user' --Pass 'sn-pass' --PandoraUser 'pandora_user' --PandoraPass 'pandora_pass' --PandoraAPIPass 'pandora_apipass' --Asset 'MYSERVER' --Agent 'MYSERVER' --Module 'CPU Load' --IdModule '12345' --Group 'infrastructure' --Impact '1' --Title 'Host MYSERVER is overloaded' --Message '2024/10/22 09:16:53 - Host MYSERVER CPU usage is too high - Data: 97% - Module status: critical' --Log '/tmp/pandora_sn.log'
Ejemplo completo de llamada manual para cierre de incidencias:
/pandora/pandora_sn_ticket.64 --Auth 'basic' --Host 'https://my-service-now.com:1234' –-HostAPIUrl '/api/customer/incident_integration/' --PandoraAPI 'http://192.168.1.1/pandora_console/include/api.php' --User 'sn-user' --Pass 'sn-pass' --PandoraUser 'pandora_user' --PandoraPass 'pandora_pass' --PandoraAPIPass 'pandora_apipass' --Module 'CPU Load' --IdModule '12345' --Message '2024/10/22 14:04:17 - Host MYSERVER CPU usage is OK now - Data: 24% - Module status: normal' --State '1' [--Log '/tmp/pandora_sn.log']
Ejemplos de alertas
A continuación se muestra un par de ejemplos de configuración de alertas: apertura y cierre de las incidencias, que estarán separados en dos comandos y dos acciones diferentes.
Con el fin de hacer la integración más flexible, se recomienda utilizar macros en los campos de los comandos que necesiten información dinámica. En este caso se utilizan las macros para alias de agente, módulo e ID de módulo (_agent_, _module_, _id_module_), así como macros específicas de alerta (_fieldx_) para facilitar la personalización de las acciones.
Creación / actualización de incidencias (prioridad alta)
Comando
Ejemplo de comando de alerta para crear incidencias
Acción
Ejemplo de acción de alerta para crear incidencias
Cierre de incidencias
Comando
Ejemplo de comando de alerta para cerrar incidencias
Acción
Ejemplo de acción de alerta para cerrar incidencias