Netcool/Impact Versión 6.1.1.1 Guía de soluciones SC43-0010-00 Netcool/Impact Versión 6.1.1.1 Guía de soluciones SC43-0010-00 Nota Antes de utilizar esta información y el producto al que da soporte, lea la información del “Avisos”. Nota de edición Esta edición se aplica a la versión 6.1.1.1 de IBM Tivoli Netcool/Impact y a todos los releases y modificaciones subsiguientes hasta que se indique lo contrario en nuevas ediciones. © Copyright IBM Corporation 2006, 2014. Contenido Guía de soluciones . . . . . . . . . vii A quién va dirigida . . . . . . . . . . . vii Publicaciones. . . . . . . . . . . . . . vii Biblioteca de Netcool/Impact . . . . . . . vii Acceso a terminología en línea . . . . . . . vii Acceso a las publicaciones en línea . . . . . viii Cómo realizar el pedido de publicaciones . . . viii Accesibilidad . . . . . . . . . . . . . viii Formación técnica de Tivoli . . . . . . . . . ix Soporte para la resolución de problemas . . . . . ix Obtención de arreglos . . . . . . . . . . ix Recepción semanal de actualizaciones de soporte ix Cómo ponerse en contacto con el soporte técnico de software de IBM . . . . . . . . . . . x Convenios utilizados en esta publicación . . . . xii Convenios de tipo de letra . . . . . . . . xii Variables y vías de acceso dependientes del sistema operativo . . . . . . . . . . . xiii Capítulo 1. Visión general de las soluciones . . . . . . . . . . . . . 1 Componentes de una solución . . . . Modelos de datos. . . . . . . . Trabajar con servicios . . . . . . Políticas . . . . . . . . . . . Tipos de soluciones . . . . . . . . Solución de enriquecimiento de sucesos Solución X sucesos en Y tiempo . . . Solución de notificación de sucesos . . Solución de pasarela de sucesos . . . Configuración de una solución . . . . Creación de un modelo de datos. . . Configuración de servicios. . . . . Creación de políticas. . . . . . . Ejecución de una solución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 1 2 2 2 2 3 3 3 3 4 4 Capítulo 2. Trabajar con modelos de datos . . . . . . . . . . . . . . . . 5 Componentes del modelo de datos . . . Orígenes de datos . . . . . . . Configuración de tipos de datos . . . Cómo trabajar con elementos de datos . Utilización de enlaces . . . . . . Configurar un modelo de datos . . . . Arquitectura de un modelo de datos . . Ejemplos de un modelo de datos . . . Modelo de servicio empresarial . . . Modelo de web hosting. . . . . . Utilización de orígenes de datos . . . Visión general de orígenes de datos . Categorías de orígenes de datos . . Arquitectura de un origen de datos . Configuración de los orígenes de datos Utilización de tipos de datos . . . . Visión general de tipos de datos . . © Copyright IBM Corp. 2006, 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 . 5 . 5 . 6 . 6 . 6 . 7 . 7 . 8 . 9 . 10 . 10 . 11 . 12 . 13 . 14 . 14 Categorías de tipos de datos. . . . . . . . Campos de tipos de datos . . . . . . . . Claves de tipo de datos . . . . . . . . . Configuración de tipos de datos . . . . . . Almacenamiento en memoria caché de tipos de datos . . . . . . . . . . . . . . . Utilización de enlaces . . . . . . . . . . . Visión general de enlaces . . . . . . . . . Categorías de enlaces . . . . . . . . . . Enlaces estáticos . . . . . . . . . . . . Enlaces dinámicos . . . . . . . . . . . Configuración de enlaces estáticos . . . . . . Configuración de enlaces dinámicos . . . . . Utilización de orígenes de datos . . . . . . . Visión general de los orígenes de sucesos . . . Orígenes de sucesos del ObjectServer . . . . . Orígenes de sucesos que no son del ObjectServer Arquitectura de un origen de sucesos. . . . . Configuración de orígenes de sucesos ObjectServer . . . . . . . . . . . . . 14 17 19 19 35 37 37 37 37 37 39 39 40 40 40 41 41 42 Capítulo 3. Trabajar con servicios . . . 43 Visión general de servicios . . . . . . . . . Servicios predefinidos . . . . . . . . . . . Servicios definidos por el usuario . . . . . . . servicio del lector de sucesos de OMNIbus . . . . Arquitectura del lector de sucesos de OMINbus Proceso del lector de sucesos de OMNIbus . . . Configuración del lector de sucesos de OMNIbus Servicio de escucha de sucesos de base de datos . . Configuración del servidor de bases de datos . . Ventana de configuración del servicio de escucha de sucesos de base de datos . . . . . . . . Envío de sucesos de base de datos. . . . . . Utilización de políticas de suceso de base de datos . . . . . . . . . . . . . . . servicio de escucha de sucesos de OMNIbus . . . Configurar el servicio de escucha de sucesos de OMNIbus . . . . . . . . . . . . . . Cómo comprobar los registros de servicio del escucha de sucesos de OMNIbus . . . . . . Creación de desencadenantes . . . . . . . Utilización de la función ReturnEvent . . . . Suscripción a canales individuales . . . . . . Cómo controlar qué sucesos se envían de OMNIbus a Netcool/Impact mediante Spid . . Utilización de otros servicios . . . . . . . . Servicio activador de políticas . . . . . . . Servicio del registrador de políticas . . . . . Servicio de activador de políticas en hibernación Servicio del gestor de ejecución de mandatos . . Servicio del gestor de línea de mandatos . . . 43 43 44 44 45 45 46 53 53 57 58 71 73 74 74 74 76 76 77 78 78 78 81 81 82 iii Capítulo 4. Trabajar con políticas . . . 83 Comprensión de los componentes del lenguaje de políticas . . . . . . . . . . . . . . Registro de política . . . . . . . . . . . Contexto de política . . . . . . . . . . Ámbito de política . . . . . . . . . . . Impresión en el registro de política . . . . . Variables definidas por el usuario . . . . . . Matriz . . . . . . . . . . . . . . . Contexto . . . . . . . . . . . . . . Sentencias If . . . . . . . . . . . . . Sentencias While . . . . . . . . . . . Funciones definidas por el usuario . . . . . Planificación de políticas . . . . . . . . . Ejecución de políticas utilizando el activador de política . . . . . . . . . . . . . . Ejecución de políticas utilizando planificaciones . . . . . . . . . . . . 83 83 83 83 84 84 85 88 89 90 92 94 . 94 94 Capítulo 5. Gestión de sucesos . . . . 99 Visión general de sucesos. . . . . . . . . . 99 Contenedores de sucesos . . . . . . . . . . 99 Variable EventContainer . . . . . . . . . . 99 Variables de campos de suceso . . . . . . . . 99 Variables de estado de suceso . . . . . . . . 100 Variables de contenedor de sucesos definidas por el usuario . . . . . . . . . . . . . . . 100 Acceso a los campos de sucesos . . . . . . . 100 Utilización de la notación por puntos . . . . 100 Utilización de la notación @ . . . . . . . 100 Actualización de los campos de sucesos . . . . 100 Adición de entradas de diario a los sucesos . . . 101 Asignación de la variable JournalEntry . . . . 101 Envío de sucesos nuevos . . . . . . . . . 102 Supresión de sucesos . . . . . . . . . . . 103 Ejemplos de supresión de un suceso entrante del origen de sucesos. . . . . . . . . . 103 Capítulo 6. Gestión de datos . . . . . 105 Cómo trabajar con elementos de datos . . . . . Variables de campos . . . . . . . . . . Variables DataItem y DataItems . . . . . . Recuperación de datos por filtro . . . . . . . Cómo trabajar con filtros . . . . . . . . Recuperación de datos por filtro en una política Recuperación de datos por clave . . . . . . . Claves . . . . . . . . . . . . . . . Expresiones de clave . . . . . . . . . . Recuperación de datos por clave en una política Recuperación de datos por enlace . . . . . . Visión general de enlaces . . . . . . . . Recuperación de datos por enlace en una política . . . . . . . . . . . . . . Adición de datos . . . . . . . . . . . . Ejemplo de adición de un elemento de datos a un tipo de datos . . . . . . . . . . . Actualización de datos . . . . . . . . . . Ejemplo de actualización de elementos de datos individuales . . . . . . . . . . . . . Ejemplo de actualización de varios elementos de datos . . . . . . . . . . . . . . . iv Netcool/Impact: Guía de soluciones 105 105 105 105 106 109 111 111 111 112 113 113 113 115 115 116 116 117 Supresión de datos . . . . . . . . . Ejemplo de supresión de elementos de datos individuales . . . . . . . . . . . Ejemplo de supresión de elementos de datos filtro . . . . . . . . . . . . . Ejemplo de supresión de elementos de datos elemento . . . . . . . . . . . . Cómo llamar a funciones de base de datos . . . 117 . . por . . por . . . . 118 118 118 119 Capítulo 7. Gestión de las hibernaciones . . . . . . . . . . . 121 Visión general de las hibernaciones . . . . . . Hibernación de una política . . . . . . . . Ejemplos de hibernación de una política . . . Recuperación de hibernaciones . . . . . . . Recuperación de hibernaciones por búsqueda de clave de acción . . . . . . . . . . . . Recuperación de hibernaciones por filtro . . . Activación de una hibernación . . . . . . . Recuperación de la hibernación . . . . . . Llamada a ActivateHibernation . . . . . . Ejemplo . . . . . . . . . . . . . . Eliminación de hibernaciones . . . . . . . . 121 121 122 122 122 123 123 124 124 124 124 Capítulo 8. Envío de correo electrónico . . . . . . . . . . . . 125 Visión general de envío de correo electrónico. Enviando un correo electrónico . . . . . . . . 125 . 125 Capítulo 9. Configuración de mensajería instantánea . . . . . . . 127 Mensajería instantánea de Netcool/Impact . . Componentes de mensajería instantánea de Netcool/Impact . . . . . . . . . . . Proceso de la mensajería instantánea de Netcool/Impact . . . . . . . . . . . Escucha de mensajes . . . . . . . . . Envío de mensajes. . . . . . . . . . Configuración de la mensajería instantánea de Netcool/Impact . . . . . . . . . . . Utilización de políticas de mensajería instantánea Gestión de mensajes entrantes . . . . . . Envío de mensajes. . . . . . . . . . Ejemplo . . . . . . . . . . . . . . 127 . 127 . 127 . 127 . 128 . 128 128 . 128 . 128 . 129 Capítulo 10. Ejecución de mandatos externos . . . . . . . . . . . . . 131 Visión general de la ejecución de mandatos externos . . . . . . . . . . . . . . Gestión del servidor JRExec . . . . . . . Visión general del servidor JRExec . . . . Inicio del servidor JRExec . . . . . . . Detención del servidor JRExec . . . . . . Propiedades de configuración del servidor JRExec. . . . . . . . . . . . . . Registro cronológico del servidor JRExec . . Ejecutar de mandatos con el servidor JRExec Utilización de CommandResponse . . . . . . . . . . 131 131 131 131 132 . 132 . 133 133 . 133 Capítulo 11. Gestión de series y matrices . . . . . . . . . . . . . 135 Gestión de series . . . . . . . . . . . . Concatenación de series . . . . . . . . . Búsqueda de la longitud de una serie . . . . División de una serie en subseries . . . . . Extracción de una subserie de otra serie . . . Sustitución de una subserie en una serie . . . Eliminación de una subserie de una serie . . . Eliminación de los espacios en blanco iniciales y finales de una serie . . . . . . . . . . Modificación de las mayúsculas/minúsculas de una serie . . . . . . . . . . . . . . Cifrado y descifrado de series . . . . . . . Gestión de matrices . . . . . . . . . . . Búsqueda de la longitud de una matriz. . . . Búsqueda de valores distintivos en una matriz 135 135 135 136 136 137 137 137 138 138 139 139 139 Capítulo 12. Guía de aprendizaje de enriquecimiento de sucesos . . . . . 141 Visión general de tutorial . . . . . . . . Comprensión de la instalación de Netcool/Impact Comprensión de los datos empresariales . . . Análisis del flujo de trabajo . . . . . . . Creación del proyecto . . . . . . . . . Configuración del modelo de datos . . . . . Creación del origen de sucesos . . . . . Creación de los orígenes de datos . . . . Creación de los tipos de datos . . . . . . Creación de un enlace dinámico . . . . . Revisión del modelo de datos . . . . . . Configuración de servicios . . . . . . . . Creación del lector de sucesos . . . . . . Revisión de los servicios. . . . . . . . Escritura de la política . . . . . . . . . Búsqueda de información de dispositivo . . Búsqueda de departamentos de la empresa . Incremento de la gravedad de una alerta . . Revisión de la política . . . . . . . . Ejecución de la solución . . . . . . . . . . 141 141 . 142 . 142 . 143 . 143 . 144 . 144 . 145 . 146 . 147 . 147 . 147 . 148 . 148 . 148 . 149 . 150 . 151 . 151 Capítulo 13. Configurar la política de Impact PasstoTBSM . . . . . . . . 153 Visión general . . . . . . . . . . . . . Configuración . . . . . . . . . . . . . Exportación e importación del proyecto ForImpactMigration . . . . . . . . . . . Creación de una política. . . . . . . . . . Creación de un servicio activador de políticas . . Crear una plantilla y regla nueva para reunir datos sobre el clima . . . . . . . . . . . . . Crear la regla CityHumidity para la plantilla CityWeather . . . . . . . . . . . . . . Crear un servicio city. . . . . . . . . . . Personalizar un portlet del árbol de servicios . . . Añadir un portlet de servicios personalizados a una página de forma libre . . . . . . . . . 153 153 154 154 156 157 158 160 160 162 Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario . . . . . . . . . 165 Iniciación a Proveedor de datos de interfaz de usuario . . . . . . . . . . . . . . . Componentes de Proveedor de datos de interfaz de usuario . . . . . . . . . . . . . Configuración de la autenticación de usuario Tipos de datos y Proveedor de datos de interfaz de usuario . . . . . . . . . . . . . Integración de widgets de gráfica y Proveedor de datos de interfaz de usuario . . . . . . Nombres reservados para Proveedor de datos de interfaz de usuario . . . . . . . . . Pasos generales para integrar Proveedor de datos de interfaz de usuario y la consola . . . Acceso a datos desde políticas de Netcool/Impact Configuración de parámetros de usuario . . . Acceso a variables de objeto de Netcool/Impact en una política . . . . . . . . . . . . Acceso a tipos de datos generados por la función GetByFilter . . . . . . . . . . Acceso a tipos de datos mediante la función DirectSQL . . . . . . . . . . . . . Acceso a una matriz de objetos de Impact con Proveedor de datos de interfaz de usuario . . Proveedor de datos de interfaz de usuario e IBM Dashboard Application Services Hub . . . . . Filtrado de datos en la consola . . . . . . Integración del widget de árbol con un objeto de Impact o una matriz de objetos de Impact. . Integración de datos de una política con el widget de topología . . . . . . . . . . Visualización del estado y el porcentaje en un widget . . . . . . . . . . . . . . Visualización de datos del proveedor de datos de interfaz de usuario en la consola . . . . . . . Descripción general del escenario de ejemplo Visualización de datos de los paneles de instrumentos de autoservicio de Netcool/Impact . Instalación de widgets de paneles de instrumentos de autoservicio de Netcool/Impact Edición de un widget Formulario de entrada Edición de un widget Botón . . . . . . . Temas de referencia . . . . . . . . . . . Soporte de modelos de datos grandes para Proveedor de datos de interfaz de usuario . . Personalización de Proveedor de datos de interfaz de usuario . . . . . . . . . . Acceso a Netcool/Impact Proveedor de datos de interfaz de usuario . . . . . . . . . . Acceso a orígenes de datos desde un Proveedor de datos de interfaz de usuario . . . . . . Acceso a conjuntos de datos desde un Proveedor de datos de interfaz de usuario . . Problemas conocidos con JavaScript y Proveedor de datos de interfaz de usuario . . . . . . Ejecución de políticas y acceso a parámetros de salida . . . . . . . . . . . . . . . 221 Contenido v 165 166 168 168 169 169 170 173 173 174 175 176 178 180 180 181 184 186 189 189 209 209 211 212 214 214 217 218 219 219 220 URL de Proveedor de datos de interfaz de usuario . . . . . . . . . . . . . Configure la política MWM_Properties . . . Configurar las propiedades del servicio MWMActivator. . . . . . . . . . . Inicio de sesión en Maintenance Window Management . . . . . . . . . . . Acerca de las ventanas de mantenimiento de MWM . . . . . . . . . . . . . . . 221 Capítulo 15. Utilización de OSLC para Netcool/Impact . . . . . . . . . . . 223 Introducción a OSLC . . . . . . . . . . . Recursos e identificadores OSLC . . . . . . Roles de OSLC . . . . . . . . . . . . Utilización de tipos de datos y OSLC . . . . . Acceso a tipos de datos de Netcool/Impact como recursos OSLC . . . . . . . . . . Recuperación de recursos OSLC que representan elementos de datos de Netcool/Impact . . . . Visualización de resultados para identificador de clave exclusiva . . . . . . . . . . . Formas de recursos OSLC para tipos de datos Configuración de URI personalizados para tipos de datos y parámetros de salida de usuario . . Utilización del proveedor de servicios OSLC . . . Creación de proveedores de servicios OSLC en Netcool/Impact . . . . . . . . . . . Registro de proveedores de servicios OSLC en Netcool/Impact . . . . . . . . . . . Registro de recursos OSLC . . . . . . . . Utilización de políticas de Netcool/Impact y OSLC Acceso a parámetros de usuario de salida como recursos OSLC . . . . . . . . . . . . Configuración de URI personalizados para variables y resultados de política . . . . . . Cómo pasar valores de argumentos a una política . . . . . . . . . . . . . . Configuración de vistas previas contextuales para recursos OSLC . . . . . . . . . . . . . Propiedades de vista previa contextual para recursos OSLC . . . . . . . . . . . . Escenario de ejemplo: utilización de OSLC con políticas de Netcool/Impact . . . . . . . . Temas de consulta de OSLC . . . . . . . . URL de OSLC . . . . . . . . . . . . Paginación de OSLC . . . . . . . . . . Seguridad de OSLC . . . . . . . . . . Soporte de la sintaxis de consulta de OSLC . . Funciones de RDF . . . . . . . . . . . 224 225 225 226 226 228 229 229 232 234 234 236 238 247 247 258 259 260 262 263 265 265 265 266 267 273 Capítulo 16. Notificación de objetivo de nivel de servicio (SLO) . . . . . . 289 Instalación y habilitación del paquete Notificación de SLO . . . . . . . . . . . . . . Definición de definiciones de servicios . . . . Calendarios laborales . . . . . . . . . Registro de métricas de SLA . . . . . . Pasos de ejemplo de política de métrica . . . Utilización de la política de ejemplo getDataFromTBSMAvailability. . . . . . . Informes . . . . . . . . . . . . . . . . . . . 289 291 293 294 297 . 298 . 298 Capítulo 17. Configuración de Maintenance Window Management . . 299 Activación de MWM en un clúster de Netcool/Impact . . . . . . . . vi Netcool/Impact: Guía de soluciones . . . . 299 . 300 . 301 . 301 . 301 Capítulo 18. Configuración de la correlación y el aislamiento de sucesos. . . . . . . . . . . . . . 305 Visión general . . . . . . . . . . . . . Instalación de Netcool/Impact y la base de datos DB2 . . . . . . . . . . . . . . . . Instalación del kit de herramientas de la biblioteca de descubrimiento. . . . . . . . . . . . Políticas de Aislamiento y correlación de sucesos Vistas de operador de Aislamiento y correlación de sucesos . . . . . . . . . . . . . . . Configurar orígenes de datos de Aislamiento y correlación de sucesos . . . . . . . . . . Configurar tipos de datos de Aislamiento y correlación de sucesos . . . . . . . . . . Crear, editar y suprimir reglas de suceso . . . . Crear una regla de suceso . . . . . . . . Configurar WebGUI para añadir un punto de lanzamiento nuevo . . . . . . . . . . . Lanzar la página de análisis de Aislamiento y correlación de sucesos . . . . . . . . . . Visualizar el análisis de sucesos . . . . . . . 305 306 306 307 307 308 308 309 309 311 311 312 Apéndice. Accesibilidad . . . . . . . 313 Glosario A B C D E F G I. J. L M O P R S T V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 315 316 316 316 317 318 318 318 318 319 319 320 320 320 321 321 Índice. . . . . . . . . . . . . . . 323 Guía de soluciones La publicación Guía de soluciones contiene completa información sobre la utilización de las características de Netcool/Impact. A quién va dirigida Esta publicación se dirige a los usuarios responsables de crear modelos de datos de Netcool/Impact, escribir políticas de Netcool/Impact y ejecutar servicios de Netcool/Impact. Publicaciones En esta sección se listan las publicaciones de la biblioteca de Netcool/Impact y los documentos relacionados. En la sección se describe también cómo acceder a las publicaciones de Tivoli en línea y cómo solicitar publicaciones de Tivoli. Biblioteca de Netcool/Impact v Guía de inicio rápido, CF39PML Proporciona breve información para instalar y ejecutar Netcool/Impact por primera vez. v Guía de administración, SC43001400(SC14755900) Proporciona información sobre la instalación, ejecución y supervisión del producto. v Guía de la interfaz de usuario, SC43000900(SC27485100) Proporciona instrucciones para utilizar la interfaz gráfica de usuario (GUI). v Guía de consulta de políticas, SC43000800(SC14756100) Contiene una completa descripción e información de consulta del lenguaje de política de Impact (IPL). v Guía de consulta de DSA, SC43001500(SC27485200) Proporciona información sobre los adaptadores de orígenes de datos (DSA). v Guía de vistas de operador, SC43001600(SC27485300) Proporciona información sobre la creación de vistas de operador. v Guía de soluciones, SC43001000(SC14756000) Proporciona completa información sobre la utilización de las características de Netcool/Impact. v Guía de integraciones, SC43001200(SC27485400) Contiene instrucciones para la integración de Netcool/Impact con otro software de IBM® y de otros proveedores. v Guía de resolución de problemas, GC43001100(SC27485500) Proporciona información sobre la resolución de problemas de la instalación, personalización, inicio y mantenimiento de Netcool/Impact. Acceso a terminología en línea El sitio web de terminología de IBM unifica la terminología de las bibliotecas de productos de IBM en una única y cómo ubicación. Puede acceder al sitio web de terminología en la siguiente dirección web: © Copyright IBM Corp. 2006, 2014 vii http://www.ibm.com/software/globalization/terminology Acceso a las publicaciones en línea Hay publicaciones disponibles en las ubicaciones siguientes: v El DVD Inicio rápido contiene la Guía de inicio rápido. Consulte el archivo léame del DVD para ver instrucciones acerca de cómo acceder a la documentación. v Sitio web de Tivoli Information Center en http://publib.boulder.ibm.com/ infocenter/tivihelp/v8r1/topic/com.ibm.netcoolimpact.doc6.1.1/welcome.html. IBM publica las publicaciones para todos los productos Tivoli, cuando pasan a estar disponibles y siempre que se actualizan en el sitio web de Tivoli Information Center. Nota: Si imprime los documentos PDF en un papel que no sea de tamaño Letter, establezca la opción de la ventana Archivo → Imprimir que permite a Adobe Reader imprimir páginas con tamaño Letter en su papel local. v Tivoli Documentation Central en http://www.ibm.com/tivoli/documentation. Puede acceder a publicaciones de las versiones anteriores y actuales de Netcool/Impact desde Tivoli Documentation Central. v La wiki de Netcool/Impact contiene más documentos breves, y hay información adicional en https://www.ibm.com/developerworks/mydeveloperworks/wikis/ home?lang=en#/wiki/Tivoli%20Netcool%20Impact. Cómo realizar el pedido de publicaciones Puede realizar el pedido de muchas publicaciones de Tivoli en línea en http://www.elink.ibmlink.ibm.com/publications/servlet/pbi.wss. También puede realizar el pedido telefónicamente llamando a uno de estos números: v En los Estados Unidos: 800-879-2755 v En Canadá: 800-426-4968 En otros países, póngase en contacto con el representante de cuentas de software de IBM para solicitar publicaciones de Tivoli. Para localizar el número de teléfono de su representante local, realice los pasos siguientes: 1. Vaya a http://www.elink.ibmlink.ibm.com/publications/servlet/pbi.wss. 2. Seleccione el país en la lista y pulse Go. 3. Pulse About this site en el panel principal para ver una página de información que incluye el número de teléfono de su representante local. Accesibilidad Las características de accesibilidad ayudan a los usuarios con discapacidades físicas, como por ejemplo movilidad restringida o visión limitada, a utilizar satisfactoriamente los productos de software. Con este producto, puede utilizar tecnologías de asistencia para oír y navegar por la interfaz. También puede utilizar el teclado en lugar del ratón para utilizar todas las características de la interfaz gráfica de usuario. Para obtener información adicional, consulte “Accesibilidad”, en la página 313. viii Netcool/Impact: Guía de soluciones Formación técnica de Tivoli Para obtener información sobre la formación técnica de Tivoli, consulte el siguiente sitio web sobre formación de IBM Tivoli en http://www.ibm.com/software/tivoli/ education. Soporte para la resolución de problemas Si tiene un problema con el software de IBM, deseará resolverlo rápidamente. En esta sección se describen las opciones siguientes para obtener soporte para los productos de software de IBM: v “Obtención de arreglos” v “Recepción semanal de actualizaciones de soporte” v “Cómo ponerse en contacto con el soporte técnico de software de IBM” en la página x Obtención de arreglos Es posible que haya un arreglo del producto disponible para solucionar el problema. Para determinar los arreglos que están disponibles para el producto de software Tivoli, siga estos pasos: 1. Vaya al sitio web de soporte técnico de IBM en http://www.ibm.com/ software/support. 2. Vaya hasta la página Descargas. 3. Siga las instrucciones para ubicar el arreglo que desea descargar. 4. Si no hay ninguna cabecera Download para el producto, proporcione un término de búsqueda, código de error o número de informe autorizado de análisis de programa en el campo de búsqueda. Para obtener más información sobre los tipos de arreglos disponibles, consulte la publicación IBM Software Support Handbook en http://www14.software.ibm.com/ webapp/set2/sas/f/handbook/home.html. Recepción semanal de actualizaciones de soporte Para recibir semanalmente notificaciones de correo electrónico sobre arreglos y otras noticias de soporte de software, siga estos pasos: 1. Vaya al sitio web de soporte técnico de IBM en http://www.ibm.com/ software/support. 2. Pulse el botón My IBM de la barra de herramientas. Pulse My technical support. 3. Si ya se ha registrado en My technical support, inicie sesión y salte al paso siguiente. Si no se ha registrado, pulse register now. Complete el formulario de registro utilizando la dirección de correo electrónico como su ID de IBM y pulse Submit. 4. Se visualizará el separador Edit profile. 5. En la primera lista, en Products, seleccione Software. En la segunda lista, seleccione una categoría de productos (por ejemplo, Systems and Asset Management). En la tercera lista, seleccione una subcategoría de productos (por ejemplo, Application Performance & Availability o Systems Performance). Se visualizará una lista de productos aplicables. 6. Seleccione los productos para los que desea recibir actualizaciones. 7. Pulse Add products. Guía de soluciones ix 8. Después de seleccionar todos los productos que le interesen, pulse Subscribe to email en el separador Edit profile. 9. En la lista Documents, seleccione Software. 10. Seleccione Please send these documents by weekly email. 11. Actualice la dirección de correo electrónico según sea necesario. 12. Seleccione los tipos de documentos que desea recibir. 13. Pulse Update. Si experimenta problemas con la característica My technical support, puede obtener ayuda de una de las maneras siguientes: En línea Envíe un mensaje de correo electrónico a [email protected], describiendo el problema. Mediante teléfono Llame al 1-800-IBM-4You (1-800-426-4409). World Wide Registration Help desk Para obtener información de soporte en todo el mundo, compruebe los detalles del enlace siguiente: https://www.ibm.com/account/profile/ us?page=reghelpdesk Cómo ponerse en contacto con el soporte técnico de software de IBM Antes de ponerse en contacto con el soporte técnico de software de IBM, la empresa debe tener un contrato de mantenimiento de software de IBM activo y el usuario debe estar autorizado a enviar problemas a IBM. El tipo de contrato de mantenimiento de software que necesite dependerá del tipo de producto que tenga: v Para productos de software distribuido de IBM (incluidos, pero sin limitarse a, productos Tivoli, Lotus y Rational, y productos DB2 y WebSphere que se ejecuten en los sistemas operativos Windows o UNIX), regístrese en Passport Advantage de una de las maneras siguientes: En línea Vaya al sitio web de Passport Advantage en http://www-306.ibm.com/ software/howtobuy/passportadvantage/pao_customers.htm. Mediante teléfono Para obtener el número de teléfono para llamar en su país, vaya al sitio web de IBM Worldwide IBM Registration Helpdesk en https://www.ibm.com/account/profile/us?page=reghelpdesk. v Para clientes con contratos de suscripción y soporte (S & S), vaya al sitio web de solicitud de servicio de software en https://techsupport.services.ibm.com/ssr/ login. v Para clientes con IBMLink, CATIA, Linux, OS/390, iSeries, pSeries, zSeries, y otros contratos de soporte, vaya al sitio Web de línea de soporte técnico de IBM en http://www.ibm.com/services/us/index.wss/so/its/a1000030/dt006. v Para los productos de software IBM eServer (que incluyen, pero no se limitan a, los productos DB2 y WebSphere que se ejecutan en entornos zSeries, pSeries y iSeries), puede adquirir un acuerdo de mantenimiento de software trabajando directamente con un representante de ventas de IBM o un IBM Business Partner. Para obtener más información sobre el soporte para los productos de software x Netcool/Impact: Guía de soluciones eServer, vaya al sitio web de IBM Technical Support Advantage en http://www.ibm.com/servers/eserver/techsupport.html. Si no está seguro del tipo de contrato de mantenimiento de software que necesita, llame a 1-800-IBMSERV (1-800-426-7378) en los Estados Unidos. Para otros países, vaya a la página de contactos de la publicación IBM Software Support Handbook en la Web en http://www14.software.ibm.com/webapp/set2/sas/f/handbook/ home.html y pulse el nombre de su región geográfica para ver los números de teléfono de las personas que proporcionan soporte técnico en su ubicación. Para ponerse en contacto con el soporte técnico de software de IBM, siga estos pasos: 1. “Determinación del impacto empresarial” 2. “Descripción de problemas y recopilación de información” 3. “Envío de problemas” en la página xii Determinación del impacto empresarial Cuando notifique un problema a IBM, se le solicitará que proporcione un nivel de gravedad. Utilice los criterios siguientes para comprender y evaluar el impacto empresarial del problema que está notificando: Gravedad 1 El problema tiene un impacto empresarial crítico. No puede utilizar el programa, lo que produce un impacto crítico en las operaciones. Esta condición requiere una solución inmediata. Gravedad 2 El problema tiene un impacto empresarial considerable. El programa se puede utilizar, pero está gravemente limitado. Gravedad 3 El problema tiene cierto impacto empresarial. El programa se puede utilizar, pero las características menos importantes (que no son críticas para las operaciones) no están disponibles. Gravedad 4 El problema tiene un impacto empresarial mínimo. El problema no tiene gran impacto sobre las operaciones, o se ha implementado una solución alternativa al problema. Descripción de problemas y recopilación de información Cuando describa un problema a IBM, sea lo más específico posible. Incluya toda la información previa relevante de forma que los especialistas de soporte técnico de software de IBM puedan ayudarle a solucionar el problema eficazmente. Para ahorrar tiempo, conozca las respuestas a estas preguntas: v ¿Qué versiones de software estaba ejecutando cuando se produjo el problema? v ¿Tiene registros, rastreos y mensajes relacionados con los síntomas del problema? Es probable que el soporte técnico de software de IBM le solicite esta información. v ¿Puede recrear el problema? Si es así, ¿qué pasos se han realizado para recrear el problema? v ¿Ha realizado cambios en el sistema? Por ejemplo, ¿ha realizado cambios en el hardware, sistema operativo, software de red, etc.? v ¿Utiliza actualmente un método alternativo para el problema? Si es así, esté preparado para explicar el método alternativo al notificar el problema. Guía de soluciones xi Envío de problemas Puede enviar el problema al soporte técnico de software de IBM de una de estas dos maneras: En línea Pulse Submit and track problems en el sitio del Soporte de IBM en http://www.ibm.com/software/support/probsub.html. Especifique la información en el formulario de envío de problemas adecuado. Mediante teléfono Para ver el número de teléfono al que llamar en su país, vaya a la página de contactos del manual IBM Software Support Handbook enhttp://www14.software.ibm.com/webapp/set2/sas/f/handbook/ home.html y pulse el nombre de su región geográfica. Si el problema que envía corresponde a un defecto de software o a documentación inexacta o que falta, el soporte técnico de software de IBM crea un informe autorizado de análisis de programa (APAR). El APAR describe detalladamente el problema. Siempre que es posible, el soporte técnico de software de IBM proporciona un método alternativo que se puede implementar hasta que se resuelva el APAR y se proporcione un arreglo. IBM publica diariamente los APAR resueltos en el sitio web de soporte de software, de forma que otros usuarios que experimenten el mismo problema puedan beneficiarse de la misma resolución. Convenios utilizados en esta publicación Esta publicación utiliza diversos convenios para términos y acciones especiales, mandatos y vías de acceso dependientes del sistema operativo y gráficos de margen. Convenios de tipo de letra En esta publicación se utilizan los siguientes convenios de tipo de letra: Negrita v Mandatos en minúsculas y los mandatos en mayúsculas y minúsculas que son de otra forma difíciles de distinguir del texto circundante. v Controles de interfaz (recuadros de selección, pulsadores, botones de selección, selectores cíclicos, campos, carpetas, iconos, recuadros de lista, elementos de recuadros de lista, listas de varias columnas, contenedores, selecciones de menú, nombres de menú, separadores, hojas de propiedades), etiquetas (por ejemplo, Sugerencia: y Consideraciones del sistema operativo:) v Palabras clave y parámetros en texto Cursiva v Citas (ejemplos: títulos de publicaciones, disquetes y CD v Palabras definidas en texto (por ejemplo: una línea no conmutada se denomina una línea punto a punto) v Énfasis de palabras y letras (palabras como palabras, por ejemplo: "Utilizar la palabra que para introducir una cláusula restrictiva."; letras como letras, por ejemplo: "La dirección LUN debe empezar por la letra L.") v Nuevos términos en texto (excepción de una lista de definiciones): una vista es un marco de un espacio de trabajo que contiene datos. xii Netcool/Impact: Guía de soluciones v Variables y valores que debe proporcionar: ... donde mi_nombre representa.... Monoespaciado v Ejemplos y ejemplos de código v Nombres de archivo, palabras clave de programación y otros elementos difíciles de distinguir del texto circundante v Texto de mensajes y solicitudes dirigidas al usuario v Texto que el usuario debe especificar v Valores de argumentos u opciones de mandato Variables y vías de acceso dependientes del sistema operativo En esta publicación se utiliza el convenio de UNIX para especificar variables de entorno y para la notación de directorios. Cuando utilice la línea de mandatos de Windows, sustituya $variable por % variable% para las variables de entorno y sustituya cada barra inclinada (/) por una barra inclinada invertida (\) en las vías de acceso de directorio. Los nombres de las variables de entorno no son siempre los mismos en los entornos Windows y UNIX. Por ejemplo, %TEMP% en entornos Windows es equivalente a $TMPDIR en entornos UNIX. Nota: Si utiliza el shell bash en un sistema Windows, puede utilizar los convenios de UNIX. Guía de soluciones xiii xiv Netcool/Impact: Guía de soluciones Capítulo 1. Visión general de las soluciones Una solución es una implementación de Netcool/Impact que proporciona un tipo específico de funcionalidad de gestión de sucesos. Esta sección contiene información sobre cómo crear orígenes de datos, tipos de datos, servicios y políticas para configurar la gestión de sucesos. También contiene completa información sobre las siguientes características de Netcool/Impact: v Enriquecimiento de sucesos v Netcool/Impact que utiliza la función PassToTBSM para mostrar datos en TBSM recopilados de una política de Netcool/Impact. v Netcool/Impact como Proveedor de datos de interfaz de usuario . v Visualización de datos de Proveedor de datos de interfaz de usuario en IBM Dashboard Application Services Hub en Jazz for Service Management. v Visualización de datos de los paneles de instrumentos de autoservicio de Netcool/Impact en IBM Dashboard Application Services Hub en Jazz for Service Management. v Utilización de OSLC e Netcool/Impact. v Configuración de Notificación de objetivo de nivel de servicio (SLO). v Configuración de Aislamiento y correlación de sucesos. v Configuración de Maintenance Window Management. v Notificación de SLO. Componentes de una solución Los componentes de una solución son un modelo de datos, servicios y políticas. La mayoría de soluciones utilizan una combinación de estos tres componentes. Modelos de datos Un modelo de datos es un modelo del negocio y de los metadatos utilizados en una solución Netcool/Impact. Un modelo de datos consta de orígenes de datos, tipos de datos, elementos de datos, enlaces y orígenes de sucesos. Trabajar con servicios Los servicios son componentes ejecutables del Servidor Impact que puede iniciar y detener desde la GUI y la CLI. Políticas Una política es un conjunto de operaciones que desea que realice Netcool/Impact. Estas operaciones se especifican utilizando uno de los siguientes lenguajes de programación, JavaScript o un lenguaje denominado lenguaje de políticas de Netcool/Impact o IPL. © Copyright IBM Corp. 2006, 2014 1 Tipos de soluciones Netcool/Impact permite implementar una amplia gama de tipos de soluciones. Algunos tipos comunes son enriquecimiento de sucesos, X sucesos en Y tiempo, notificación de sucesos y pasarelas de sucesos. Solución de enriquecimiento de sucesos El enriquecimiento de suceso es el proceso mediante el cual Netcool/Impact supervisa los sucesos nuevos de un origen de sucesos, busca información relacionada con ellos en un origen de sucesos externo y luego les añade la información. Una solución de enriquecimiento de sucesos consta de los componentes siguientes: v Un modelo de datos que representa los datos que desea agregar a los sucesos v Un servicio de lector de sucesos de OMNIbus que supervisa el origen de sucesos v Una o más políticas de enriquecimiento de sucesos que buscan información relacionada con los sucesos y les agrega la información Para ver una solución de enriquecimiento de sucesos de ejemplo, consulte el Capítulo 12, “Guía de aprendizaje de enriquecimiento de sucesos”, en la página 141. Solución X sucesos en Y tiempo X sucesos en Y tiempo es el proceso en el que Netcool/Impact supervisa un origen de sucesos para localizar los grupos de sucesos que se producen conjuntamente y realiza la acción adecuada en función de la información de sucesos. Una solución X sucesos en Y tiempo consta de los componentes siguientes: v Un modelo de datos que contiene los tipos de datos internos utilizados para almacenar metadatos para la solución v Un servicio de lector de sucesos de OMNIbus que supervisa el origen de sucesos v El servicio de activador de políticas en hibernación, que activa las políticas en hibernación a intervalos planificados v Una o más políticas que comprueban el origen de sucesos para ver si se produce un grupo especificado de sucesos y a continuación realiza la acción adecuada Para obtener información sobre cómo eliminar los archivos desasociados que resultan de la política XinY, consulte la Guía de resolución de problemas. Solución de notificación de sucesos La notificación de suceso es el proceso mediante el cual Netcool/Impact supervisa los sucesos nuevos de un origen de sucesos y luego informa a un administrador o a los usuarios cuando se produce un suceso o una combinación de sucesos determinada. La notificación de sucesos a menudo forma parte de una automatización de gestión de sucesos más complicada que incluye aspectos de funcionalidad de Netcool/Impact. Una solución de notificación de sucesos tiene los componentes siguientes: v Un servicio de lector de sucesos que supervisa el origen de sucesos 2 Netcool/Impact: Guía de soluciones v Un servicio de remitente de correo electrónico que envía correo electrónico a los administradores o usuarios o al servidor JRExec utilizado para iniciar un programa de notificación externo v Una o más políticas que realizan la notificación de sucesos Solución de pasarela de sucesos Una pasarela de sucesos es una implementación de Netcool/Impact en la que envía información de sucesos del ObjectServer a una aplicación de terceros para su proceso. Una solución de pasarela de sucesos tiene los componentes siguientes v Un modelo de datos que incluye un origen de datos y un tipo de datos que representa la aplicación de terceros v Un servicio de lector de sucesos de OMNIbus que supervisa el origen de sucesos v Una o más políticas que envían información de sucesos a la aplicación de terceros Configuración de una solución Para configurar una solución de Netcool/Impact, debe crear un modelo de datos, configurar servicios y crear políticas. Para obtener más información, consulte “Configuración de una solución”. Creación de un modelo de datos Aunque es posible diseñar una solución que no requiere un modelo de datos, casi todos los usos de Netcool/Impact requieren la capacidad de gestionar datos internos o externos de alguna clase. Para crear un modelo de datos, cree un origen de datos para cada origen del mundo real de datos que desee utilizar.A continuación, debe crear un tipo de datos para cada elemento estructural (por ejemplo, una tabla de base de datos) que contenga los datos que desea utilizar. De forma opcional, puede crear enlaces dinámicos entre tipos de datos o enlaces estáticos entre elementos de datos que faciliten atravesar los datos programáticamente desde una política. Configuración de servicios Distintos tipos de soluciones requieren distintos conjuntos de servicios, pero la mayoría de soluciones requieren un lector de sucesos de OMNIbus. Las soluciones que utilizan hibernación también requieren el activador de políticas en hibernación. Las soluciones que reciben o envían correo electrónico requieren un servicio de lector de correo electrónico y de remitente de correo electrónico. La primera categoría de servicios corresponde a servicios incorporados como el procesador de sucesos y el gestor de servicios de línea de mandatos. Puede tener solo una instancia de este tipo de servicio en Netcool/Impact. La segunda categoría corresponde a servicios como el lector de sucesos o el activador de política. Puede crear y configurar varias instancias de este tipo de servicio. Capítulo 1. Visión general de las soluciones 3 Creación de políticas Las políticas que crea en Servidor GUI contienen un editor de políticas, un comprobador de sintaxis y otras herramientas que necesita para escribir, ejecutar, probar y depurar las políticas. Para obtener más información, consulte el Capítulo 4, “Trabajar con políticas”, en la página 83. Ejecución de una solución Para iniciar una solución, debe iniciar cada uno de los componentes del servicio. Inicie los componentes en el orden siguiente: v Activador de políticas en hibernación, remitente de correo electrónico y gestor de ejecución de mandatos. v Procesador de sucesos v Lector de sucesos, escucha de sucesos, lector de correo electrónico o activador de política Puede configurar los servicios para que se ejecuten automáticamente durante el inicio, o bien puede iniciarlos manualmente utilizando la GUI y CLI de Tivoli Integrated Portal. De manera predeterminada, los servicios que se ejecutan automáticamente durante el inicio se ejecutan en el orden correcto.Si todos los demás servicios ya están en ejecución, al iniciarse servicios como el procesador de sucesos que desencadena políticas se inicia realmente la solución. Para detener una solución, debe detener los servicios, como el procesador de sucesos, que desencadenen las políticas. 4 Netcool/Impact: Guía de soluciones Capítulo 2. Trabajar con modelos de datos Un modelo de datos se configura una vez, al diseñar por primera vez la solución de Netcool/Impact. Una vez hecho esto, no necesitará gestionar activamente el modelo de datos a menos que cambie el diseño de la solución. Puede ver, crear, editar y suprimir los componentes de un modelo de datos en Servidor GUI. Componentes del modelo de datos Un modelo de datos está formado por componentes que representan orígenes del mundo real de datos y los datos reales que contienen. Orígenes de datos Los orígenes de datos son elementos del modelo de datos que representan orígenes de datos del mundo real en su entorno. Tipos de datos Los tipos de datos son elementos de un modelo de datos que representan conjuntos de datos almacenados en un origen de datos. Elementos de datos Los elementos de datos son elementos del modelo de datos que representa unidades reales de datos almacenadas en un origen de datos. Enlaces Los enlaces son elementos del modelo de datos que definen relaciones entre tipos de datos y elementos de datos. Orígenes de sucesos Los orígenes de sucesos son tipos especiales de orígenes de datos. Cada origen de suceso representa una aplicación que almacena y gestiona sucesos. Orígenes de datos Los orígenes de datos son elementos del modelo de datos que representan orígenes de datos del mundo real en su entorno. Estos orígenes de datos incluyen bases de datos SQL de terceros, servidores de directorios LDAP u otras aplicaciones como, por ejemplo, sistemas de mensajería y aplicaciones de inventario de red. Los orígenes de datos contienen la información que necesita para conectar con los datos externos. Cree un origen de datos para cada origen físico de datos que desee utilizar en su solución Netcool/Impact. Cuando crea un tipo de datos de Mediador, LDAP o base de datos SQL, lo asocia con el origen de datos que ha creado. Todos los tipos de datos asociados se listarán bajo el origen de datos en el panel de tareas Orígenes de datos y tipos. Configuración de tipos de datos Los tipos de datos son elementos de un modelo de datos que representan conjuntos de datos almacenados en un origen de datos. © Copyright IBM Corp. 2006, 2014 5 La estructura de los tipos de datos depende de la categoría de origen de datos en la que se almacenen. Por ejemplo, si el origen de datos es una base de datos SQL, cada tipo de datos corresponde a una tabla de base de datos. Si el origen de datos es un servidor LDAP, cada tipo de datos corresponde a un tipo de nodo de la jerarquía de LDAP. Cómo trabajar con elementos de datos Los elementos de datos son elementos del modelo de datos que representa unidades reales de datos almacenadas en un origen de datos. La estructura de esta unidad de datos depende de la categoría del origen de datos asociada. Por ejemplo, si el origen de datos es un tipo de datos de la base de datos SQL, cada elemento de datos corresponde a una fila de una tabla de la base de datos. Si el origen de datos es un servidor LDAP, cada elemento de datos corresponde a un nodo de la jerarquía de LDAP. Utilización de enlaces Los enlaces son elementos del modelo de datos que definen relaciones entre tipos de datos y elementos de datos. Los enlaces estáticos definen relaciones entre los elementos de datos, y los enlaces dinámicos definen relaciones entre los tipos de datos. Los enlaces son un componente opcional del modelo de datos de Netcool/Impact. Configurar un modelo de datos Para configurar un modelo de datos, en primer lugar debe determinar los datos que necesita utilizar en la solución y dónde se almacenan estos datos. A continuación, debe crear un origen de datos para cada origen de datos del mundo real y crear un tipo de datos para cada elemento estructural que contenga los datos que necesite. Procedimiento 1. Crear orígenes de datos Identifique los datos que desea utilizar y dónde se almacenan. A continuación, cree un origen de datos para cada origen de datos real. Por ejemplo, si los datos se almacenan en una base de datos MySQL y en un servidor LDAP, debe crear un origen de datos MySQL y uno LDAP. 2. Crear tipos de datos Después de configurar los orígenes de datos, debe crear los tipos de datos necesarios. Debe crear un tipo de datos para cada tabla de base de datos (u otro elemento de datos, dependiendo del origen de datos) que contenga datos que desea utilizar. Por ejemplo, si los datos se almacenan en dos tablas de una base de datos Oracle, debe crear un tipo de datos para cada tabla. 3. Opcional: Crear elementos de datos Para la mayoría de tipos de datos, la mejor práctica es crear elementos de datos utilizando las herramientas nativas proporcionadas por el origen de datos. Por ejemplo, si el origen de datos es una base de datos Oracle, puede añadir los datos necesarios a la base de datos mediante las herramientas nativas de Oracle. Si el origen de datos es el repositorio de datos internos, debe crear elementos de datos mediante la GUI. 4. Opcional: Crear enlaces 6 Netcool/Impact: Guía de soluciones Después de crear los tipos de datos, puede definir relaciones de enlace entre ellos mediante enlaces dinámicos. También puede definir relaciones de enlace entre datos internos mediante enlaces estáticos. Esto hace más sencillo atravesar los datos programáticamente desde dentro de una política. El uso de enlaces es opcional. 5. Crear orígenes de sucesos La mayoría de sucesos de proceso se recuperan de un ObjectServer de Netcool/OMNIbus. El ObjectServer se representa en el modelo de datos como un origen de sucesos. Arquitectura de un modelo de datos Este diagrama muestra la relación entre orígenes de datos, tipos de datos y elementos de datos en una solución de Netcool/Impact. Figura 1. Arquitectura de un modelo de datos Ejemplos de un modelo de datos Los ejemplos que se proporcionan aquí son, muy probablemente, versiones en escala reducida de modelos de datos que es posible que necesite implementar en el mundo real. Están diseñados para darle una idea de cómo funcionan conjuntamente todas las diversas partes de un modelo de datos, más que para proporcionar una muestra realista de cada uno de los tipos de datos a los que puede acceder con Netcool/Impact. Capítulo 2. Trabajar con modelos de datos 7 Si no está seguro de la definición de los conceptos principales mencionados en estos ejemplos, como por ejemplo los orígenes de datos o los tipos de datos, puede ir a los cuatro capítulos siguientes de esta publicación, que proporcionan información detallada sobre los diversos componentes del modelo de datos. Cuando haya entendido mejor estos conceptos, puede volver a esta sección. Modelo de servicio empresarial El modelo de servicio empresarial es un modelo de datos diseñado para utilizar en un entorno de servicio empresarial. El entorno de servicio empresarial es uno de los escenarios de gestión de red más habituales de la suite de productos de Netcool. Mientras que el modelo de datos que se describe en esta sección es relativamente simple, los entornos empresariales del mundo real pueden con frecuencia rivalizar en complejidad con entornos pequeños de telecomunicaciones o de proveedores de servicio de Internet. El objetivo del modelo de datos de este ejemplo es proporcionar la manera de acceder a un conjunto de datos empresariales que se han recopilado y almacenado anteriormente en una base de datos externa. Los datos empresariales contienen información sobre los usuarios, departamentos, ubicaciones y servidores de la empresa. Si está diseñando una completa solución de para este entorno, debe conectarse a este modelo de datos desde las políticas cada vez que necesite acceder a estos datos. El entorno de servicio empresarial de este ejemplo consta de 125 usuarios en cinco departamentos empresariales, divididos en tres ubicaciones. Cada usuario del entorno tiene un sistema de escritorio y lo utiliza para conectarse al servidor de archivos y a un servidor de correo electrónico. La solución propuesta para gestionar este entorno está diseñada para supervisar el tiempo de actividad de los servidores de archivos y de los servidores de correo electrónico. Cuando un servidor de archivos deja de estar activo, se notifica al administrador de servicio mediante un correo electrónico con un mensaje de solicitud de servicio. También describe qué unidades empresariales reciben servicio del servidor de archivos y envía un correo electrónico a cada usuario de la unidad con un mensaje de interrupción de servicio. Cuando un servicio de correo electrónico deja de estar activo, se notifica al administrador de servicio mediante un dispositivo buscapersonas. Todos los datos que utiliza esta solución se almacenan en una base de datos MySQL. Esta base de datos consta de seis tablas, denominadas USER, ADMIN, DEPT, LOC, FILESERVER y EMAILSERVER. Elementos de modelo de servicio empresarial El modelo de servicio empresarial consta de orígenes de datos, tipos de datos, elementos de datos, enlaces y orígenes de sucesos. Orígenes de datos Debido a que es necesario que todos los datos se almacenen en una única base de datos MySQL, este modelo de datos sólo requiere un origen de datos. Para este ejemplo, el origen de datos se denomina MYSQL_01. Tipos de datos Cada tabla de la base de datos MYSQL se representa mediante un único tipo de datos de base de datos SQL. Para este ejemplo, los tipos de datos 8 Netcool/Impact: Guía de soluciones se denominan User, Admin, Department, Location, Fileserver y Emailserver. En este caso, los nombres de los tipos de datos son los mismos que los nombres de tabla. Elementos de datos Debido a que los datos se almacenan en una base de datos SQL, los elementos de datos del modelo son filas de las tablas de base de datos correspondientes. Enlaces La relación entre los tipos de datos de este modelo de datos se puede describir como un conjunto de los enlaces dinámicos siguientes: v User -> Department v User -> Location v Location -> Emailserver v v v v Department -> Fileserver Emailserver -> Location. Fileserver -> Departments Administrator -> Location Orígenes de sucesos Este modelo de datos tiene un único origen de datos, que representa el ObjectServer de Netcool/OMNIbus que almacena sucesos relacionados con actividad del entorno. Modelo de web hosting El modelo de alojamiento web es un modelo de datos diseñado para su utilización en un entorno de web hosting. El entorno de web hosting es otro escenario de gestión de red habitual de la suite de productos de Netcool. La gestión de un entorno de web hosting presenta algunos retos exclusivos. Esto se debe a que requiere que se asegure de que los servicios estén activos, como por ejemplo la disponibilidad de los sitios web de los clientes, que constan de grupos de dispositivos de hardware y software interrelacionados, además de asegurarse de que los propios dispositivos estén en funcionamiento. Como con los otros ejemplos de este capítulo, el entorno de hosting de servicios web que se describe aquí es una muestra en escala reducida de lo que podría encontrar en el mundo real. El objetivo del modelo de datos de este ejemplo es proporcionar la manera de acceder a un conjunto de datos de gestión de servicios e inventario de dispositivos que genera y actualiza en tiempo real un conjunto de aplicaciones de terceros. Estos datos contienen información sobre el hardware de servidor ubicado en bastidores en el recurso de hosting y diversos otros datos que describen cómo se instalan y configuran en el hardware instancias de software de servidor HTTP y de correo electrónico. Como en el ejemplo anterior, las políticas desarrolladas para utilizar con esta información se conectarían a este modelo de datos cada vez que necesitaran acceder a estos datos. El modelo de hosting de servicios web de este ejemplo consta de 10 clústeres de servidores HTTP y de tres clústeres de servidores de correo electrónico, repartidos en 20 máquinas. Cada clúster HTTP y cada clúster de correo electrónico consta de un servidor primario y de un servidor de copia de seguridad. Este entorno da servicio a 15 clientes cuyo uso se distribuye entre uno o más clústeres dependiendo de su acuerdo de servicio. Capítulo 2. Trabajar con modelos de datos 9 La solución que gestiona este entorno está diseñada para supervisar el tiempo de actividad de los servicios HTTP y de correo electrónico. Cuando se produce un problema con uno de estos servicios, ésta determina la identidad del clúster que causa el problema y el hardware donde están instaladas las instancias de servidor del componente. A continuación, modifica los datos originales de la alerta en Netcool/OMNIbus para que reflejen esta información. Esta solución determina también el cliente que está asociado con la anomalía de servicio y establece la prioridad de la alerta para que refleje el acuerdo de servicio del cliente. Los datos de este modelo se almacenan en dos bases de datos Oracle distintas. La primera base de datos tiene cinco tablas denominadas Node, HTTPInstance, HTTPCluster, EmailInstance y EmailCluster. La segunda base de datos es una base de datos de servicios al cliente que tiene, entre otras tablas, una denominada Customer. Elementos de modelo de web hosting El modelo de web hosting consta de orígenes de datos, tipos de datos, elementos de datos y enlaces. Orígenes de datos Debido a que este modelo tiene dos orígenes de datos en el mundo real, requiere dos orígenes de datos. Para este ejemplo, estos orígenes se denominan ORACLE_01 y ORACLE_02. Tipos de datos Cada tabla de la base de datos MySQL se representa mediante un único tipo de datos de base de datos SQL. Para este ejemplo, los tipos de datos se denominan Node, HTTPInstance, HTTPCluster, EmailInstance, EmailCluster y Customer. Elementos de datos Debido a que los datos se almacenan en una base de datos SQL, los elementos de datos del modelo son filas de las tablas de base de datos correspondientes. Enlaces La relación entre los tipos de datos de este modelo de datos se puede describir como un conjunto de los enlaces dinámicos siguientes: v HTTPServer -> Node v EmailServer -> Node v HTTPServer -> HTTPCluster v EmailServer -> EmailCluster v Customer -> HTTPCluster v Customer -> HTTPServer Utilización de orígenes de datos Un origen de datos es un elemento del modelo de datos que representa un origen de datos del mundo real en su entorno. Visión general de orígenes de datos Los orígenes de datos proporcionan una capa abstracta entre Netcool/Impact y los orígenes de datos reales. 10 Netcool/Impact: Guía de soluciones Internamente, los orígenes de datos proporcionan información de conexión y de otro tipo que Netcool/Impact utiliza para acceder a los datos. Al crear un modelo de datos, debe crear un origen de datos para cada origen de datos real al que desea acceder en una política. El repositorio de datos interno de Netcool/Impact también puede utilizarse como origen de datos. Categorías de orígenes de datos Netcool/Impact da soporte a cuatro categorías de orígenes de datos. Orígenes de datos de base de datos SQL Un origen de datos de base de datos SQL representa una base de datos relacional u otro origen de datos al que pueda accederse mediante un DSA de bases de datos SQL. Orígenes de datos LDAP El origen de datos Lightweight Directory Access Protocol (LDAP) representa los servidores de directorios LDAP. Orígenes de datos de mediador Los orígenes de datos de mediador representan aplicaciones de terceros que están integradas en Netcool/Impact mediante el Mediador de DSA. Orígenes de datos JMS Un origen de datos Java™ Message Service (JMS) resume la información necesaria para conectarse a una implementación JMS. Orígenes de datos de base de datos SQL Un origen de datos de base de datos SQL representa una base de datos relacional u otro origen de datos al que pueda accederse mediante un DSA de bases de datos SQL. Se da soporte a una amplia variedad de bases de datos relacionales comerciales, como por ejemplo Oracle, Sybase y Microsoft SQL Server. Además, también se da soporta a bases de datos gratuitas como por ejemplo MySQL y PostgreSQL. El ObjectServer de Netcool/OMNIbus también está soportado como origen de datos SQL. Las propiedades de configuración del origen de datos especifican información de conexión para el origen de datos subyacente. Algunos ejemplos de orígenes de datos de base de datos SQL son: v Una base de datos DB2 v Una base de datos MySQL v Una aplicación que suministra una interfaz ODBC genérica v Un archivo de texto delimitado por caracteres Puede crear orígenes de datos de base de datos SQL mediante la GUI. Debe crear un origen de datos de este tipo para cada base de datos a la que desee acceder.Al crear un origen de datos de base de datos SQL, debe especificar propiedades tales como el nombre de host y el puerto donde se ejecuta el servidor de bases de datos y el nombre de la base de datos. Para el DSA de archivo plano y otros DSA de bases de datos SQL que no se conectan a un servidor de bases de datos, debe especificar propiedades de configuración adicionales. Tenga en cuenta que los orígenes de datos de base de datos SQL están asociados con bases de datos en lugar de servidores de bases de datos. Por ejemplo, un Capítulo 2. Trabajar con modelos de datos 11 servidor de bases de datos Oracle puede alojar una o una docena de bases de datos individuales. Cada origen de datos de base de datos SQL puede asociarse con una base de datos, y sólo con una. Orígenes de datos LDAP El origen de datos Lightweight Directory Access Protocol (LDAP) representa los servidores de directorios LDAP. Netcool/Impact da soporte a los servidores OpenLDAP y Microsoft Active Directory. Puede crear orígenes de datos LDAP en Servidor GUI. Debe crear un origen de datos para cada servidor LDAP al que desee acceder. Las propiedades de configuración para el origen de datos especifican información de conexión para el servidor LDAP, así como cualquier información de seguridad o autenticación necesaria. Orígenes de datos de mediador Los orígenes de datos de mediador representan aplicaciones de terceros que están integradas en Netcool/Impact mediante el Mediador de DSA. Estos orígenes de datos incluyen una amplia variedad de software de inventario de red, suministro de red y sistemas de mensajería. Además, también pueden utilizarse proveedores de datos XML y SNMP como orígenes de datos de mediador. Generalmente los orígenes de datos de DSA de mediador y sus tipos de datos se instalan cuando instala un DSA de mediador. Los orígenes de datos están disponibles para visualizarlos y, si es necesario, para crearlos o editarlos. Atención: para obtener una lista completa de los orígenes de datos soportados, consulte al gestor de la cuenta IBM. Repositorio de datos interno El repositorio de datos interno es un origen de datos incorporado de Netcool/Impact. La responsabilidad principal del repositorio de datos interno es almacenar datos del sistema. Restricción: Debe utilizar tipos de datos internos sólo para fines de pruebas y de demostración de Netcool/Impact, o para tareas de poca carga. Origen de datos JMS Un origen de datos Java Message Service (JMS) resume la información necesaria para conectarse a una implementación JMS. Este origen de datos lo utiliza el servicio JMSMessageListener, las funciones SendJMSMessage y ReceiveJMSMessage. Arquitectura de un origen de datos En este diagrama se muestra la relación entre Netcool/Impact, orígenes de datos y el origen de datos del mundo real en el entorno. 12 Netcool/Impact: Guía de soluciones Figura 2. Arquitectura de un origen de datos Configuración de los orígenes de datos Al crear un modelo de datos de Netcool/Impact, debe configurar un origen de datos para cada origen de datos del mundo real del entorno. Puede configurar los orígenes de datos utilizando la GUI de Tivoli Integrated Portal. Para configurar un origen de datos, debe obtener la información de conexión para el origen de datos y a continuación utilizar la interfaz gráfica de usuario para crear y configurar el origen de datos. Obtención de la información de conexión Antes de crear un origen de sucesos, debe obtener la información de conexión para la aplicación subyacente. La información de conexión que necesita varía en función del tipo de origen de sucesos. Para la mayoría de orígenes de datos de base de datos SQL, esta información es el nombre de host y el puerto donde se ejecuta la aplicación, y un nombre de usuario y contraseña válidos. Para los orígenes de datos de mediador y LDAP, consulte la publicación Guía de consulta de DSA para obtener la información de conexión necesaria. Cuando tenga la información de conexión para la aplicación subyacente, puede crear el origen de datos mediante la interfaz gráfica de usuario de Tivoli Integrated Portal. Capítulo 2. Trabajar con modelos de datos 13 Crear orígenes de datos Utilice este procedimiento para crear un origen de datos definido por el usuario. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Desde las listas Clúster y Proyecto, seleccione el clúster y el proyecto que desee utilizar. 3. En el separador Modelo de datos, pulse el icono Origen de datos nuevo de la barra de herramientas. Seleccione una plantilla para el origen de datos que desea crear. Se abrirá el separador correspondiente al origen de datos. 4. Complete la información necesaria y pulse Guardar para crear el origen de datos. Utilización de tipos de datos Los tipos de datos son un elemento del modelo de datos que representa unidades reales de datos almacenadas en un origen de datos. Visión general de tipos de datos Los tipos de datos describen el contenido y la estructura de los datos de la tabla de orígenes de datos y resumen esta información, de modo que se pueda acceder a la misma durante la ejecución de una política. Los tipos de datos proporcionan una capa abstracta entre Netcool/Impact y el conjunto de datos asociado de un origen de datos. Los tipos de datos se utilizan para localizar los datos que se desea utilizar en una política. Para cada tabla u otra estructura de datos del origen de datos que contenga información que desee utilizar en una política, debe crear un tipo de datos. Para poder utilizar un origen de datos en las políticas, debe crear los tipos de datos para el mismo. Atención: Algunos tipos de datos de sistema no se visualizan en la GUI. Puede gestionar estos tipos de datos utilizando la interfaz de línea de mandatos (CLI). La estructura de los datos almacenados en un origen de datos depende de la categoría del origen de datos donde están almacenados. Por ejemplo, si el origen de datos es una base de datos SQL, cada tipo de datos corresponde a una tabla de base de datos. Si el origen de datos es un servidor LDAP, cada tipo de datos corresponde a un tipo de nodo de la jerarquía de LDAP. Una definición de tipo de datos contiene la información siguiente: v El nombre de la tabla subyacente u otro elemento estructural del origen de datos v Una lista de campos que representan columnas de la tabla subyacente u otro elemento estructural (por ejemplo, un tipo de atributo de un nodo LDAP) v Valores que definen el modo en que Netcool/Impact almacena en memoria caché los datos del tipo de datos. Categorías de tipos de datos Netcool/Impact da soporte a cuatro categorías de tipos de datos. 14 Netcool/Impact: Guía de soluciones Tipos de datos de base de datos SQL Los tipos de datos de base de datos SQL representan datos almacenados en una tabla de base de datos. Tipos de datos LDAP Los tipos de datos LDAP representan datos almacenados en un determinado nivel de contexto base de una jerarquía de LDAP. Tipos de datos de mediador Los tipos de datos de mediador representan datos gestionados por aplicaciones de terceros, como por ejemplo un gestor de inventario de red o un servicio de mensajería. Tipos de datos internos Utilice los tipos de datos almacenados para modelar los datos que no existen o que no se pueden crear fácilmente en las bases de datos externas. Tipos de datos de base de datos SQL Los tipos de datos de base de datos SQL representan datos almacenados en una tabla de base de datos. Cada elemento de datos en un tipo de datos de base de datos SQL corresponde a una fila de la tabla. Cada campo del elemento de datos corresponde a una columna. Un tipo de datos de la base de datos SQL puede incluir todas las columnas de una tabla o sólo un subconjunto de las columnas. Tipos de datos LDAP Los tipos de datos LDAP representan datos almacenados en un determinado nivel de contexto base de una jerarquía de LDAP. Cada elemento de datos en un tipo de datos LDAP corresponde a un nodo LDAP que existe en ese nivel, y cada campo corresponde a un atributo LDAP. Los tipos de datos LDAP son de sólo lectura, lo cual significa que no se puede añadir, actualizar o suprimir elementos de datos en un tipo de datos LDAP. Tipos de datos de mediador Los tipos de datos de mediador representan datos gestionados por aplicaciones de terceros, como por ejemplo un gestor de inventario de red o un servicio de mensajería. Normalmente, los tipos de datos de mediador no representan datos almacenados en tablas de bases de datos. Más bien, representan conjuntos de datos almacenados y proporcionados por el origen de datos en otros diversos formatos. Por ejemplo, conjuntos de objetos de datos o como mensajes. Estos tipos de datos suelen crearse utilizando scripts u otras herramientas proporcionadas por el DSA correspondiente. Para obtener más información sobre los tipos de datos de mediador utilizados con un DSA concreto, consulte la publicación Guía de consulta de DSA. Tipos de datos internos Utilice los tipos de datos almacenados para modelar los datos que no existen o que no se pueden crear fácilmente en las bases de datos externas. Esto incluye los datos de trabajo que utilizan las políticas, que pueden contener copias de datos externos o valores de datos intermedios. Estos datos se almacenan directamente en un repositorio de datos y puede utilizarlos como un origen de datos. Para crear y acceder a estos datos puede definir tipos de datos internos. Capítulo 2. Trabajar con modelos de datos 15 Netcool/Impact proporciona las categorías siguientes de tipos de datos internos: Tipos de datos del sistema Los tipos de datos del sistema se utilizan para almacenar y gestionar datos que utiliza internamente Netcool/Impact. Tipos de datos internos predefinidos Los tipos de datos predefinidos son tipos de datos especiales que se almacenan en el repositorio global. Tipos de datos internos definidos por el usuario Los tipos de datos internos que se crean son tipos de datos internos definidos por el usuario. Restricción: Utilice tipos de datos internos sólo para realizar prototipos y demostraciones de Netcool/Impact. Tipos de datos del sistema: Los tipos de datos del sistema se utilizan para almacenar y gestionar datos que utiliza internamente Netcool/Impact.. Estos tipos incluyen Política, Servicio e Hibernación. En la mayoría de los casos, no se accede directamente a los datos de estos tipos de datos. Sin embargo, en algunas ocasiones puede utilizarlos en una política. Por ejemplo, cuando inicia una política desde otra política o trabaja con políticas en hibernación. Tipos de datos internos predefinidos: Los tipos de datos predefinidos son tipos de datos especiales que se almacenan en el repositorio global. Se proporcionan los tipos de datos internos predefinidos siguientes: v Schedule v TimeRangeGroup v Document Puede utilizar los tipos de datos Schedule y TimeRangeGroup para gestionar la planificación de Netcool/Impact. Puede utilizar el tipo de datos Document para almacenar información sobre los URL ubicados en la intranet. Los tipos de datos predefinidos son tipos de datos especiales que se almacenan en Netcool/Impact. Los tipos de datos predefinidos no editables son: v TimeRangeGroup v LinkType v Hibernation Los tipos de datos predefinidos siguientes pueden editarse para añadir campos nuevos: v Schedule v Document v FailedEvent v ITNM 16 Netcool/Impact: Guía de soluciones Restricción: No se puede editar o suprimir los campos existentes.No se puede suprimir ninguno de los tipos de datos predefinidos. Tipos de datos internos definidos por el usuario: Los tipos de datos internos que se crean son tipos de datos internos definidos por el usuario. Los elementos de datos en estos tipos de datos se almacenan en el repositorio de datos interno en lugar de en un origen de datos externo. Los tipos de datos definidos por el usuario funcionan de forma muy similar a los tipos de datos de base de datos SQL. Debe utilizar tipos de datos internos sólo para fines de pruebas y de demostración de Netcool/Impact, o para tareas de poca carga. Los tipos de datos internos definidos por el usuario son más lentos que los tipos de datos de base de datos SQL externos. Campos de tipos de datos Un campo es una unidad de datos tal como está definida en un tipo de datos. La naturaleza de esta unidad de datos depende de la categoría del tipo de datos que la contiene. Si el tipo de datos corresponde a una tabla en una base de datos SQL, cada campo corresponde a una columna de la tabla. Si el tipo de datos corresponde a un contexto base de un servidor LDAP, cada campo corresponde a un tipo de atributo LDAP. Cuando configura un tipo de datos de base de datos SQL, Netcool/Impact llena automáticamente los campos a partir de la tabla subyacente. Para otros tipos de datos, debe definir manualmente los campos al crear el tipo de datos. ID El atributo ID especifica el nombre interno utilizado por Netcool/Impact para hacer referencia al campo. De manera predeterminada, el ID de campo es el mismo que el nombre del elemento de datos que corresponde al campo del origen de datos subyacente. Por ejemplo, si el tipo de datos es un tipo de datos de base de datos SQL, el campo subyacente corresponde a una columna de la tabla. De manera predeterminada, el ID de campo es el mismo que el nombre de columna en la base de datos. Puede cambiar el ID de campo a cualquier otro nombre exclusivo. Por ejemplo, si los nombres de columna subyacentes en el origen de datos no son legibles por personas, o son difíciles de especificar y recuperar, puede utilizar el campo de ID para proporcionar un alias para el campo que sea más fácil de utilizar. El ID de campo sustituye los atributos de nombre real y nombre de visualización para el campo en todos los casos. Nombre de campo El atributo de nombre de campo es el nombre del elemento de datos correspondiente en el origen de datos subyacente. Aunque puede utilizar la GUI Tivoli Integrated Portal para editar libremente este campo, debe ser idéntica a cómo se visualiza en el origen de datos. Si estos campos no son idénticos, se produce un error cuando se accede al tipo de datos. Capítulo 2. Trabajar con modelos de datos 17 Formato El formato es el formato de datos del campo. Para los tipos de datos de base de datos SQL, Netcool/Impact descubre automáticamente las columnas de la tabla subyacente y deduce automáticamente el formato de datos de cada campo cuando configura el tipo de datos. Para otros tipos de datos, debe especificar manualmente el formato de cada campo que cree. En la Tabla 1 se muestran los formatos de datos soportados: Tabla 1. Formatos de datos soportados Formato Descripción STRING Representa las series de texto hasta 4 KB de longitud. INTEGER Representa números enteros. LONG Representa números enteros largos. FLOAT Representa números decimales de coma flotante. DOUBLE Representa números decimales de coma flotante de precisión doble. DATE Representa series de fecha/hora con formato. TIMESTAMP Representa una indicación de fecha y hora con el formato siguiente, AAAA-MM-DD HH:MM:SS. Restricción: La tabla de Microsoft SQL Server trata el campo TIMESTAMP como un campo que no sea de fecha y hora. El controlador JDBC devuelve el campo TIMESTAMP como un tipo de datos binario de versión de fila, que se descubre como STRING en el tipo de datos de Microsoft SQL Server. Para resolver este problema, en la tabla de Microsoft SQL server utilice DATEITEM para visualizar el formato de hora de la propiedad en lugar de TIMESTAMP. BOOLEAN Representa valores booleanos de true y false. CLOB Representa datos binarios de formato largo. LONG_STRING Representa series de texto de hasta 16 KB de longitud (sólo tipos de datos internos). PASSWORD_STRING Representa valores de contraseña (sólo tipos de datos internos). La contraseña se muestra en la GUI como una serie de asteriscos, en lugar de cómo el propio texto de la contraseña. Nombre a mostrar El atributo de nombre de visualización permite especificar una etiqueta para el campo que se visualiza sólo al examinar los elementos de datos en la interfaz gráfica de usuario. Este atributo no afecta de otro modo a las funciones del tipo de datos. Puede utilizar este campo para seleccionar un campo del menú para etiquetar elementos de datos según el valor de campo. Elija un campo que contenga un valor exclusivo que se pueda utilizar para identificar el elemento de datos, por ejemplo, ID. Para ver los valores en el elemento de datos tendrá que ir a Ver elementos de datos para el tipo de datos y seleccione el icono Enlaces. Pulse el elemento de datos para visualizar los detalles. 18 Netcool/Impact: Guía de soluciones Descripción Puede utilizar el atributo de descripción para especificar una breve descripción del campo. Esta descripción sólo está visible cuando utiliza la GUI para editar el tipo de datos. Como el nombre de visualización, no afecta de otra forma a las funciones del tipo de datos. Claves de tipo de datos Los campos de clave son campos cuyo valor o combinación de valores se puede utilizar para identificar elementos de datos exclusivos en un tipo de datos. Para tipos de datos de base de datos SQL, debe especificar como mínimo un campo de clave para cada tipo de datos que cree. Habitualmente el campo de clave que especifique es un campo de clave del origen de datos subyacente. Los elementos de datos internos contienen un campo predeterminado denominado KEY que se utiliza automáticamente como clave de tipo de datos. Puede utilizar la función de política denominada GetByKey para recuperar datos del tipo de datos utilizando el valor de campo de clave como condición de consulta. Las claves también se utilizan al crear enlaces dinámicos GetByKey entre tipos de datos. Configuración de tipos de datos Al crear un modelo de datos, debe configurar un tipo de datos para cada elemento estructural en un origen de datos cuyos datos desee utilizar. Por ejemplo, si utiliza un origen de datos de base de datos SQL, debe configurar un tipo de datos para cada tabla que contenga los datos. Si utiliza un origen de datos LDAP, debe configurar un tipo de datos para cada contexto base en el directorio LDAP que contenga los nodos a los que desea acceder. Puede configurar los tipos de datos utilizando la GUI de Tivoli Integrated Portal. Para configurar un tipo de datos, puede obtener el nombre del elemento estructural (por ejemplo, la tabla) en el que están ubicados los datos y a continuación utilizar la interfaz gráfica de usuario para configurar el tipo de datos. Obtención del nombre del elemento estructural Si el tipo de datos es un tipo de datos de base de datos SQL, debe conocer el nombre completo de la tabla subyacente de la base de datos para poder configurarlo. Este nombre consta del nombre de base de datos y del nombre de tabla. Algunas bases de datos utilizan nombres de tablas que distinguen entre mayúsculas y minúsculas, de forma que al obtener esta información asegúrese de anotar correctamente las mayúsculas y minúsculas.Si el tipo de datos es un tipo de datos LDAP, debe conocer el nombre del nivel de contexto base de la jerarquía LDAP donde se encuentran los nodos a los que desea acceder. Configuración de tipos de datos internos predefinidos Este procedimiento utiliza un tipo de datos interno Administrator como ejemplo. Capítulo 2. Trabajar con modelos de datos 19 Acerca de esta tarea Para definir el tipo de datos para Administrator, especifique los atributos (campos) que desee mostrar para cada administrador, quizás un nombre, un número de buscapersonas y una dirección de correo electrónico. A continuación cree elementos de datos: los nombres, los números de buscapersonas y las direcciones de correo electrónico de los administradores. Para los tipos de datos internos, estos atributos son los elementos de datos reales para los tipos de datos. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos > Modelo de datos, para abrir el separador Modelo de datos. Dado que los datos internos se almacenan en Netcool/Impact, no es necesario configurar primero una conexión de origen de datos. 2. Seleccione el origen de datos para el que desea crear un tipo de datos, pulse el botón derecho del ratón en el origen de datos y pulse Tipo de datos nuevo. 3. Entre la información en la sección Valores generales del separador Campos personalizados. Pulse Guardar. 4. Para añadir más campos al tipo de datos: a. En la sección Campos adicionales del separador, pulse el botón Nuevo. b. Escriba la información en la ventana. c. Continúe para añadir campos a la tabla según corresponda. d. En la lista Campo de nombre de visualización situada bajo la tabla Campos adicionales, puede seleccionar un nombre de campo que desee utilizar para dar nombre a un elemento de datos en cualquier otro lugar de la GUI. e. Cuando acabe, pulse Guardar de la barra de herramientas del editor. 5. En el separador Enlaces dinámicos, configure los enlaces dinámicos. Para obtener información sobre el separador de enlaces dinámicos, consulte la sección sobre “Utilización de enlaces” en la página 6. 20 Netcool/Impact: Guía de soluciones Ventana de configuración de tipos de datos internos: Utilice esta información para configurar un tipo de datos interno. Tabla 2. Valores generales en la pestaña Campos personalizados del editor de tipos de datos internos nuevos Elemento del editor Descripción Nombre de tipo de datos Escriba un nombre exclusivo para identificar el tipo de datos. Sólo se deben utilizar letras, números y el carácter de subrayado en el nombre de tipo de datos. Si utiliza caracteres UTF-8, asegúrese de que el entorno local del Servidor Impact en el que se guarda el tipo de datos se establezca en la codificación de caracteres de UTF-8. Si recibe un mensaje de error cuando guarda un tipo de datos, seleccione el separador Global para obtener una lista completa de los nombres de tipos de datos para el servidor. Si encuentra el nombre que ha intentado guardar, deberá modificarlo. Estado: Persistente Deje el recuadro seleccionado como Persistente (permanente) para almacenar de forma permanente los elementos de daos creados para este tipo de datos. Cuando se reinicia el servidor, se restauran los datos. Si no selecciona el recuadro, los datos se guardan en la memoria pero sólo mientras el servidor se está ejecutando. Cuando se reinicia el servidor, los datos se perderán porque no se ha realizado una copia de seguridad en un archivo. Esta característica resulta práctica si sólo necesita datos de forma temporal y luego desea descartarlos. Los tipos de datos persistentes siempre se graban en un archivo. Por lo tanto, hacer que los tipos de datos internos sean temporal resulta más rápido. Campo nuevo Pulse para añadir un campo a la tabla. Acceder a los datos a través del proveedor de datos de la interfaz de usuario: Habilitado Para asegurarse de que Proveedor de datos de interfaz de usuario puede acceder a los datos de este tipo de datos, seleccione el recuadro de selección Acceder a los datos a través del proveedor de datos de la interfaz de usuario. Cuando habilite el recuadro de selección, el tipo de datos envía datos a Proveedor de datos de interfaz de usuario . Cuando se renueva el modelo de datos, el tipo de datos está disponible como un origen de proveedor de datos. La velocidad de renovación predeterminada es 5 minutos. Si desea más información sobre los proveedores de datos de interfaz de usuario, consulte Guía de soluciones. Capítulo 2. Trabajar con modelos de datos 21 Tabla 3. Valores adicionales en la pestaña Campos personalizados del editor de tipos de datos internos nuevos Elemento del editor Descripción ID Escriba un ID exclusivo para el campo. Nombre de campo Escriba el nombre real del campo. Puede ser el mismo que el ID. Puede hacer referencia al campo ID y al campo Nombre de campo en las políticas. Si no escribe un nombre para mostrar, Netcool/Impact utiliza el nombre del campo ID de forma predeterminada. Formato Seleccione un formato para el campo en la lista Formato: Campo de nombre de visualización: Puede utilizar este campo para seleccionar un campo del menú para etiquetar elementos de datos según el valor de campo. Elija un campo que contenga un valor exclusivo que se pueda utilizar para identificar el elemento de datos, por ejemplo, ID. Para ver los valores en el elemento de datos tendrá que ir a Ver elementos de datos para el tipo de datos y seleccione el icono Enlaces. Pulse el elemento de datos para visualizar los detalles. Descripción Escriba algún texto que describa el campo. Tabla 4. Valores de proveedor de datos de interfaz de usuario en la pestaña Campos personalizados del editor de tipos de datos internos nuevos Elemento del editor Descripción Definir tipos personalizados y valores (JavaScript) Para mostrar porcentajes y estado en un widget, debe crear un script en formato JavaScript. El script utiliza la siguiente sintaxis. ImpactUICustomValues.put ("FieldName,Type",VariableName); Añada el script al área Definir valores y tipos personalizados (JavaScript). Vista previa del resultado de la muestra de script Pulse el botón Vista previa del resultado de la muestra de script para obtener una vista previa de los resultados y comprobar las sintaxis del script. La vista previa muestra un ejemplo de 10 filas de datos en la tabla. tipos de datos SQL Los tipos de datos SQL definen el acceso dinámico en tiempo real a los datos de las tablas de una base de datos SQL especificada. Cuando se accede a la base de datos, los campos del esquema de base de datos se asignan al tipo de datos. Algunos orígenes de datos SQL descubren automáticamente los campos de la tabla. Otros no dan soporte al descubrimiento 22 Netcool/Impact: Guía de soluciones automático de tablas; para estos orígenes de datos, debe especificar el nombre de tabla para poder ver los nombres de los campos. El editor contiene tres separadores. Tabla 5. Separadores del editor de tipos de datos externos Separador Descripción Descripción de tabla Asigne un nombre al tipo de datos, cambie el origen de datos si es necesario y añada cualquier número de campos del origen de datos para crear una tabla de base de datos. Enlaces dinámicos En este separador puede crear enlaces con otros tipos de datos, tanto externos como internos, para establecer conexiones entre la información. Los enlaces entre los elementos de datos individuales pueden representar cualquier relación entre los elementos que las políticas deben poder buscar. Por ejemplo, un nodo enlazado a un operador permite que una política busque al operador responsable del nodo. Para obtener más información acerca del separador de enlaces dinámicos, consulte “Utilización de enlaces” en la página 6. Valores de memoria caché En este separador puede configurar los parámetros de memoria caché para regular el flujo de datos entre Netcool/Impact y el origen de datos externo. Utilice las directrices de “Ventana de configuración del tipo de datos SQL - Separador Valores de memoria caché” en la página 29, además de los parámetros del informe de rendimiento del tipo de datos, para configurar el almacenamiento en memoria caché de consultas y datos. Importante: los tipos de datos SQL de Netcool/Impact requieren que todas las columnas de una tabla de base de datos tengan habilitado el permiso Select para permitir el descubrimiento y para permitir la opción de guardar al crear tipos de datos. Configuración de tipos de datos SQL: Utilice este procedimiento para configurar un tipo de datos SQL. Procedimiento v Especifique un nombre exclusivo para el tipo de datos. v Especifique el nombre del origen de datos subyacente para el tipo de datos. v Especifique el nombre de la base de datos y la tabla en la que se almacenan los datos subyacentes. v Rellene automáticamente los campos del tipo de datos v Seleccione un nombre de visualización para el tipo de datos. v Especifique campos de clave para el tipo de datos. v Opcional: Especifique un filtro de elementos de datos. v Opcional: Especifique el campo del tipo de datos que debe utilizarse para ordenar los elementos de datos. v Opcional: Especifique la dirección que debe utilizarse al ordenar los elementos de datos. Capítulo 2. Trabajar con modelos de datos 23 Qué hacer a continuación Después de guardar el tipo de datos, puede cerrar el editor de tipos de datos o configurar el almacenamiento en memoria caché y los enlaces dinámicos para el tipo de datos. Ventana de configuración de tipos de datos SQL - separador Descripción de tabla: Utilice esta información para configurar el tipo de datos SQL. Tabla 6. Valores generales para la pestaña Descripciones de la tabla de la ventana de configuración de tipos de datos SQL Elemento del editor Descripción Nombre de tipo de datos Escriba un nombre exclusivo para identificar el tipo de datos. Sólo se deben utilizar letras, números y el carácter de subrayado en el nombre de tipo de datos. Si utiliza caracteres UTF-8, asegúrese de que el entorno local del Servidor Impact en el que se guarda el tipo de datos se establezca en la codificación de caracteres de UTF-8. Los nombres de tipos de datos deben ser exclusivos globalmente y no únicamente dentro de un proyecto. Si recibe un mensaje de error cuando guarda un tipo de datos, seleccione el separador de proyecto Global para obtener una lista completa de los nombres de tipos de datos para el servidor. Si encuentra el nombre que ha intentado guardar, debe cambiarlo. Origen de datos: Nombre Este campo se llena automáticamente, basándose en el origen de datos que ha seleccionado en el separador de orígenes de datos. Si tiene otros orígenes de datos SQL configurados para utilizar con Netcool/Impact, puede cambiar el nombre por cualquier origen de datos SQL de la lista, si es necesario. Si escribe un nombre nuevo, se muestra una ventana de mensaje donde se le solicita que confirme el cambio. Pulse Aceptar para confirmar el cambio. Si cambia de opinión acerca de seleccionar un origen de dato diferente, pulse Cancelar. Estado: Habilitado 24 Netcool/Impact: Guía de soluciones Deje el recuadro de selección Estado marcado para activar el tipo de datos, de forma que esté disponible para ser utilizado en las políticas. Tabla 6. Valores generales para la pestaña Descripciones de la tabla de la ventana de configuración de tipos de datos SQL (continuación) Elemento del editor Descripción Acceder a los datos a través del proveedor de datos de la interfaz de usuario: Habilitado Para asegurarse de que Proveedor de datos de interfaz de usuario puede acceder a los datos de este tipo de datos, seleccione el recuadro de selección Acceder a los datos a través del proveedor de datos de la interfaz de usuario. Cuando se habilita el recuadro de selección, el tipo de datos envía datos a Proveedor de datos de interfaz de usuario . Cuando se renueva el modelo de datos, el tipo de datos está disponible como un origen de proveedor de datos. La velocidad de renovación predeterminada es 5 minutos. Si desea más información sobre los proveedores de datos de interfaz de usuario, consulte Guía de soluciones. Tabla 7. Valores de descripción de tabla para la pestaña Descripciones de la tabla de la ventana de configuración de tipos de datos SQL Elemento de ventana Descripción Tabla base Especifique la base de datos y la tabla subyacentes en las que se almacenan los datos del tipo de datos. Los nombres de todas las bases de datos y las tablas se recuperan automáticamente del origen de datos de forma que puede elegirlos en una lista. Escriba el nombre de la base de datos y la tabla en las listas Tabla base. La primera lista contiene las bases de datos del origen de datos. La segunda lista contiene las tablas de la base de datos seleccionada, por ejemplo, alerts, status. Renovar Pulse Renovar para llenar la tabla. Las columnas de tabla se muestran como campos de una tabla. Para que el acceso a la base de datos sea lo más eficaz posible, suprima los campos que no se utilizan en políticas. Añadir campos suprimidos Si ha suprimido campos del tipo de datos que siguen existiendo en la base de datos SQL, dichos campos no se muestran en la interfaz de usuario. Para restaurar los campos en el tipo de datos, marque el recuadro de selección Añadir campos suprimidos y pulse Renovar. Capítulo 2. Trabajar con modelos de datos 25 Tabla 7. Valores de descripción de tabla para la pestaña Descripciones de la tabla de la ventana de configuración de tipos de datos SQL (continuación) Elemento de ventana Descripción Nuevo campo Utilice esta opción si tiene que añadir un campo a la tabla desde la base de datos del origen de datos. Por ejemplo, en el caso donde se añadió el archivo a la base de datos después de haber credo el tipo de datos. Asegúrese de que el nombre de campo que añade tiene el mismo nombre que el nombre del campo en el origen de datos. Importante: los campos nuevos añadidos a esta tabla no se añaden automáticamente a la tabla de orígenes de datos. No puede añadir campos a la tabla de base de datos de esta forma. Para obtener más información, consulte “Ventana de configuración de tipos de datos SQL - Añadir y editar campos de la tabla” en la página 28. Campo de clave Los campos de clave se utilizan cuando recupera datos del tipo de datos en una política que utiliza la función GetByKey. También se utilizan al definir un enlace dinámico GetByKey. Importante: Debe definir, como mínimo, un campo de clave para el tipo de datos, aunque no tenga previsto utilizar la función GetByKey en su política. Si no lo hace, Netcool/Impact no funciona correctamente. Generalmente, los campos de clave que se definen corresponden a los campos de clave de la tabla de base de datos subyacente. Para especificar un campo clave, marque el recuadro de selección de la fila adecuada de la columna Campo de clave. Puede añadir varios campos clave. Campo de nombre de visualización 26 Netcool/Impact: Guía de soluciones Puede utilizar este campo para seleccionar un campo del menú para etiquetar elementos de datos según el valor de campo. Elija un campo que contenga un valor exclusivo que se pueda utilizar para identificar el elemento de datos, por ejemplo, ID. Para ver los valores en el elemento de datos tendrá que ir a Ver elementos de datos para el tipo de datos y seleccione el icono Enlaces. Pulse el elemento de datos para visualizar los detalles. Tabla 7. Valores de descripción de tabla para la pestaña Descripciones de la tabla de la ventana de configuración de tipos de datos SQL (continuación) Elemento de ventana Descripción Eliminar automáticamente campos suprimidos Marque el recuadro de selección Eliminar automáticamente campos suprimidos para eliminar los campos del tipo de datos que ya se han eliminado de la base de datos SQL. Esto se produce automáticamente cuando se ejecuta una política que utiliza este tipo de datos. Tabla 8. Valores de ordenación y filtrado de datos para la pestaña Descripciones de la tabla de la ventana de configuración de tipos de datos SQL Elemento de ventana Descripciones Filtro Escriba una cláusula de restricción para limitar los tipos de elementos de datos que se visualizarán para el tipo de datos. Por ejemplo, para limitar las filas de un campo denominado Ciudad a Nueva York, debe especificar: Ciudad = "Nueva York" Por ejemplo, para limitar las filas a Nueva York o Atenas, escriba: Ciudad = "Nueva York" OR Ciudad = "Atenas" Puede utilizar cualquier sintaxis de cláusula Where de SQL. Ordenar por Especifique los nombres de uno o más campos para utilizar al ordenar los elementos de datos recuperados del origen de datos. Tabla 9. Valores de proveedor de datos de interfaz de usuario para la pestaña Descripciones de la tabla de la ventana de configuración de tipos de datos SQL. Elemento del editor Descripción Definir tipos personalizados y valores (JavaScript) Para mostrar porcentajes y estado en un widget, debe crear un script en formato JavaScript. El script utiliza la siguiente sintaxis. ImpactUICustomValues.put ("FieldName,Type",VariableName); Añada el script al área Definir valores y tipos personalizados (JavaScript). Vista previa del resultado de la muestra de script Pulse el botón Vista previa del resultado de la muestra de script para obtener una vista previa de los resultados y comprobar las sintaxis del script. La vista previa muestra un ejemplo de 10 filas de datos en la tabla. Capítulo 2. Trabajar con modelos de datos 27 Ventana de configuración de tipos de datos SQL - Añadir y editar campos de la tabla: Utilice esta información para añadir a la tabla un campo correspondiente a un tipo de datos SQL o para editarlo. separador Tabla, en el área Campo nuevo, pulse Nuevo para añadir un campo al tipo de datos o seleccione el icono de edición situado junto a un campo existente que desee editar. Tabla 10. Editor de tipos de datos externos - Ventana Campo nuevo Elemento de ventana Descripción ID De forma predeterminada, el ID de campo es el mismo que el nombre de columna de la base de datos. Puede modificarlo por cualquier otro nombre exclusivo. Por ejemplo, si los nombres de columnas subyacentes del origen de datos son difíciles de utilizar, utilice el campo ID para proporcionar un alias más fácil para el campo. Nombre de campo Escriba un nombre de campo que se pueda utilizar en las políticas. Representa el nombre de la columna SQL. Escriba el nombre de forma que sea idéntico a como aparece en el origen de datos. De lo contrario, Netcool/Impact notifica un error cuando intenta acceder al tipo de datos. Formato Para los tipos de datos de base de datos SQL, Netcool/Impact descubre automáticamente las columnas en la tabla subyacente y detecta automáticamente el formato de datos para cada campo cuando configure el tipo de datos. Para otros tipos de datos, debe especificar manualmente el formato de cada campo que crea. Si desea más información sobre los formatos, consulte el capítulo Cómo trabajar con tipos de datos en Guía de soluciones. Restricción: La tabla de Microsoft SQL Server trata el campo TIMESTAMP como un campo que no sea de fecha y hora. El controlador JDBC devuelve el campo TIMESTAMP como un tipo de datos binario de versión de fila, que se descubre como STRING en el tipo de datos de Microsoft SQL Server. Para resolver este problema, en la tabla de Microsoft SQL Server utilice DATEITEM para visualizar el formato de hora de la propiedad en lugar de TIMESTAMP. Seleccione un formato de la lista siguiente: v STRING v LONG_STRING v INTEGER v PASSWORD_STRING v LONG v FLOAT v DOUBLE v DATE v TIMESTAMP v BOOLEAN v CLOB 28 Netcool/Impact: Guía de soluciones Tabla 10. Editor de tipos de datos externos - Ventana Campo nuevo (continuación) Elemento de ventana Descripción Nombre para mostrar Puede utilizar este campo para seleccionar un campo del menú para etiquetar elementos de datos según el valor de campo. Elija un campo que contenga un valor exclusivo que se pueda utilizar para identificar el elemento de datos, por ejemplo, ID. Para ver los valores en el elemento de datos tendrá que ir a Ver elementos de datos para el tipo de datos y seleccione el icono Enlaces. Pulse el elemento de datos para visualizar los detalles. Si no escribe un nombre para mostrar, Netcool/Impact utiliza el nombre del campo ID de forma predeterminada. Descripción Escriba algún texto que describa el campo. Esta descripción sólo está visible cuando edite el tipo de datos en la GUI. Valor predeterminado Escriba una expresión predeterminada para el campo. Puede adoptar cualquier valor del formato especificado (consulte la fila del formato), o puede ser un identificador específico de la base de datos como, por ejemplo, un pseudónimo Oracle; sequence.NEXTVAL. Insertar sentencias: Excluir este campo Cuando selecciona el recuadro de selección Excluir este campo, Netcool/Impact no establece el valor del campo cuando inserta y actualiza un elemento de datos nuevo en la base de datos. Este campo se utiliza sólo para sentencias de inserción y actualización, no para sentencias de selección. Tipos de datos de Sybase: Debe seleccionar esta opción al correlacionar un campo con un campo Identidad o un campo con un valor predeterminado en una base de datos Sybase. De lo contrario, Netcool/Impact sobrescribirá el campo al insertar con el valor especificado o con un carácter de espacio si no se ha especificado ningún valor. Tipos de datos de ObjectServer: El campo Tally selecciona automáticamente el recuadro de selección Excluir este campo para que se excluya de inserciones y actualizaciones para el tipo de datos del servidor de objetos, ya que este campo es definido automáticamente por Netcool/OMNIbus para controlar la optimización de almacenamiento de sucesos. El campo Serie selecciona automáticamente el recuadro de selección Excluir este campo para excluirlo de inserciones y actualizaciones cuando un tipo de datos de ObjectServer apunta a alerts.status. Comprobación de tipo: Estricto Pulse para habilitar la comprobación de tipo estricto en el campo. Netcool/Impact comprueba el formato del valor del campo en la inserción o la actualización para asegurarse de que sea del mismo formato que el campo correspondiente en el origen de datos. Si no es el mismo, Netcool/Impact no comprueba el valor en la inserción o actualización y se visualiza un mensaje con dicho efecto en el registro del servidor. Si no habilita la comprobación de tipo estricto, se realizan todas las conversiones de formato y comprobación de tipo en el nivel de origen de datos. Ventana de configuración del tipo de datos SQL - Separador Valores de memoria caché: Utilice esta información para configurar la memoria caché para un tipo de datos SQL. Capítulo 2. Trabajar con modelos de datos 29 Tabla 11. Separador Valores de memoria caché de tipos de datos externos - tipos de almacenamientos en memoria caché Tipo de almacenamiento en memoria caché Descripción Habilitar almacenamiento de datos en memoria caché Este recuadro de selección habilita e inhabilita el almacenamiento de datos en memoria caché. Número máximo de elementos de datos Establezca el número total de elementos de datos que se almacenarán en la memoria caché durante la ejecución de la política. Invalidar elementos de datos en memoria caché tras Se establece para invalidar los elementos almacenados en la memoria caché después de los períodos de tiempo seleccionados. Habilitar almacenamiento de consultas en memoria caché Este recuadro de selección habilita e inhabilita el almacenamiento de consultas en memoria caché. Número máximo de consultas Establezca el número máximo de consultas de base de datos que se almacenarán en la memoria caché. Invalidar consultas en memoria caché tras Se establece para invalidar los elementos almacenados en la memoria caché después de los períodos de tiempo seleccionados. Habilitar almacenamiento de recuentos en memoria caché No lo establezca. Está disponible únicamente para la compatibilidad con versiones anteriores. Intervalos de medidas de rendimiento Utilice esta opción para configurar los parámetros de informes para medir la velocidad con la que se ejecutan las consultas de un tipo de datos. Intervalo de sondeo Seleccione un intervalo de sondeo para medir las estadísticas de rendimiento para el tipo de datos. Intervalo de consulta Seleccione el intervalo de consulta para la comprobación de rendimiento. Llenado automático de los campos de tipos de datos: Después de haber especificado el nombre de la base de datos y tabla, el paso siguiente es llenar automáticamente los campos de tipo de datos. También puede especificar los campos manualmente de la misma forma que lo hace para los tipos de datos internos, pero en la mayoría de los casos la utilización de la característica de llenado automático ahorra tiempo y asegura que los nombres de los campos son precisos. Cuando llena automáticamente los campos de tipo de datos, la descripción de tabla se recupera del origen de datos subyacente y se crea un campo en el tipo de datos para cada columna de la tabla. El ID, nombre real y nombre a mostrar para los campos se definen utilizando el nombre de columna exacto tal como aparece en la tabla. Un conjunto de reglas incorporadas se utiliza para determinar el formato de datos para cada uno de los campos que se han llenado automáticamente. Las columnas de la base de datos que contienen datos de texto, como por ejemplo varchar, se representan como campos de serie. Las columnas que contienen números enteros, como por ejemplo int y integer, se representan como campos enteros. Las columnas que contienen números decimales se representan como campos flotantes. 30 Netcool/Impact: Guía de soluciones Normalmente, puede asignar automáticamente los formatos para los campos de tipo de datos sin tener que intentar volver a crear manualmente los formatos de datos de base de datos en el tipo de datos. Si sólo desea que estén representados un subconjunto de los campos de una tabla en el tipo de datos, puede eliminar manualmente los campos que no desee después del llenado automático. La eliminación de los campos no deseados puede acelerar el rendimiento de un tipo de datos. Para llenar automáticamente campos de tipo de datos, pulse el botón Renovar en el área Descripción de tabla del separador Tipo de datos. La descripción de tabla se recupera del origen de datos y los campos se llenan. Los campos se visualizan en el área Descripción de tabla. Después de haber llenado automáticamente los campos de tipo de datos, puede cambiar manualmente los atributos de cualquier definición de campo. No cambie el valor del atributo de nombre real. Si no cambia este valor, se informará de los errores al intentar recuperar datos del tipo de datos. Especificación de un filtro de elementos de datos: El filtro de elementos de datos especifica a qué filas de la tabla de base de datos subyacente se puede acceder como elementos de datos del tipo de datos. Este filtro es un valor opcional. La sintaxis del filtro de elementos de datos es la misma que el contenido de la cláusula WHERE de la sentencia SQL SELECT soportada por la base de datos subyacente. Por ejemplo, si desea especificar que sólo las filas donde el campo Ubicación sea New York sean accesibles mediante este tipo de datos, puede utilizar el siguiente filtro de elementos de datos: Location = ’New York’ Si desea especificar que sólo las filas donde el campo Ubicación sea New York o New Jersey, puede utilizar la expresión siguiente: Location = ’New York’ OR Location = ’New Jersey’ Asegúrese de colocar las series entre comillas. Para especificar el filtro de elementos de datos, especifique la serie del filtro en el recuadro de texto Filtro del área Filtro y ordenación de elementos de datos del editor de tipo de datos. Especificación de la ordenación de los elementos de datos: La ordenación de los elementos de datos define el orden en el que los elementos de datos se recuperan del tipo de datos. Los valores de orden se utilizan al recuperar elementos de datos utilizando la función GetByFilter de una política o al examinar elementos de datos utilizando la interfaz gráfica de usuario. Puede ordenar los elementos de datos en orden alfanumérico ascendente o descendente por cualquier campo de tipo de datos. La ordenación de los elementos de datos es un parte opcional de la configuración del tipo de datos. Capítulo 2. Trabajar con modelos de datos 31 Puede especificar la ordenación de los elementos de datos en la configuración del tipo de datos como una lista de campos separados por coma, donde cada campo va acompañado por la palabra clave ASC o DESC. Por ejemplo, para recuperar elementos de datos en orden ascendente por el campo Nombre, debe utilizar la siguiente serie de ordenación: Nombre ASC Para recuperar elementos de datos en orden descendente por el campo Ubicación y, a continuación, en orden ascendente por Nombre, debe utilizar la serie siguiente: Location DESC,Nombre ASC Para especificar la ordenación de los elementos de datos: 1. En el Editor de tipo de datos, desplácese hasta que se visualice el área Filtrado y ordenación de datos. 2. Especifique la serie de ordenación de los elementos de datos en el campo Ordenar por. Tipos de datos LDAP Un tipo de datos LDAP representa un conjunto de entidades de un árbol de directorios LDAP. El DSA de LDAP determina qué entidades forman parte de este conjunto en tiempo real, buscando de forma dinámica en el árbol LDAP las que coinciden con un filtro LDAP especificado dentro de un ámbito concreto. El DSA realiza esta búsqueda en relación con una ubicación del árbol, conocida como el contexto base. El editor de Tipo de datos LDAP contiene tres separadores. Tabla 12. Separadores del editor de Tipos de datos LDAP Separador Descripción Información de LDAP En este separador se configuran los atributos del tipo de datos. Para obtener más información acerca de estos atributos, consulte “Pestaña Información de LDAP de la ventana Configuración de tipo de datos LDAP” en la página 33. Enlaces dinámicos En este separador puede crear enlaces con otros tipos de datos, tanto externos como internos, para establecer conexiones entre la información. Los enlaces entre los elementos de datos individuales pueden representar cualquier relación entre los elementos que las políticas necesitan poder buscar. Por ejemplo, un nodo enlazado a un operador permite que una política busque al operador responsable del nodo. Para obtener más información acerca de cómo crear tipos de datos, consulte el “Utilización de enlaces” en la página 6. Valores de memoria caché En este separador puede configurar los parámetros de memoria caché para regular el flujo de datos entre Netcool/Impact y el origen de datos externo. Para obtener más información sobre la configuración de la memoria cache, consulte “Ventana de configuración del tipo de datos SQL - Separador Valores de memoria caché” en la página 29. Importante: Debe crear un tipo de datos LDAP para cada conjunto de entidades al que desea acceder. El tipo de datos LDAP es un tipo de datos de sólo lectura, lo que significa que no puede editar ni suprimir elementos de datos LDAP en la GUI. 32 Netcool/Impact: Guía de soluciones Configuración de tipos de datos LDAP: Utilice este procedimiento para configurar un tipo de datos LDAP. Procedimiento v Especifique un nombre exclusivo para el tipo de datos. v Especifique el nombre del origen de datos subyacente para el tipo de datos. v Especifique el nivel de contexto base de la jerarquía de LDAP donde se encuentran los elementos a los que desea acceder. v Especifique un campo de nombre de visualización. v Opcional: Especifique un filtro de restricción. Pestaña Información de LDAP de la ventana Configuración de tipo de datos LDAP: Utilice esta información para configurar la información de LDAP para un tipo de datos LDAP. Tabla 13. Valores generales en la Pestaña Información de LDAP, en el editor Tipos de datos LDAP Elemento del editor Descripción Nombre de tipo de datos Escriba un nombre exclusivo para identificar el tipo de datos. Sólo se deben utilizar letras, números y el carácter de subrayado en el nombre de tipo de datos. Si utiliza caracteres UTF-8, asegúrese de que el entorno local del Servidor Impact en el que se guarda el tipo de datos se establezca en la codificación de caracteres de UTF-8. Estado: Habilitado Déjelo sin seleccionar para habilitar el tipo de datos, de modo que esté disponible para utilizarlo en las políticas. Tabla 14. Valores de LDAP en la Pestaña Información de LDAP, en el editor Tipos de datos LDAP Elemento del editor Descripción Nombre de origen de datos Escriba el nombre del origen de datos subyacente. Este campo se rellena automáticamente, en función del origen de datos que haya seleccionado en el panel de tareas Tipos de datos del panel Navegación. No obstante, si ha configurado más de un origen de datos LDAP para utilizarlo con Netcool/Impact, puede seleccionar cualquier origen de datos LDAP de la lista, si es necesario. Si escribe un nombre nuevo, el sistema muestra una ventana de mensaje donde se le solicita que confirme el cambio. Capítulo 2. Trabajar con modelos de datos 33 Tabla 14. Valores de LDAP en la Pestaña Información de LDAP, en el editor Tipos de datos LDAP (continuación) Elemento del editor Descripción Ámbito de búsqueda Seleccione el ámbito de búsqueda: v OBJECT_SCOPE v ONLEVEL_SCOPE v SUBTREE_SCOPE Contexto base Escriba el contexto base que desea que se utilice al buscar entidades LDAP. Por ejemplo:ou=people, o=companyname.com. Campo de búsqueda clave Escriba el nombre de un campo clave, por ejemplo, dn. Campo de nombre para mostrar Puede utilizar este campo para seleccionar un campo del menú para etiquetar elementos de datos según el valor de campo. Elija un campo que contenga un valor exclusivo que se pueda utilizar para identificar el elemento de datos, por ejemplo, ID. Para ver los valores en el elemento de datos tendrá que ir a Ver elementos de datos para el tipo de datos y seleccione el icono Enlaces. Pulse el elemento de datos para visualizar los detalles. Filtro de restricción Opcionalmente, especifique un filtro de restricción. El filtro de restricción es un filtro de búsqueda LDAP como se define en Internet RFC 2254. Este filtro consta de una o varias expresiones booleanas con operadores lógicos que tienen el prefijo de la lista de expresiones. Para obtener más información, consulte la información de Filtro de LDAP en la publicación Guía de consulta de políticas. Tabla 15. Configuración de atributos en la Pestaña Información de LDAP, en el editor Tipos de datos LDAP Elemento del editor Descripción Campo nuevo Para cada campo que desee añadir al tipo de datos, pulse Nuevo. Tipos de datos Mediador DSA Los tipos de datos de DSA de mediador se crean generalmente mediante scripts u otras herramientas suministradas por el DSA correspondiente. Generalmente, los tipos de datos y sus orígenes de datos asociados se instalan cuando se instala el DSA de mediador (CORBA o Direct) y, por tanto, no es necesario crearlos. Los tipos de datos instalados están disponibles para su visualización y, si es necesario, para editarlos. Para obtener más información acerca de los tipos de datos de mediador utilizados con un DSA determinado, consulte la documentación del DSA. 34 Netcool/Impact: Guía de soluciones Almacenamiento en memoria caché de tipos de datos Puede utilizar el almacenamiento en memoria caché para reducir el número total de consultas que se realizan en un origen de datos por motivos de rendimiento o por otros motivos. El almacenamiento en memoria caché ayuda a disminuir la carga de las bases de datos externas que utiliza Netcool/Impact. El almacenamiento en memoria caché también aumenta el rendimiento del sistema al permitirle almacenar temporalmente elementos de datos que se han recuperado de un origen de datos. Importante: El almacenamiento en memoria caché funciona mejor con orígenes de datos estáticos y con orígenes de datos en los que los datos no cambian con frecuencia. El almacenamiento en memoria caché funciona cuando se recuperan los datos durante el proceso de una política. Al visualizar los elementos de datos en la GUI, se recuperan los datos almacenados en la memoria caché en lugar de recuperar los datos directamente del origen de datos. Puede especificar el almacenamiento en memoria caché de tipos de datos externos para controlar el número de elementos de datos que se almacenan temporalmente mientras las políticas procesan datos. Un gran número de elementos de datos de la memoria caché utilizan una gran cantidad de memoria pero puede ahorrar ancho de banda y tiempo si hace referencia a los mismos datos con frecuencia. Importante: El almacenamiento en memoria caché funciona con los tipos de datos de base de datos SQL y LDAP. Los tipos de datos internos no requieren almacenamiento en memoria caché. El almacenamiento en memoria caché se configura en función del tipo de datos dentro de la GUI. Si no especifica el almacenamiento en memoria caché del tipo de datos, cada elemento de datos se vuelve a cargar desde el origen de datos externo, cada vez que se accede al mismo. Configurar el almacenamiento en memoria caché de datos Utilice este procedimiento para configurar el almacenamiento en memoria caché de datos. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Expanda el Origen de datos que contenga el tipo de datos que desee editar. 3. Efectúe una doble pulsaciónen el tipo de datos o pulse el icono Editar en la barra de herramientas para abrir la ficha Valores de memoria caché. 4. Marque el recuadro de selección Habilitar almacenamiento de datos en memoria caché. 5. Escriba un número en el campo Número máximo de elementos de datos para establecer el número máximo de elementos de datos en la memoria caché. 6. Especifique la cantidad de tiempo que se debe almacenar en la memoria caché cada elemento de datos en los campos Invalidar elementos en memoria caché tras para establecer la hora de caducidad para los elementos de datos de la memoria caché. Capítulo 2. Trabajar con modelos de datos 35 Netcool/Impact calcula la hora de caducidad por separado para cada elemento de datos de la memoria caché. 7. Pulse Guardar para implementar los cambios en el tipo de datos. Importante: Para que el almacenamiento de datos en memoria caché funcione, los campos de clave del tipo de datos deben ser exclusivos. Configurar el almacenamiento en memoria caché de consultas Utilice este procedimiento para configurar el almacenamiento en memoria caché de consultas. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Expanda el Origen de datos que contenga el tipo de datos que desee editar. 3. Efectúe una doble pulsaciónen el tipo de datos o pulse el icono Editar en la barra de herramientas para abrir la ficha Valores de memoria caché. 4. Desplácese hacia abajo hasta se visualice el área Habilitar almacenamiento de consultas en memoria caché. 5. Seleccione el recuadro de selección Habilitar almacenamiento de consultas en memoria caché. 6. Escriba un número en el campo Número máximo de elementos de datos para establecer el número máximo de consultas en la memoria caché. 7. Especifique la cantidad de tiempo que se debe almacenar en la memoria caché cada elemento de datos en los campos Invalidar elementos en memoria caché tras para establecer la hora de caducidad para los resultados de consultas de la memoria caché. La fecha de caducidad se calcula por separado para cada consulta de la memoria caché. 8. Pulse Guardar para implementar los cambios en el tipo de datos. Importante: También debe habilitar el almacenamiento en memoria caché de datos para que el almacenamiento en memoria caché de consultas funcione. Almacenamiento en memoria caché de recuentos Utilice este procedimiento para configurar el almacenamiento en memoria caché de recuentos. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Expanda el Origen de datos que contenga el tipo de datos que desee editar. 3. Efectúe una doble pulsaciónen el tipo de datos o pulse el icono Editar en la barra de herramientas para abrir la ficha Valores de memoria caché. 4. Desplácese hacia abajo hasta que se visualice el área Habilitar almacenamiento de recuentos en memoria caché. 5. Marque el recuadro de selección Habilitar almacenamiento de recuentos en memoria caché. 36 Netcool/Impact: Guía de soluciones 6. Especifique la cantidad de tiempo que se debe almacenar en la memoria caché cada elemento de datos en los campos Invalidar elementos en memoria caché tras. Puede configurar la hora de caducidad de los elementos contados utilizando esta característica. 7. Pulse Guardar para implementar los cambios en el tipo de datos. Utilización de enlaces Los enlaces se configuran después de crear los tipos de datos necesarios para la solución y de llenar con información los tipos de datos internos del modelo. Al escribir políticas, se utiliza la función GetByLinks para atravesar los enlaces y recuperar los elementos de datos enlazados con otros elementos de datos. Visión general de enlaces Los enlaces son elementos del modelo de datos que definen relaciones entre elementos de datos y entre tipos de datos. Pueden ahorrar tiempo durante el desarrollo de políticas porque permiten definir una relación de datos una vez y a continuación reutilizarla varias veces cuando necesite encontrar datos relacionados con otros datos en una política.Los enlaces son un componente opcional de un modelo de datos. Los enlaces dinámicos y estáticos están soportados. Categorías de enlaces Netcool/Impact proporciona dos categorías de enlaces. Enlaces estáticos Los enlaces estáticos definen una relación entre elementos de datos en los tipos de datos internos. Enlaces dinámicos Los enlaces dinámicos definen una relación entre tipos de datos. Enlaces estáticos Los enlaces estáticos definen una relación entre elementos de datos en los tipos de datos internos. Los enlaces estáticos están soportados únicamente para los tipos de datos internos. Los enlaces estáticos no se soportan para otras categorías de tipos de datos, como los tipos de base de datos SQL y LDAP, porque la persistencia de los elementos de datos que se almacenan externamente no se puede asegurar. Un enlace estático se crea manualmente entre dos elementos de datos cuando no existen relaciones en el nivel de base de datos. Con los enlaces estáticos, la relación entre los elementos de datos es estática y no cambia nunca después de que se hayan creado. Puede cruzar los enlaces dinámicos de una política o en la interfaz de usuario cuando examina los elementos de datos enlazados. Los enlaces estáticos son bidireccionales. Enlaces dinámicos Los enlaces dinámicos definen una relación entre tipos de datos. Capítulo 2. Trabajar con modelos de datos 37 Esta relación se especifica al crear el enlace y se evalúa en tiempo real cuando se encuentra una llamada a la función GetByLinks en una política. Los enlaces dinámicos están soportados para tipos de datos internos, de base de datos SQL y LDAP. Las relaciones entre los tipos de datos se resuelven dinámicamente durante la ejecución cuando cruza el enlace de una política o cuando examina los enlaces entre elementos de datos. Se crean y mantienen dinámicamente a partir de los datos de la base de datos. El concepto de enlaces es similar a la función JOIN de una base de datos SQL. Por ejemplo, es posible que exista una "Tabla 1" que contiene información de clientes (nombre, número de teléfono, dirección, etc.) con una clave de ID de cliente exclusiva. También puede haber una "Tabla 2" con una lista de servidores. En esta tabla, se incluye el ID de cliente del cliente propietario del servidor. Cuando estos elementos de datos se mantienen en diferentes bases de datos, Netcool/Impact permite crear un enlace entre la Tabla 1 y la Tabla 2 mediante el campo ID de cliente, de modo que puede ver todos los servidores propiedad de un cliente concreto. Puede utilizar enlaces dinámicos únicamente a nivel de base de datos. Cuando las relaciones no existen en el nivel de base de datos, deberá crear enlaces estáticos. Puede crear enlaces dinámicos para todos los tipos de datos (internos, externos y predefinidos). Consulte “Configuración de tipos de datos” en la página 5 para obtener información sobre las clases del tipo de datos. Los enlaces dinámicos son enlaces unidireccionales que se configuran a partir del origen en el tipo de datos de destino. Enlace por filtro Un enlace por filtro es un tipo de enlace dinámico donde la relación entre dos tipos de datos se especifica utilizando la sintaxis de filtro de enlace. La sintaxis de filtro de enlace es la siguiente: campo_destino = %campo_origen% [AND (campo_destino = %campo_origen%) ...] Donde campo_destino es el nombre de un campo del tipo de datos de destino y campo_origen es el nombre del campo en el tipo de datos de origen. Cuando se llama a la función GetByLinks en una política, Netcool/Impact evalúa los elementos de datos en el tipo de datos de destino y devuelve aquellos datos cuyo valor de campo_destino sea igual al campo_origen especificado. Si el valor de campo_origen es una serie, debe colocarlo entre comillas. En los ejemplos siguientes se muestran los filtros de enlace válidos: Location = ’%Name%’ (NodeID = %ID%) AND (Location = ’%Name%’) Enlace por clave Un enlace por clave es un tipo de enlace dinámico donde la relación entre dos tipos de datos la especifica una expresión de clave foránea. La expresión de clave foránea es el valor que debe tener el campo de clave en los elementos de datos del tipo de datos de destino para que se consideren enlazados al origen. La sintaxis de la expresión de clave foránea es el nombre o nombres de los campos del tipo de datos de origen cuyo valor debe ser igual al campo de clave del destino. Puede concatenar campos utilizando el operador de suma (+). 38 Netcool/Impact: Guía de soluciones Cuando se llama a la función GetByLinks en una política, Netcool/Impact evalúa los elementos de datos del tipo de datos de destino y devuelve estos elementos de datos cuyos valores de campos de clave coinciden con la expresión de clave especificada. En los ejemplos siguientes se muestran las expresiones de clave válidas: LastName FirstName + " " + LastName LastName + ", " + FirstName Enlace por política Un enlace por política es un tipo de enlace dinámico donde la relación entre dos tipos de datos la especifica una política. La política contiene la lógica que se utiliza para recuperar elementos de datos del tipo de datos de destino. La política de enlaces especifica qué elementos de datos se deben devolver estableciendo el valor de la variable DataItems. Configuración de enlaces estáticos Utilice este procedimiento para configurar un enlace estático. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Expanda el Origen de datos que contenga el tipo de datos interno que desee enlazar. 3. Efectúe una doble pulsaciónen el tipo de datos o pulse el icono Editar de la barra de herramientas para abrir el elemento de datos de origen que desee enlazar. Se abre un separador Editor de tipo de datos en el panel de trabajo principal. 4. Pulse el botón Enlaces para el elemento de datos con el que desea enlazar. 5. En la ventana Enlaces estáticos que se abre, seleccione el tipo de datos que contiene los elementos de datos con los que desea enlazar. 6. Seleccione el elemento de datos con el que desea enlazar desde la lista de elementos de datos que aparece. Configuración de enlaces dinámicos Puede configurar un enlace dinámico por filtro, por clave y por política. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Expanda el Origen de datos que contenga el tipo de datos interno que desee enlazar. 3. Efectúe una doble pulsaciónen el tipo de datos o pulse el icono Editar de la barra de herramientas para abrir el tipo de datos que desee utilizar como origen del enlace. 4. En el separador del Editor de tipo de datos, seleccione Enlaces dinámicos en el Editor de tipo de datos. Capítulo 2. Trabajar con modelos de datos 39 5. En función del tipo de enlace que desee crear, pulse el botón Nuevo enlace por filtro, Nuevo enlace por clave o Enlace por política. Con ello se abrirá una ventana de editor de enlaces nueva. Consejo: Para crear un enlace por política nuevo, deberá desplazarse hasta que se visualice el área Enlace por política. 6. Seleccione el tipo de datos de la lista Tipos de datos de destino. 7. Seleccione el tipo de enlace expuesto en la lista Tipo de enlace expuesto. 8. En función del tipo de enlace que está creando, teclee el filtro, la expresión de clave o seleccione una política. v Para un enlace por filtro, especifique la sintaxis de filtro para el enlace en el campo Filtrar en tipo de datos de destino. Por ejemplo: Location = ’%Facility%’. v Para un enlace por clave, especifique la expresión de clave en el campo Expresión de clave foránea. Por ejemplo: FirstName + ’ ’ + LastName. v Para un enlace por política, seleccione la política de enlace en la lista Política que se ejecutará para buscar enlaces. 9. Pulse Aceptar. Utilización de orígenes de datos Cuando diseñe la solución, debe crear un origen de sucesos para cada una de las aplicaciones en las que desee realizar la supervisión de sucesos y puede crear servicios de lector de sucesos y asociarlos con el origen del suceso. Normalmente, una solución utiliza un único origen de sucesos. Este origen de sucesos es con mucha frecuencia una base de datos de ObjectServer. Visión general de los orígenes de sucesos Un origen de sucesos es un tipo especial de origen de datos que representa una aplicación que almacena y gestiona sucesos, siendo la aplicación más común la base de datos ObjectServer. Un suceso es un conjunto de datos que representa un estado o una actividad de una red. La estructura y el contenido de un suceso varían en función del dispositivo, sistema o aplicación que ha generado el suceso pero en la mayoría de casos, los sucesos son alertas de Netcool/OMNIbus. El instalador crea automáticamente un origen de sucesos de ObjectServer predeterminado, defaultobjectserver. Este origen de sucesos se configura utilizando la información que proporciona durante la instalación. También puede utilizar otras aplicaciones como orígenes de sucesos no de ObjectServer. Después de establecer un origen de sucesos, no es necesario gestionarlo activamente a menos que cambie el diseño de la solución pero, si es necesario, puede utilizar la interfaz gráfica de usuario para modificar o suprimir orígenes de sucesos. Orígenes de sucesos del ObjectServer Los orígenes de sucesos más comunes son orígenes de sucesos de ObjectServer que representan instancias de la base de datos del ObjectServer de Netcool/OMNIbus. 40 Netcool/Impact: Guía de soluciones Los sucesos del ObjectServer son alertas almacenadas en la tabla alerts.status de la base de datos. Estas alertas tienen un conjunto predefinido de campos de alertas que se pueden complementar mediante los campos adicionales que defina. Los orígenes de sucesos de ObjectServer se supervisan mediante un servicio de lector de sucesos de OMNIbus. El servicio de lector de sucesos consulta el ObjectServer a intervalos y recupera los sucesos nuevos, actualizados o suprimidos que coinciden con sus condiciones de filtro predefinidas. El lector de sucesos pasa cada suceso al motor de política para su proceso. Orígenes de sucesos que no son del ObjectServer Los orígenes de sucesos que no son ObjectServer representan instancias de otras aplicaciones, como por ejemplo bases de datos externas o sistemas de mensajería, que proporcionan sucesos a Netcool/Impact. Los sucesos que no son ObjectServer pueden adoptar una gran variedad de formas, en función de la naturaleza del origen de sucesos. Para orígenes de sucesos de bases de datos SQL, un suceso puede ser el contenido de una fila de una tabla. Para un origen de sucesos del sistema de mensajería, un suceso puede ser el contenido de un mensaje. Los orígenes de sucesos no de ObjectServer se supervisan mediante un servicio de escucha de sucesos. El servicio de escucha de sucesos recibe de manera pasiva sucesos del origen de sucesos y a continuación los pasa al motor de política para su proceso. El servicio DatabaseEventReader supervisa orígenes de datos que no son de ObjectServer. El servicio de lector de sucesos de base de datos consulta el origen de datos SQL a intervalos y recupera los sucesos nuevos o actualizados que coinciden con sus condiciones de filtro predefinidas. El lector de sucesos de base de datos pasa cada suceso al motor de política para su proceso. Arquitectura de un origen de sucesos En este diagrama se muestra cómo los orígenes de sucesos interactúan con orígenes de sucesos y escuchas de sucesos con sus aplicaciones de gestión de sucesos subyacentes. Capítulo 2. Trabajar con modelos de datos 41 Figura 3. Arquitectura de un origen de sucesos Configuración de orígenes de sucesos ObjectServer Utilice este procedimiento para configurar un origen de sucesos de ObjectServer. Procedimiento v Obtener la información de conexión del ObjectServer Esta información es el nombre de host o dirección IP del sistema host y el número de puerto del ObjectServer. El número de puerto predeterminado del ObjectServer es 4100. v Cree y configure el origen de sucesos. Para obtener más información, consulte “Configuración del origen de datos de ObjectServer predeterminado” en la publicación Guía de administración. v Después de crear el origen de sucesos, puede crear y configurar un servicio de lector de sucesos asociado. Para obtener más información sobre cómo crear y configurar un servicio de lector de sucesos, consulte la publicación Guía de la interfaz de usuario. 42 Netcool/Impact: Guía de soluciones Capítulo 3. Trabajar con servicios Trabajar con servicios significa configurar servicios predefinidos y crear y configurar servicios definidos por el usuario. Visión general de servicios Los servicios realizan muchas de las funciones asociadas con Servidor Impact, incluidas la supervisión de orígenes de sucesos, el envío y recepción de correo electrónico y la activación de políticas. El servicio más importante es el lector de sucesos de OMNIbus, que puede utilizarse para supervisar un ObjectServer con respecto a los sucesos nuevos, actualizados o suprimidos. El procesador de sucesos, que procesa los sucesos recuperados de los lectores y escuchas, también es importante para el funcionamiento de Netcool/Impact. Los servicios internos controlan los procesos estándar de la aplicación y coordinan controlan las tareas realizadas, por ejemplo: v Recibir sucesos del ObjectServer y otras bases de datos externas v Ejecutar políticas v Responder y dar prioridad a las alertas v Enviar y recibir correos electrónicos y mensajes instantáneos v Manejar errores Algunos servicios internos tienen valores predeterminados, que puede habilitar en lugar de configurar sus propios servicios o además de crear sus propios servicios. Para algunos de los servicios internos básicos, sólo es necesario especificar si desea grabar el registro del servicio en un archivo. Para otros servicios, debe añadir información como, por ejemplo, el puerto, host y los datos de inicio. Los servicios definidos por el usuario son servicios que el usuario puede crear para utilizarlos con una política específica. Generalmente, los servicios se configuran una sola vez, al diseñar la solución. Después de ello, no es necesario gestionar activamente los servicios a menos que modifique el diseño de la solución. Para configurar servicios, primero debe determinar que funcionalidad de servicio necesita utilizar en la solución. A continuación, cree u configure los servicios necesarios mediante la GUI. Después de configurar los servicios, puede iniciarlos y detenerlos y gestionar los registros de servicio. Servicios predefinidos Los servicios predefinidos son servicios que se crean automáticamente al instalar Netcool/Impact. Puede configurar los servicios predefinidos, pero no puede crear nuevas instancias de los servicios predefinidos y no puede suprimir las existentes. Estos servicios están predefinidos: v Procesador de sucesos © Copyright IBM Corp. 2006, 2014 43 v v v v Remitente de correo electrónico Activador de políticas en hibernación Registrador de política Gestor de línea de mandatos Servicios definidos por el usuario Los servicios definidos por el usuario son servicios que puede crear, modificar y suprimir. También puede utilizar la instancia predeterminada de estos servicios que se crea durante la instalación. Puede crear servicios definidos por el usuario utilizando los valores predeterminados que se almacenan en el repositorio global o seleccionarlos de una lista en el panel de tareas de servicios del panel de navegación. Todos los servicios definidos por el usuario se listan en el panel de servicios, donde puede iniciar y detenerlos, del mismo modo que con los servicios internos. Puede añadir estos servicios a un proyecto como miembros del proyecto. Estos servicios están definidos por el usuario: v Lectores de sucesos v Escuchas de sucesos v Lectores de correo electrónico v Activadores de política servicio del lector de sucesos de OMNIbus Los lectores de sucesos de OMNIbus son servicios que supervisan un origen de sucesos ObjectServer de Netcool/OMNIbus con respecto a las alertas nuevas, actualizadas y suprimidas y luego ejecutan políticas cuando la información de las alertas coincide con las condiciones de filtro que el usuario ha definido. El servicio del lector de sucesos utiliza la información del host y de puerto de un origen de datos de ObjectServer especificado, de modo que pueda conectarse con un ObjectServer para sondear sucesos nuevos y actualizados y almacenarlos en una cola. El servicio de procesador de sucesos solicita los sucesos del lector de sucesos. Cuando un lector de sucesos descubre alertas nuevas, actualizadas o suprimidas en ObjectServer, las recupera y las envía a una cola de sucesos. Allí, el suceso espera a que lo maneje el procesador de sucesos. Este servicio se configura definiendo un número de filtros de restricción que coinciden los sucesos de entrada y pasa los sucesos coincidentes a las políticas adecuadas. El servicio puede contener varios filtros de restricción, cada uno de los cuales desencadena una política diferente desde la misma corriente de sucesos o puede desencadenar una sola política. Puede configurar un servicio de lector de sucesos para encadenar varias políticas conjuntamente de modo que se ejecuten de forma secuencial cuando las desencadena un suceso del lector de sucesos. Importante: antes de crear un servicio de lector de sucesos de OMNIbus, debe disponer de un origen de datos ObjectServer válido al que se conectará el lector de sucesos para sondear los sucesos nuevos y actualizados. 44 Netcool/Impact: Guía de soluciones Arquitectura del lector de sucesos de OMINbus Este diagrama muestra la relación entre Netcool/Impact, un lector de sucesos de OMNIbus y un ObjectServer. Figura 4. Arquitectura de lector de sucesos Proceso del lector de sucesos de OMNIbus Las fases del proceso de lector de sucesos de OMNIbus son inicio, sondeo de sucesos, consulta de sucesos, notificación de sucesos suprimidos y colocación en cola de sucesos. Inicio Cuando se inicia el lector de sucesos, éste lee sucesos utilizando el valor de Serial o StateChange utilizado antes de concluirse. Para leer todos los sucesos durante el inicio, pulse Borrar estado. Sondeo de sucesos Durante la fase de sondeo de sucesos, el lector de sucesos de OMNIbus consulta el ObjectServer a intervalos para ver si hay sucesos nuevos y no procesados. Puede establecer el intervalo de sondeo al configurar el lector de sucesos. Consulta de sucesos Cuando el lector de sucesos de OMNIbus consulta ObjectServer, ya sea durante el inicio o a intervalos, al realizar sondeos en busca de sucesos, lee el archivo de estado, recupera sucesos nuevos o actualizados y registra el archivo de estado.. Para obtener más información, consulte “Consulta de sucesos” en la página 46. Notificación de sucesos suprimidos Si el lector de sucesos de OMNIbus está configurado para ejecutar una política cuando se suprima un suceso del ObjectServer, estará a la escucha del ObjectServer mediante la interfaz IDUC para ver si hay notificación de alertas suprimidas. La notificación de supresión IDUC incluye los datos de campos de sucesos para la alerta suprimida. Colocación en cola de sucesos Una vez que el lector de sucesos de OMNIbus ha recuperado los sucesos nuevos o actualizados, o ha recibido los sucesos mediante la notificación de supresión, compara los datos de los campos de los sucesos con su conjunto de filtros. Para obtener más información, consulte “Colocación en cola de sucesos” en la página 46. Capítulo 3. Trabajar con servicios 45 Consulta de sucesos Cuando el lector de sucesos de OMNIbus consulta ObjectServer, ya sea durante el inicio o a intervalos, al realizar sondeos en busca de sucesos, lee el archivo de estado, recupera sucesos nuevos o actualizados y registra el archivo de estado. Lectura del archivo de estado El archivo de estado es un archivo de texto que utiliza el lector de sucesos de OMNIbus para copiar en la memoria caché información de estado sobre el último suceso leído en el ObjectServer. El lector de sucesos lee el archivo de estado para buscar el valor de Serial o StateChange del último suceso de lectura. Para obtener más información, consulte “Lectura del archivo de estado”. Recuperación de sucesos nuevos o actualizados El lector de sucesos se conecta al ObjectServer y recupera sucesos nuevos o actualizados que se han producido durante el último suceso de lectura. Durante esta fase, el lector de sucesos recupera todos los sucesos nuevos o actualizados del ObjectServer, utilizando información del archivo de estado para especificar el subconjunto correcto de sucesos. Grabación del archivo de estado Después de que el lector de sucesos recupere los sucesos del ObjectServer, copiará en memoria caché el valor de Serial o StateChange del último suceso procesado. Lectura del archivo de estado: El archivo de estado es un archivo de texto que utiliza el lector de sucesos de OMNIbus para copiar en la memoria caché información de estado sobre el último suceso leído en el ObjectServer. Si el lector de sucesos está configurado para obtener sólo nuevos sucesos del ObjectServer, el archivo de estado contiene el valor Serial del último suceso leído en el ObjectServer. Si el lector de sucesos está configurado para obtener los sucesos nuevos y actualizados del ObjectServer, el archivo contiene el valor StateChange del último suceso leído. El lector de sucesos lee el contenido del archivo de estado siempre que sondea el ObjectServer y pasa el valor de Serial o StateChange como parte de la consulta. Colocación en cola de sucesos Una vez que el lector de sucesos de OMNIbus ha recuperado los sucesos nuevos o actualizados, o ha recibido los sucesos mediante la notificación de supresión, compara los datos de los campos de los sucesos con su conjunto de filtros. Si el suceso coincide con uno o más filtros, el lector de sucesos coloca el suceso en la cola de sucesos con un puntero que apunta a la política correspondiente. Una vez que los sucesos se encuentran en la cola de sucesos, pueden ser seleccionados por el servicio de procesador de sucesos. El procesador de sucesos pasa los sucesos a las políticas correspondientes al motor de política para su proceso. Configuración del lector de sucesos de OMNIbus Puede configurar las propiedades siguientes de un lector de sucesos de OMNIbus. v Nombre del lector de sucesos v Origen de sucesos ObjectServer que el lector de sucesos debe supervisar v Intervalo con el que el lector de sucesos sondeará ObjectServer 46 Netcool/Impact: Guía de soluciones v v v v v Campos de suceso que desea recuperar de ObjectServer Correlación de sucesos Bloqueo de sucesos Orden en el que el lector de sucesos recupera los sucesos de ObjectServer Opciones de inicio, registro de servicio e informes Separador Valores generales del servicio de lector de sucesos de OMNIbus Utilice esta información para configurar los valores generales del servicio de lector de sucesos de OMNIbus. Tabla 16. Servicio de lector de sucesos - separador Valores generales Elemento de tabla Descripción Nombre de servicio Escriba un nombre exclusivo para identificar el servicio. Origen de datos Seleccione un origen de datos OMNIbusObjectServer. El origen de datos ObjectServer representa la instancia del ObjectServer de Netcool/OMNIbus ObjectServer que el usuario supervisa mediante este servicio. Puede utilizar el origen de datos de ObjectServer predeterminado que se crea durante la instalación, defaultobjectserver. Intervalo de sondeo El intervalo de sondeo en milisegundos con el que el lector de sucesos sondea ObjectServer para saber si existen sucesos nuevos o actualizados. Seleccione o especifique la frecuencia con la que el servicio debe sondear los sucesos del origen de sucesos. Si deja vacío este campo, el lector de sucesos sondeará ObjectServer cada 3 segundos (3000 milisegundos). Restringir campos: Campos Puede realizar este paso después de guardar el servicio OMNIbusEventReader. Puede especificar los campos de suceso que desea recuperar de ObjectServer. De forma predeterminada, en las alertas se recuperan todos los campos. Para mejorar el rendimiento del lector de sucesos de OMNIbus y reducir el impacto sobre el rendimiento de ObjectServer, configure el lector de sucesos de modo que recupere sólo los campos utilizados en las políticas correspondientes. Pulse el botón Campos para acceder a una lista con todos los campos disponibles en el origen de datos de ObjectServer seleccionado. Puede disminuir el tamaño de la consulta seleccionando únicamente los campos a los que necesita acceder en su política. Pulse el botón Optimizar lista para implementar los cambios. El botón Optimizar lista sólo se habilitará una vez guardado el servicio OMNIbusEventReader. Inicio: Automáticamente .Seleccione esta opción para iniciar automáticamente el servicio al iniciarse el servidor cuando se inicia el servidor. También puede iniciar y detener el servicio desde la GUI. Registro de servicio: Escribir en archivo Selecciónelo para escribir información de registro en un archivo. Recopilar informes: Habilitar Selecciónelo para habilitar la recopilación de datos para los informes de políticas. Capítulo 3. Trabajar con servicios 47 Tabla 16. Servicio de lector de sucesos - separador Valores generales (continuación) Elemento de tabla Descripción Borrar estado: Borrar Al pulsar el botón Borrar estado, la información de Serial y StateChange almacenada en el lector de sucesos se restablece en 0. El lector de sucesos recupera todos los sucesos de ObjectServer durante el inicio y los coloca en la cola de sucesos para su proceso. Si el lector de sucesos se configura para obtener los sucesos actualizados, consulta ObjectServer para conocer todos los sucesos donde StateChange >= 0. De lo contrario, consulta en ObjectServer los sucesos en los que Serial > 0. Sólo puede utilizar el botón Borrar estado sólo para borrar el estado del lector de sucesos cuando se detiene el servicio. Al pulsar en el botón cuando se está ejecutando el servicio no se cambia el estado del lector de sucesos. Borrar cola: Borrar Pulse para borrar los sucesos no procesados. Separador Correlación de sucesos del servicio de lector de sucesos de OMNIbus En el separador Correlación de sucesos se establecen los sucesos para activar políticas cuando coinciden con un filtro. Tabla 17. Pestaña Correlación de sucesos Elemento de ventana Descripción Probar sucesos con todos los filtros Seleccione esta opción para probar los sucesos con todos los filtros y ejecutar las políticas coincidentes. Si un suceso coincide con más de un filtro, se activarán todas las políticas que coincidan con los criterios de filtro. Detener la prueba tras la primera coincidencia 48 Netcool/Impact: Guía de soluciones Seleccione esta opción para detener la prueba después de la primera política coincidente y activar sólo la primera política coincidente. Tabla 18. Acciones en la pestaña Correlación de sucesos Elemento de ventana Descripción Obtener sucesos actualizados Seleccione esta opción para recibir sucesos actualizados y nuevos sucesos de ObjectServer. Todos los nuevos sucesos se envían automáticamente. Consulte la descripción del campo Ordenar por para obtener más información. Si no selecciona Obtener sucesos actualizados, Netcool/Impact utiliza en su lugar Serial. Puede configurar el servicio OMNIbusEventReader para captar sólo nuevos sucesos y para trabajar con un par de migración tras error/restablecimiento de ObjectServer en el archivo eventreader .props. Importante: Si se añaden propiedades al archivo eventreader .props, se altera temporalmente la selección o deselección del recuadro de selección Obtener sucesos actualizados. v Si tiene previsto utilizar este enfoque en un escenario de migración tras error de ObjectServer, consulte la sección Gestión de OMNIbusEventReader con un par de ObjectServer para nuevos sucesos o inserciones de la sección Resolución de problemas. v Si no selecciona Obtener sucesos actualizados, Netcool/Impact utiliza el campo Serie para realizar una consulta a Netcool/OMNIbus. Serie es un campo de incremento automático en Netcool/OMNIbus y tiene un límite máximo antes de cambiar al pasar el puntero por encima y restablecerse. Para obtener información sobre cómo configurar Netcool/Impact para manejar cambios al pasar el ratón de Serie, consulte la sección Gestión de cambios al pasar el ratón de Serie en la sección Resolución de problemas. Obtener sucesos de estado Seleccione esta opción para recibir los sucesos de estado que el servicio Autosupervisión inserta en ObjectServer. Ejecutar política en supresiones Seleccione esta opción si desea que el lector de sucesos reciba notificación cuando se supriman alertas de ObjectServer. A continuación, seleccione en la lista Política la política que desea ejecutar cuando se produzca la notificación. Política Seleccione una política para que se ejecute cuando se borren sucesos de ObjectServer. Capítulo 3. Trabajar con servicios 49 Tabla 18. Acciones en la pestaña Correlación de sucesos (continuación) Elemento de ventana Descripción Bloqueo de sucesos: habilitar Seleccione esta opción si desea utilizar el bloqueo de orden de sucesos y especifique la expresión de bloqueo en el campo Expresión. El bloqueo de sucesos permite a un procesador de sucesos de varias hebras clasificar las alertas de entrada en función de los valores de los campos de alertas especificados y luego procesarlas individualmente. Con el bloqueo de sucesos habilitado, si existe más de un suceso dentro de un valor de bloqueo determinado, estos sucesos no se procesan al mismo tiempo. Estos sucesos se procesan en un orden específico en la cola. Utilice el bloqueo de sucesos en las situaciones en las que desee impedir que un procesador de sucesos de varias hebras intente acceder a un recurso individual desde más de una instancia de una política que se ejecutan simultáneamente. Expresión La expresión de bloqueo consta de uno o más nombres de campos de alertas. Para bloquear un solo campo, especifique el nombre de campo, por ejemplo: Node Para bloquear más de un campo, concaténelos con el signo +, por ejemplo: Node+Severity Si el valor de este campo es igual en los dos sucesos, entonces se bloqueará un suceso y la segunda hebra tendrá que esperar hasta que haya finalizado la primera. Correlación nueva 50 Netcool/Impact: Guía de soluciones Pulse para añadir un filtro nuevo. Tabla 18. Acciones en la pestaña Correlación de sucesos (continuación) Elemento de ventana Descripción Ordenar por Si desea ordenar los sucesos de entrada recuperados de ObjectServer, especifique el nombre de un campo de alerta o una lista de campos separados por comas. El lector de sucesos ordenará los sucesos entrantes en orden ascendente según el contenido de este campo. Este campo o lista de campos es idéntico al contenido de una cláusula ORDER BY de una sentencia SQL. Si especifica un solo campo, el lector de sucesos ordena los sucesos de entrada por el valor del campo especificado. Si especifica varios campos, los sucesos se agrupan por contenido del primer campo y luego se clasifican dentro de cada grupo por contenido del segundo campo, etc. Por ejemplo, para clasificar los sucesos de entrada por el contenido del campo Node, especifique Node. Para clasificar los sucesos por el contenido del campo Node y luego por el contenido del campo Summary, especifique Node, Summary. También puede especificar que el orden de clasificación sea ascendente o descendente utilizando las palabras clave ASC o DESC. Por ejemplo, para clasificar los sucesos de entrada por el contenido del campo Node por orden ascendente, especifique lo siguiente, Node ASC. Tenga en cuenta que todos los sucesos recuperados del servidor de objetos se ordenan inicialmente por el campo Serial o StateChange antes de que se realice cualquier operación de clasificación adicional. Si selecciona la opción Obtener sucesos actualizados, consulte los recuadros de selección Acciones de la sección Correlación de sucesos de la ventana; los sucesos se clasifican por el campo StateChange. Si no se especifica esta opción, los sucesos de entrada se clasifican por el campo Serial. Analizar tabla de correlación de sucesos Pulse para analizar los filtros de la tabla Correlación de sucesos. Correlaciones Las correlaciones de sucesos permiten especificar qué políticas desea ejecutar cuando se recuperan determinados sucesos. Capítulo 3. Trabajar con servicios 51 Cada correlación consta de un filtro que especifica el tipo de suceso y un nombre de política. Debe especificar cómo mínimo una correlación de sucesos para que el lector de sucesos funcione. La sintaxis del filtro es la misma que la cláusula WHERE de una sentencia SQL SELECT. Esta cláusula consta de una o más comparaciones que deben ser true a fin de que se ejecute la política especificada. Para obtener más información sobre la sintaxis de filtro SQL, consulte Guía de consulta de políticas. En los ejemplos siguientes se muestran los filtros de correlaciones de sucesos. AlertKey = ’El nodo no responde’ AlertKey = ’El nodo no responde al ping de red’ AND Node = ’ORA_Host_01’ Coincidencia de sucesos Puede especificar si desea ejecutar sólo la primera política coincidente de las correlaciones de sucesos o si desea ejecutar cada una de las políticas coincidentes. Si selecciona ejecutar cada una de las políticas coincidentes, el lector de sucesos de OMNIbus colocará un duplicado del suceso en la cola de sucesos para cada una de las políticas coincidentes. El suceso se procesará tantas veces como filtros coincidentes haya en el lector de sucesos. Acciones De forma predeterminada, el intermediario de sucesos supervisa la existencia de nuevas alertas en ObjectServer, pero también puede configurarlo para que supervise si hay alertas actualizadas y para que se le notifique cuando se suprima una alerta. Además, puede configurarlo para obtener todas las alertas no procesadas del ObjectServer durante el inicio. Bloqueo de sucesos El bloqueo de sucesos permite categorizar un intermediario de sucesos de varias hebras basado en los valores de los campos de alerta especificados y después procesarlos en una categoría, uno por uno, según el orden en el que se enviaron a ObjectServer. El bloqueo de sucesos bloquea el orden en el que el intermediario de sucesos procesa las alertas de cada categoría. Recuerde: Cuando el bloqueo de sucesos está habilitado en el lector, los sucesos que éste lee sólo se procesan en el servidor primario del clúster. Puede utilizar el bloqueo de sucesos en situaciones donde desee conservar el orden en el que se procesan los sucesos entrantes, o en situaciones en que desea evitar que un procesador de sucesos multi-hebra intente acceder a un único recurso desde más de una instancia de una política que estén simultáneamente en ejecución. Puede especificar la forma en la que el lector de sucesos categoriza las alertas entrantes utilizando una expresión denominada expresión de bloqueo. La expresión de bloqueo consta de uno o más nombres de campo de alerta concatenados con un signo de suma (+) de la forma siguiente: campo[+campo...] 52 Netcool/Impact: Guía de soluciones Donde campo es el nombre de un campo de alerta de la tabla alerts.status de ObjectServer. Cuando un lector de sucesos recupera alertas del ObjectServer, evalúa la expresión de bloqueo para cada alerta entrante y la categoriza según el contenido de los campos de la alerta de la expresión. Por ejemplo, cuando se utiliza la expresión de bloqueo Nodo, el intermediario de sucesos categoriza todas las alertas entrantes en función del valor del campo Nodo de la alerta y, a continuación, los procesa individualmente en una categoría a fin de que se envíen al ObjectServer. En el ejemplo siguiente: Nodo+ClaveAlerta El intermediario de sucesos categoriza todas las alertas entrantes en función de los valores concatenados en los campos Nodo y ClaveAlerta. En este ejemplo, una alerta cuyo valor de Nodo es Nodo1 y cuyo valor de ClaveAlerta es 123456 se categorizan por separado. Orden de sucesos En primer lugar el lector realiza la ordenación en función del valor de StateChange o Serial, dependiendo de si se utiliza o no Obtener actualizaciones. Cada suceso tiene un valor de Serial exclusivo, de forma que el campo Ordenar por se ignora. En instancias donde haya más de un suceso con el mismo StateChange, el lector utiliza el campo Ordenar por para ordenar los sucesos después de que se hayan ordenado en orden ascendente por StateChange. Servicio de escucha de sucesos de base de datos El servicio de escucha de sucesos de base de datos supervisa un origen de sucesos Oracle para ver si hay sucesos nuevos, actualizados y suprimidos. Este servicio únicamente funciona con las bases de datos Oracle. Cuando el servicio recibe los datos, evalúa el suceso con los filtros y políticas especificados para el servicio y envía el suceso a las políticas coincidentes. El servicio escucha asíncronamente los sucesos generados por un servidor de bases de datos Oracle y luego ejecuta una o varias políticas en respuesta. El servicio se configura mediante la GUI. Las propiedades de configuración permiten especificar una o varias políticas que deben ejecutarse cuando el escucha recibe sucesos entrantes del servidor de bases de datos. Configuración del servidor de bases de datos Para poder utilizar el escucha de sucesos de base de datos, debe configurar el cliente de bases de datos e instalarlo en el servidor de bases de datos Oracle. Acerca de esta tarea El cliente de bases de datos es el componente que envía los sucesos desde el servidor de bases de datos a Netcool/Impact. Constan de un conjunto de objetos de esquema Java de Oracle y archivos de propiedades relacionados. Cuando instala el Servidor Impact, el instalador copia un archivo tar que contiene los archivos de programa cliente en el sistema local. Capítulo 3. Trabajar con servicios 53 Siga estos pasos para configurar el servidor de base de datos: Procedimiento 1. Copiar el archivo tar de cliente en el sistema donde Oracle está en ejecución y extraer su contenido. a. Copie el archivo tar de cliente, $IMPACT_HOME/install/agents/ oracleclient.tar, de Netcool/Impact en un directorio temporal en el sistema en el que Oracle se está ejecutando. b. Extraiga el contenido del tar mediante el mandato tar de UNIX o mediante un programa de utilidad de archivado de Windows, como por ejemplo WinZip. 2. Edite el archivo propiedades nameserver en el lado del cliente de la base de datos. El archivo tar de cliente contiene el archivo nameserver.props que el cliente de base de datos utiliza para determinar los detalles de conexión de NameServer. Para obtener información sobre cómo configurar este archivo, consulte “Edición del archivo nameserver.props para el cliente de base de datos”. 3. Opcional: Edite el archivo de propiedades de escucha. El archivo tar de cliente contiene impactdblistener.props con valores adicionales para el cliente de base de datos. Para obtener información sobre cómo configurar este archivo, consulte “Edición de archivo de propiedades de escucha” en la página 55. 4. Instalar los archivos de cliente en el servidor de bases de datos utilizando el programa de utilidad loadjava de Oracle. Oracle proporciona el programa de utilidad $ORACLE_HOME/bin/loadjava que puede utilizar para instalar los archivos de cliente en el servidor de base de datos. Para obtener información sobre cómo instalar los archivos de cliente en el servidor de base de datos, consulte “Instalación de los archivos cliente en Oracle” en la página 56. 5. Otorgar permisos de base de datos. Para que el escucha de sucesos de base de datos funcione, debe otorgar un determinado conjunto de permisos en el servidor de bases de datos Oracle.. Para obtener más información sobre cómo otorgar permisos de base de datos, consulte “Cómo otorgar permisos de base de datos” en la página 56. Edición del archivo nameserver.props para el cliente de base de datos El archivo tar de cliente contiene el archivo nameserver.props que el cliente de base de datos utiliza para determinar los detalles de conexión de NameServer. El cliente de bases de datos utiliza el servidor de nombres para buscar la instancia primaria del Servidor Impact y conectarse a ella. Restricción: En las configuraciones en clúster de Netcool/Impact, el escucha de sucesos de base de datos se ejecuta sólo en el servidor primario. En el ejemplo siguiente se muestra un ejemplo del archivo nameserver.props que el cliente de base de datos puede utilizar para conectarse a una configuración de un único servidor de NameServer. nameserver.0.host=NCI1 nameserver.0.port=9080 nameserver.0.location=/nameserver/services 54 Netcool/Impact: Guía de soluciones nameserver.userid=tipadmin nameserver.password=tippass nameserver.count=1 En este ejemplo, NameServer está ubicado en NCI1 Servidor Impact y se está ejecutando en el puerto predeterminado, 9080. El usuario y la contraseña de NameServer tienen los valores predeterminados tipadmin y tippass. En el ejemplo siguiente se muestra un ejemplo del archivo nameserver.props que el cliente de base de datos puede utilizar para conectar con un clúster que consta de dos instancias de NameServer. nameserver.0.host=NCI1 nameserver.0.port=9080 nameserver.0.location=/nameserver/services nameserver.1.host=NCI2 nameserver.1.port=9080 nameserver.1.location=/nameserver/services nameserver.userid=tipadmin nameserver.password=tippass nameserver.count=2 En este ejemplo, los NameServers están ubicados en sistemas llamados Servidores Impact NCI1 y NCI2 y se ejecutan en el puerto predeterminado, 9080. Edición de archivo de propiedades de escucha El archivo tar de cliente contiene impactdblistener.props con valores adicionales para el cliente de base de datos. Edite este archivo de forma que contenga el nombre correcto del clúster de Servidor Impact. Además, puede cambiar las propiedades de depuración y delimitador. En la Tabla 19 se muestran las propiedades del archivo de propiedades del escucha: Tabla 19. Archivo de propiedades de escucha de cliente de base de datos Propiedad Descripción impact.cluster.name Nombre del clúster de Servidor Impact donde se ejecuta el escucha de sucesos de base de datos. El valor predeterminado de esta propiedad es NCICLUSTER. impact.dblistener.debug Especifica si se debe ejecutar el cliente de bases de datos en modalidad de depuración. El valor predeterminado de esta propiedad es true. impact.dblistener.delim Especifica el carácter de delimitador que separa pares nombre/valor en el elemento VARRAY enviado por procedimientos almacenados Java al cliente de bases de datos. El valor predeterminado de esta propiedad es el carácter de barra vertical (|). No puede utilizar los dos puntos (:) como delimitador. Capítulo 3. Trabajar con servicios 55 Instalación de los archivos cliente en Oracle Oracle proporciona el programa de utilidad $ORACLE_HOME/bin/loadjava que puede utilizar para instalar los archivos de cliente en el servidor de base de datos. Antes de empezar Si está migrando a Netcool/Impact 6.1.1, elimine los archivos Java y de propiedades existentes. Para eliminar los archivos existentes, utilice el mandato siguiente: dropjava -user nombre_usuario/contraseña <archivo> nombre_usuario, y contraseña son un nombre de usuario y una contraseña válidos para un usuario cuyo esquema contiene los recursos de base de datos en los que se ejecutan los procedimientos almacenados Java. Procedimiento 1. Navegue al directorio ORACLE_HOME/bin. 2. Instale los archivos de propiedades y jar de cliente. a. Utilice el mandato siguiente para instalar el archivo nameserver.jar: loadjava -user nombre_usuario/contraseña -resolve nameserver.jar b. Utilice el mandato siguiente para instalar el archivo impactdblistener.jar: loadjava -user nombre_usuario/contraseña -resolve impactdblistener.jar c. Utilice el mandato siguiente para instalar el archivo nameserver.props: loadjava -user nombre_usuario/contraseña -resolve nameserver.props d. Utilice el mandato siguiente para instalar el archivo impactdblistener.props: loadjava -user nombre_usuario/contraseña -resolve impactdblistener.props Importante: Debe seguir este orden de instalación, de lo contrario loadjava no podrá resolver referencias externas entre archivos e informará de errores durante la instalación. Cómo otorgar permisos de base de datos Para que el escucha de sucesos de base de datos funcione, debe otorgar un determinado conjunto de permisos en el servidor de bases de datos Oracle. Procedimiento 1. Otorgue los permisos entrando los mandatos siguientes en un indicador de mandatos de Oracle: exec dbms_java.grant_permission( ’SCHEMA’,’SYS:java.net.SocketPermission’, ’nombre_host:puerto’,’connect,resolve’ ) / exec dbms_java.grant_permission( ’SCHEMA’,’SYS:java.net.SocketPermission’, ’nombre_host:puerto_escucha’,’connect,resolve’ ) / exec dbms_java.grant_permission( ’SCHEMA’, ’SYS:java.lang.RuntimePermission’, ’shutdownHooks’ , ’’); / exec dbms_java.grant_permission( ’SCHEMA’,’SYS:java.util.logging.LoggingPermission’ ,’control’, ’’ ); / exec dbms_java.grant_permission(’SCHEMA’, ’SYS:java.util.PropertyPermission’, ’*’, ’read, write’) / exec dbms_java.grant_permission( ’SCHEMA’, ’SYS:java.lang.RuntimePermission’, 56 Netcool/Impact: Guía de soluciones ’getClassLoader’, ’’ ) / exec dbms_java.grant_permission( ’SCHEMA’,’SYS:java.net.SocketPermission’, ’nombre_host:40000’,’connect,resolve’ ); SCHEMA es el nombre del esquema de base de datos, nombre_host es el nombre del host en el que está ejecutando el Servidor Impact, puerto es el puerto HTTP del servidor y puerto_escucha es el puerto utilizado por el escucha de sucesos de base de datos. 2. Opcional: Es posible que deba otorgar permisos de socket a puertos adicionales para Oracle. Por ejemplo, los dos números de puerto siguientes en la secuencia de asignación para utilizarlos al conectarse al servicio de escucha de sucesos de base de datos. Puede ajustar el puerto de comunicación en Servidor Impact para que el cliente de Oracle pueda otorgar permisos para conectar con Servidor Impact en ese puerto utilizando la propiedad impact.server.rmiport. Por ejemplo: IMPACT_HOME/etc/<servername>_server.props impact.server.rmiport=50000 Otorgue el permiso para conectar con este puerto en la base de datos de Oracle (puerto 50000 en el ejemplo), de lo contrario Servidor Impact se inicia en un puerto aleatorio. Debe otorgar permisos para un puerto diferente cada vez que se reinicie el Servidor Impact. Ventana de configuración del servicio de escucha de sucesos de base de datos El escucha de sucesos de base de datos se configura estableciendo sucesos para desencadenar políticas cuando coinciden con un filtro. Tabla 20. Valores de correlación de sucesos para la ventana de configuración de servicio de escucha de sucesos de base de datos Elemento de ventana Descripción Probar sucesos con todos los filtros Pulse este icono si, cuando un suceso coincide con más de un filtro, desea activar todas las políticas que coinciden con los criterios de filtro. Detener la prueba tras la primera coincidencia Pulse este icono si desea activar sólo la primera política coincidente. Puede elegir probar los sucesos con todos los filtros y ejecutar las políticas coincidentes o detener la prueba después de la primera política coincidente. Correlación nueva: Nueva Pulse este icono para crear un filtro de sucesos. Analizar tabla de correlación de sucesos Pulse este icono para visualizar los conflictos en las correlaciones de filtros que ha establecido para este servicio. Inicio: Automáticamente al iniciarse el servidor .Seleccione esta opción para iniciar automáticamente el servicio cuando se inicia el servidor. También puede iniciar y detener el servicio desde la GUI. Registro de servicio: Escribir en archivo Selecciónelo para escribir información de registro en un archivo. Capítulo 3. Trabajar con servicios 57 Envío de sucesos de base de datos Realice estas tareas para configurar la base de datos para que envíe sucesos. v Crear una especificación de llamada que publique la función sendEvent() desde la biblioteca de cliente de bases de datos. v Crear desencadenantes que llamen al procedimiento almacenado resultante. Antes de crear estos objetos en la base de datos, debe comprender qué clases de sucesos de base de datos desea enviar y qué condiciones harán que se envíen. Por ejemplo, si desea enviar un suceso a Netcool/Impact cada vez que se inserta una fila en una tabla, debe conocer la identidad de la tabla, el subconjunto de información de fila que se debe enviar como parte del suceso y el nombre de la condición (por ejemplo, After insert) que desencadena la operación. Para obtener más información sobre los procedimientos almacenados Java, especificaciones de llamada y desencadenantes, consulte la publicación Oracle Java Stored Procedure Developer's Guide. Creación de la especificación de llamada El cliente de bases de datos expone una función denominada sendEvent() que permite a los objetos de esquema de Oracle (en este caso, desencadenantes) enviar sucesos a Netcool/Impact. La función sendEvent() se encuentra en la clase com.micromuse.response.service.listener.database. DatabaseListenerClient, que ha compilado y cargado al instalar el cliente en el servidor de bases de datos. La función tiene la sintaxis siguiente: sendEvent(java.sql.Array x) Donde cada elemento de la matriz x es una serie que contiene un par nombre/valor en el suceso. Para que los objetos de Oracle llamen a esta función, debe crear una especificación de llamada que la publique en la base de datos como procedimiento almacenado. En el ejemplo siguiente se muestra una especificación de llamada que publica sendEvent() como un procedimiento denominado test_varray_proc: CREATE OR REPLACE PROCEDURE test_varray_proc(v_array_inp db_varray_type) AS LANGUAGE JAVA NAME ’com.micromuse.response.service.listener.database.DatabaseListenerClient. sendEvent(java.sql.Array)’; / En este ejemplo, db_varray_type es un elemento VARRAY definido por el usuario que se puede describir utilizando la sentencia siguiente: CREATE TYPE db_varray_type AS VARRAY(30) OF VARCHAR2(100); Esta especificación de llamada y el tipo VARRAY se utilizan en ejemplos en otros lugares de este capítulo. Cuando se llama el procedimiento publicado con esta especificación de llamada, se le pasa un VARRAY de Oracle en el que cada elemento es una serie que contiene una pareja de nombre/valor en el suceso. El nombre y valor en la serie se separan mediante un carácter de barra vertical (|) u otro carácter según se haya especificado al configurar el cliente de bases de datos. 58 Netcool/Impact: Guía de soluciones Creación de desencadenantes Puede crear desencadenantes para sucesos DML, sucesos DDL, sucesos del sistema y sucesos de usuario. Desencadenantes de sucesos DML: Los sucesos DML se envían a Netcool/Impact cuando la base de datos realiza operaciones que cambian filas en una tabla. Estos incluyen los mandatos SQL INSERT, UPDATE y DELETE. Puede configurar la base de datos para enviar sucesos DML creando desencadenantes que estén asociados con estas operaciones. Con mucha frecuencia estos desencadenantes toman datos de campos de las filas que se están cambiando en ese momento y los pasan al cliente de bases de datos utilizando la especificación de llamada que ha creado anteriormente. De esta forma, la base de datos notifica las inserciones, actualizaciones y supresiones a Netcool/Impact para que se procesen como sucesos. Cuando el cliente de bases de datos recibe los datos de los campos del desencadenante, realiza una operación SELECT de la tabla para determinar el tipo de datos subyacente de cada campo. Debido a que la fila correspondiente se está cambiando en ese momento, es probable que Oracle notifique un error de tabla en mutación (ORA-04091) cuando el cliente de bases de datos realice SELECT. Para evitar recibir este error, los desencadenantes DML deben crear en primer lugar una copia de los datos de fila y a continuación utilizar esta copia al enviar el suceso. El ejemplo siguiente contiene declaraciones de tipo de tabla, declaraciones de variable y definiciones de desencadenante que crean una copia temporal de datos de fila. Puede modificar este ejemplo para su propio uso. Este ejemplo utiliza el tipo db_varray_type que se describe en la sección anterior. Los desencadenantes de este ejemplo se ejecutan en respuesta a una tabla denominada dept. Este ejemplo contiene: v Declaración de tipo para deptTable, que es una tabla anidada de db_varray_type. v Declaración de variable para dept1, que es una tabla de tipo deptTable. Esta tabla almacena la copia de los datos de fila. v Declaración de variable de emptyDept, que es una segunda tabla de tipo deptTable. Esta tabla está vacía y se utiliza para restablecer dept1. v Definición de desencadenante para dept_reset, que se utiliza para restablecer dept1. v Definición de desencadenante para dept_after_row, que llena dept1 con datos de campo de las filas cambiadas. v Definición de desencadenante para dept_after_stmt, que realiza un bucle a través de las filas copiadas y envía los datos de campos al cliente de bases de datos utilizando la especificación de llamada definida en la sección anterior. La definición de desencadenante de dept_after_row está intencionadamente incompleta en este ejemplo, porque varía en función de si gestiona operaciones INSERT, UPDATE o DELETE. Capítulo 3. Trabajar con servicios 59 Esto es una definición de ejemplo para este desencadenante: CREATE OR REPLACE PACKAGE dept_pkg AS /* deptTable es una tabla anidada de VARRAY que se enviará */ /* al cliente de bases de datos */ TYPE deptTable IS TABLE OF db_varray_type INDEX BY BINARY_INTEGER; /* dept1 almacenará el VARRAY real dept1 deptTable; /* emptyDept se utiliza para inicializar dept1 */ emptyDept deptTable; end; / CREATE OR REPLACE TRIGGER dept_reset BEFORE INSERT OR UPDATE OR DELETE ON dept BEGIN /* Inicializar dept1 */ dept_pkg.dept1 := dept_pkg.emptyDept; end; / /* /* /* /* CREATE OR REPLACE TRIGGER dept_after_row AFTER INSERT OR UPDATE OR DELETE ON dept FOR EACH ROW BEGIN /* Este desencadenante ha quedado intencionadamente incompleto. */ /* Consulte los ejemplos de las secciones siguientes de este capítulo. */ end; / CREATE OR REPLACE TRIGGER dept_after_stmt AFTER INSERT OR UPDATE OR DELETE ON dept BEGIN /* Realizar bucle a través de las filas de dept1 y enviar datos de campos */ /* a cliente de bases de datos utilizando proc. de llamada definido en */ /* sección anterior de este capítulo */ for i in 1 .. dept_pkg.dept1.count loop test_varray_proc(dept_pkg.dept1(i)); end loop; end; / Desencadenantes de sucesos de inserción: Para enviar un suceso a Netcool/Impact cuando Oracle realice una operación INSERT, en primer lugar debe crear un desencadenante que copie los datos de fila insertados en una tabla temporal. A continuación, debe utilizar otro desencadenante tal como se muestra en el ejemplo para realizar un bucle a través de la tabla temporal y enviar los datos de fila al cliente de bases de datos para su proceso. Un desencadenante de inserción típico contiene una sentencia que llena un elemento VARRAY con los datos de campos que se desean y a continuación asigna el elemento VARRAY como una fila de la tabla temporal. Cada elemento de VARRAY 60 Netcool/Impact: Guía de soluciones debe contener un conjunto de pares nombre/valor delimitados por caracteres que el cliente de bases de datos convierte a formato de suceso antes de enviarlo a Netcool/Impact. El carácter de delimitador predeterminado es el símbolo de barra vertical (|). La VARRAY debe contener un elemento para un campo denominado EVENTSOURCE. Este campo lo utiliza el cliente de bases de datos para determinar la tabla donde se ha originado el suceso de base de datos. En el ejemplo siguiente se muestra una VARRAY típica para sucesos de inserción: db_varray_type(’EVENTSOURCE | SCOTT.DEPT’, ’DEPTNO | ’||:NEW.DEPTNO, ’LOC | ’||:NEW.LOC, ’DNAME | ’||:NEW.DNAME, ’IMPACTED | ’||:NEW.IMPACTED); En este ejemplo, la VARRAY contiene un campo EVENTSOURCE y campos que contienen valores derivados de la fila insertada, tal como están contenidos en el pseudoregistro NEW pasado al desencadenante. El valor del campo EVENTSOURCE en este ejemplo es la tabla dept del esquema SCOTT de Oracle. En el ejemplo siguiente se muestra un desencadenante completo que copia nuevos datos de fila en la tabla temporal dept1 en el paquete dept_pkg. CREATE OR REPLACE TRIGGER dept_after_row AFTER INSERT ON dept FOR EACH ROW BEGIN dept_pkg.dept1(dept_pkg.dept1.count + 1) := db_varray_type(’EVENTSOURCE | SCOTT.DEPT’, ’DEPTNO | ’||:NEW.DEPTNO, ’LOC | ’||:NEW.LOC, ’DNAME | ’||:NEW.DNAME, ’IMPACTED | ’||:NEW.IMPACTED); end; / Para obtener un ejemplo completo que muestre cómo enviar un suceso de inserción, consulte “Ejemplo de desencadenante de suceso de inserción” en la página 64. Desencadenantes de sucesos de actualización y supresión: Puede enviar sucesos de actualización y supresión utilizando la misma técnica que utiliza para enviar sucesos de inserción. Sin embargo, al enviar sucesos de actualización y supresión debe obtener los valores de fila utilizando el pseudoregistro OLD en lugar de NEW. En el ejemplo siguiente se muestra un desencadenante que copia los datos de filas actualizados en la tabla temporal dept1 del paquete dept_pkg. CREATE OR REPLACE TRIGGER dept_after_row AFTER UPDATE ON dept FOR EACH ROW BEGIN dept_pkg.dept1(dept_pkg.dept1.count + 1) := db_varray_type(’EVENTSOURCE | SCOTT.DEPT’, ’DEPTNO | ’||:OLD.DEPTNO, ’LOC | ’||:OLD.LOC, ’DNAME | ’||:OLD.DNAME, ’IMPACTED | ’||:OLD.IMPACTED); end; / Capítulo 3. Trabajar con servicios 61 En el ejemplo siguiente se muestra un desencadenante que copia los datos de filas suprimidos en la tabla temporal dept1. CREATE OR REPLACE TRIGGER dept_after_row AFTER DELETE ON dept FOR EACH ROW BEGIN dept_pkg.dept1(dept_pkg.dept1.count + 1) := db_varray_type(’EVENTSOURCE | SCOTT.DEPT’, ’DEPTNO | ’||:OLD.DEPTNO, ’LOC | ’||:OLD.LOC, ’DNAME | ’||:OLD.DNAME, ’IMPACTED | ’||:OLD.IMPACTED); end; / Desencadenantes de sucesos DDL: Los sucesos DDL se envían a Netcool/Impact cuando la base de datos realiza una acción que cambia un objeto de esquema. Estas acciones incluyen los mandatos SQL CREATE, ALTER y DROP. Para enviar sucesos DDL, debe crear un desencadenante que llene un elemento VARRAY con datos que describan la acción DDL y el objeto de base de datos cambiado por la operación. A continuación, debe pasar el elemento VARRAY al cliente de bases de datos para su proceso. Como con los sucesos DML, VARRAY contiene un conjunto delimitado por caracteres de pares nombre/valor que el cliente de bases de datos convierte a formato de suceso antes de enviarlo a Netcool/Impact. Los sucesos DDL requieren dos elementos VARRAY: EVENTSOURCE, como se describe en la sección anterior, y TRIGGEREVENT. Normalmente, se llena el elemento TRIGGEREVENT con el valor actual de Sys.sysevent. En el ejemplo siguiente se muestra un VARRAY típico para sucesos DDL. db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE | ’||Sys.database_name, ’USERNAME | ’||Sys.login_user, ’INSTANCENUM | ’||Sys.instancenum, ’OBJECTTYPE | ’||Sys.dictionary_obj_type, ’OBJECTOWNER | ’||Sys.dictionary_obj_owner); En el ejemplo siguiente se muestra un desencadenante completo que envía un suceso a Netcool/Impact antes de que Oracle ejecute un mandato CREATE. CREATE OR REPLACE TRIGGER ddl_before_create BEFORE CREATE ON SCOTT.schema DECLARE my_before_create_varray db_varray_type; BEGIN my_before_create_varray := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE | ’||Sys.database_name, ’USERNAME | ’||Sys.login_user,’INSTANCENUM | ’||Sys.instancenum, ’OBJECTTYPE | ’||Sys.dictionary_obj_type, ’OBJECTOWNER | ’||Sys.dictionary_obj_owner); test_varray_proc(my_before_create_varray); end; / 62 Netcool/Impact: Guía de soluciones Desencadenantes de sucesos de sistema: Se envían a Netcool/Impact sucesos del sistema cuando el servidor Oracle se inicia, concluye o notifica un error a nivel del sistema. Los sucesos del sistema sólo funcionan si el usuario que es propietario de los desencadenantes correspondientes tiene privilegios SYSDBA (por ejemplo, el usuario SYS). Para enviar sucesos DDL, debe crear un desencadenante que llene un elemento VARRAY con datos que describan la acción del sistema. A continuación, debe pasar el elemento VARRAY al cliente de bases de datos para su proceso. Como con los sucesos DDL, los sucesos del sistema requieren que se llene el elemento TRIGGEREVENT, normalmente con el valor de Sys.sysevent. En el ejemplo siguiente se muestra un elemento VARRAY típico para sucesos del sistema. db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’ OBJECTNAME | ’||Sys.database_name, ’ USER_NAME | ’||Sys.login_user, ’ INSTANCE_NUM | ’||Sys.instance_num); En el ejemplo siguiente se muestra un desencadenante completo que envía un suceso a Netcool/Impact cuando se inicia Oracle. CREATE OR REPLACE TRIGGER desencadenanteiniciobasedatos AFTER STARTUP ON basedatos BEGIN v_array_inp := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’ OBJECTNAME | ’||Sys.database_name, ’ USER_NAME | ’||Sys.login_user, ’ INSTANCE_NUM | ’||Sys.instance_num); test_varray_proc(v_array_inp); Desencadenantes de sucesos de usuario: Se envían a Netcool/Impact sucesos del usuario cuando un usuario inicia o cierra la sesión en Oracle. Para enviar sucesos de usuario, debe crear un desencadenante que llene un elemento VARRAY con datos que describen la acción del usuario. A continuación, debe pasar el elemento VARRAY al cliente de bases de datos para su proceso. Como con los sucesos del sistema, los sucesos de usuario requieren que se llene el elemento TRIGGEREVENT, normalmente con el valor de Sys.sysevent. Si no especifica un valor para el elemento EVENTSOURCE, el cliente de bases de datos utilizará el nombre de la base de datos. En el ejemplo siguiente se muestra un elemento VARRAY típico para sucesos de usuario. db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE |’||Sys.database_name, ’LOGINUSER | ’ ||Sys.login_user, ’INSTANCENUM | ’||Sys.instance_num, ’TRIGGERNAME | USER_LOGIN’); En el ejemplo siguiente se muestra un desencadenante completo que envía un suceso a Netcool/Impact cuando un usuario inicia sesión. CREATE OR REPLACE TRIGGER inicio_sesión_usuario AFTER logon on schema Capítulo 3. Trabajar con servicios 63 DECLARE my_login_varray db_varray_type; BEGIN my_login_varray := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE |’||Sys.database_name, ’LOGINUSER | ’ ||Sys.login_user, ’INSTANCENUM | ’||Sys.instance_num, ’TRIGGERNAME | USER_LOGIN’); test_varray_proc(my_login_varray); end; / Ejemplo de desencadenante de suceso de inserción: Este ejemplo muestra cómo crear un conjunto de desencadenantes de Oracle que envían un suceso de inserción al Netcool/Impact. CREATE OR REPLACE PACKAGE dept_pkg AS TYPE deptTable IS TABLE OF db_varray_type INDEX BY BINARY_INTEGER; dept1 deptTable; emptyDept deptTable; end; / CREATE OR REPLACE TRIGGER dept_reset BEFORE INSERT OR UPDATE OR DELETE ON dept BEGIN dept_pkg.dept1 := dept_pkg.emptyDept; end; / CREATE OR REPLACE TRIGGER dept_after_row AFTER INSERT ON dept FOR EACH ROW BEGIN dept_pkg.dept1(dept_pkg.dept1.count + 1) := db_varray_type(’EVENTSOURCE | SCOTT.DEPT’, ’DEPTNO | ’||:NEW.DEPTNO, ’LOC | ’||:NEW.LOC, ’DNAME | ’||:NEW.DNAME, ’IMPACTED | ’||:NEW.IMPACTED); end; / CREATE OR REPLACE TRIGGER dept_after_stmt AFTER INSERT OR UPDATE OR DELETE ON dept BEGIN for i in 1 .. dept_pkg.dept1.count loop test_varray_proc(dept_pkg.dept1(i)); end loop; end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. 64 Netcool/Impact: Guía de soluciones Ejemplo de desencadenante de suceso de actualización: Este ejemplo muestra cómo crear un conjunto de desencadenantes de Oracle que envían un suceso de actualización a Netcool/Impact. CREATE OR REPLACE PACKAGE dept_pkg AS TYPE deptTable IS TABLE OF db_varray_type INDEX BY BINARY_INTEGER; dept1 deptTable; emptyDept deptTable; end; / CREATE OR REPLACE TRIGGER dept_reset BEFORE INSERT OR UPDATE OR DELETE ON dept BEGIN dept_pkg.dept1 := dept_pkg.emptyDept; end; / CREATE OR REPLACE TRIGGER dept_after_row AFTER UPDATE ON dept FOR EACH ROW BEGIN dept_pkg.dept1(dept_pkg.dept1.count + 1) := db_varray_type(’EVENTSOURCE | SCOTT.DEPT’, ’DEPTNO | ’||:OLD.DEPTNO, ’LOC | ’||:OLD.LOC, ’DNAME | ’||:OLD.DNAME, ’IMPACTED | ’||:OLD.IMPACTED); end; / CREATE OR REPLACE TRIGGER dept_after_stmt AFTER INSERT OR UPDATE OR DELETE ON dept BEGIN for i in 1 .. dept_pkg.dept1.count loop test_varray_proc(dept_pkg.dept1(i)); end loop; end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Ejemplo de desencadenante de suceso de supresión: Este ejemplo muestra cómo crear un conjunto de desencadenantes de Oracle que envían un suceso de supresión al Netcool/Impact. CREATE OR REPLACE PACKAGE dept_pkg AS TYPE deptTable IS TABLE OF db_varray_type INDEX BY BINARY_INTEGER; dept1 deptTable; emptyDept deptTable; end; / Capítulo 3. Trabajar con servicios 65 CREATE OR REPLACE TRIGGER dept_reset BEFORE INSERT OR UPDATE OR DELETE ON dept BEGIN dept_pkg.dept1 := dept_pkg.emptyDept; end; / CREATE OR REPLACE TRIGGER dept_after_row AFTER DELETE ON dept FOR EACH ROW BEGIN dept_pkg.dept1(dept_pkg.dept1.count + 1) := db_varray_type(’EVENTSOURCE | SCOTT.DEPT’, ’DEPTNO | ’||:OLD.DEPTNO, ’LOC | ’||:OLD.LOC, ’DNAME | ’||:OLD.DNAME, ’IMPACTED | ’||:OLD.IMPACTED); end; / CREATE OR REPLACE TRIGGER dept_after_stmt AFTER INSERT OR UPDATE OR DELETE ON dept BEGIN for i in 1 .. dept_pkg.dept1.count loop test_varray_proc(dept_pkg.dept1(i)); end loop; end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Ejemplo de desencadenante de suceso anterior a CREATE: Este ejemplo muestra cómo crear un desencadenante que envía un suceso antes de que Oracle ejecute un mandato CREATE. CREATE OR REPLACE TRIGGER ddl_before_create BEFORE CREATE ON SCOTT.schema DECLARE my_before_create_varray db_varray_type; BEGIN my_before_create_varray := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE | ’||Sys.database_name, ’USERNAME | ’||Sys.login_user, ’INSTANCENUM | ’||Sys.instancenum, ’OBJECTTYPE | ’||Sys.dictionary_obj_type, ’OBJECTOWNER | ’||Sys.dictionary_obj_owner); test_varray_proc(my_before_create_varray); end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo 66 Netcool/Impact: Guía de soluciones db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Ejemplo de desencadenante de suceso posterior a CREATE: Este ejemplo muestra cómo crear un desencadenante que envía un suceso después de que Oracle ejecute un mandato CREATE. CREATE OR REPLACE TRIGGER ddl_after_create AFTER CREATE ON SCOTT.schema DECLARE my_after_create_varray db_varray_type; BEGIN my_after_create_varray := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE | ’||Sys.database_name, ’USERNAME | ’||Sys.login_user, ’INSTANCENUM | ’||Sys.instancenum, ’OBJECTTYPE | ’||Sys.dictionary_obj_type, ’OBJECTOWNER | ’||Sys.dictionary_obj_owner); test_varray_proc(my_after_create_varray); end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Ejemplo de desencadenante de suceso anterior a ALTER: Este ejemplo muestra cómo crear un desencadenante que envía un suceso antes de que Oracle ejecute un mandato ALTER. CREATE OR REPLACE TRIGGER ddl_before_alter BEFORE ALTER ON SCOTT.schema DECLARE my_before_alter_varray db_varray_type; BEGIN my_before_alter_varray := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE | ’||Sys.database_name, ’USERNAME | ’||Sys.login_user, ’INSTANCENUM | ’||Sys.instancenum, ’OBJECTTYPE | ’||Sys.dictionary_obj_type, ’OBJECTOWNER | ’||Sys.dictionary_obj_owner); test_varray_proc(my_before_alter_varray); end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Capítulo 3. Trabajar con servicios 67 Ejemplo de desencadenante de suceso posterior a ALTER: Este ejemplo muestra cómo crear un desencadenante que envía un suceso después de que Oracle ejecute un mandato ALTER. CREATE OR REPLACE TRIGGER ddl_after_alter AFTER ALTER ON SCOTT.schema DECLARE my_after_alter_varray db_varray_type; BEGIN my_after_alter_varray := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE | ’||Sys.database_name, ’USERNAME | ’||Sys.login_user, ’INSTANCENUM | ’||Sys.instancenum, ’OBJECTTYPE | ’||Sys.dictionary_obj_type, ’OBJECTOWNER | ’||Sys.dictionary_obj_owner); test_varray_proc(my_after_alter_varray); end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Ejemplo de desencadenante de suceso anterior a DROP: Este ejemplo muestra cómo crear un desencadenante que envía un suceso antes de que Oracle ejecute un mandato DROP. CREATE OR REPLACE TRIGGER ddl_before_drop BEFORE DROP ON SCOTT.schema DECLARE my_before_drop_varray db_varray_type; BEGIN my_before_drop_varray := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE | ’||Sys.database_name, ’USERNAME | ’||Sys.login_user, ’INSTANCENUM | ’||Sys.instancenum, ’OBJECTTYPE | ’||Sys.dictionary_obj_type, ’OBJECTOWNER | ’||Sys.dictionary_obj_owner); test_varray_proc(my_before_drop_varray); end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Ejemplo de desencadenante de suceso posterior a DROP: Este ejemplo muestra cómo crear un desencadenante que envía un suceso después de que Oracle ejecute un mandato DROP. CREATE OR REPLACE TRIGGER ddl_after_drop AFTER DROP ON SCOTT.schema 68 Netcool/Impact: Guía de soluciones DECLARE my_after_drop_varray db_varray_type; BEGIN my_after_drop_varray := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE | ’||Sys.database_name, ’USERNAME | ’||Sys.login_user, ’INSTANCENUM | ’||Sys.instancenum, ’OBJECTTYPE | ’||Sys.dictionary_obj_type, ’OBJECTOWNER | ’||Sys.dictionary_obj_owner); test_varray_proc(my_after_drop_varray); end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Ejemplo de desencadenante de suceso de inicio de servidor: En este ejemplo se muestra cómo crear un desencadenante que envía un suceso a Netcool/Impact al iniciar Oracle. CREATE OR REPLACE TRIGGER desencadenanteiniciobasedatos AFTER STARTUP ON basedatos BEGIN v_array_inp := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’ OBJECTNAME | ’||Sys.database_name, ’ USER_NAME | ’||Sys.login_user, ’ INSTANCE_NUM | ’||Sys.instance_num); test_varray_proc(v_array_inp); En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Ejemplo de desencadenante de suceso de conclusión de servidor: En este ejemplo se muestra cómo crear un desencadenante que envía un suceso a Netcool/Impact al concluir Oracle. CREATE OR REPLACE TRIGGER desencadenanteconclusiónbasedatos BEFORE SHUTDOWN ON basedatos DECLARE v_array_inp db_varray_type; BEGIN v_array_inp := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’ OBJECTNAME | ’||Sys.database_name, ’ USER_NAME | ’||Sys.login_user, ’ INSTANCE_NUM | ’||Sys.instance_num); test_varray_proc(v_array_inp); end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo Capítulo 3. Trabajar con servicios 69 db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Ejemplo de desencadenante de suceso de error de servidor: En este ejemplo se muestra cómo crear un desencadenante que envía un suceso a Netcool/Impact cuando Oracle encuentra un error del servidor. CREATE OR REPLACE TRIGGER basedatos_desencadenante_error_servidor AFTER SERVERERROR ON basedatos DECLARE my_varray db_varray_type; BEGIN my_varray := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE | ’||Sys.database_name, ’INSTANCENUM | ’ ||Sys.instance_num, ’LOGINUSER | ’||Sys.login_user, ’ERRORNUM | ’||Sys.server_error(1)); test_varray_proc(my_varray); end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Ejemplo de desencadenante de suceso de inicio de sesión: Este ejemplo muestra cómo crear un desencadenante que envía un suceso a Netcool/Impact cuando un usuario inicia la sesión de la base de datos. CREATE OR REPLACE TRIGGER inicio_sesión_usuario AFTER logon on schema DECLARE my_login_varray db_varray_type; BEGIN my_login_varray := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE |’||Sys.database_name, ’LOGINUSER | ’ ||Sys.login_user, ’INSTANCENUM | ’||Sys.instance_num, ’TRIGGERNAME | USER_LOGIN’); test_varray_proc(my_login_varray); end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Ejemplo de desencadenante de suceso de cierre de sesión: Este ejemplo muestra cómo crear un desencadenante que envía un suceso a Netcool/Impact cuando un usuario cierra la sesión de la base de datos. 70 Netcool/Impact: Guía de soluciones CREATE OR REPLACE TRIGGER usuario_cierre_sesión BEFORE logoff on schema DECLARE my_logoff_varray db_varray_type; BEGIN my_logoff_varray := db_varray_type(’TRIGGEREVENT | ’||Sys.sysevent, ’EVENTSOURCE |’||Sys.database_name, ’LOGINUSER | ’ ||Sys.login_user, ’INSTANCENUM | ’||Sys.instance_num, ’TRIGGERNAME | USER_LOGOFF’); test_varray_proc(my_logoff_varray); end; / En este ejemplo, test_varray_proc es una especificación de llamada que publica la función sendEvent() expuesta por el cliente de bases de datos. El tipo db_varray_type es un tipo de datos definido por el usuario que representa un elemento VARRAY de Oracle. El ejemplo utiliza el esquema de ejemplo SCOTT de Oracle. Utilización de políticas de suceso de base de datos Las políticas que trabajan con sucesos de base de datos pueden manejar sucesos entrantes y devolver sucesos a la base de datos. Gestión de sucesos entrantes de base de datos El escucha de sucesos de base de datos pasa sucesos entrantes a Netcool/Impact utilizando la variable EventContainer incorporada. Cuando el escucha de sucesos de base de datos recibe un suceso de la base de datos, llena las variables de miembros de EventContainer con los valores enviados por el desencadenante de base de datos utilizando el elemento VARRAY de Oracle.Puede acceder a los valores de EventContainer utilizando notación con @ o por puntos de la misma manera que accede a los valores de los campos en cualquier otro tipo de suceso. En el ejemplo siguiente se muestra cómo gestionar un suceso entrante de base de datos. En este ejemplo el suceso se ha generado utilizando el desencadenante de ejemplo que se ha descrito en “Desencadenantes de sucesos de inserción” en la página 60. // Registrar valores de sucesos entrantes Log("Número de Log("Location: Log("Nombre de Log("Afectado: departamento: " + @NÚMDEP); " + @UBIC); base de datos: " + @NOMBREBD); " + @AFECTADO); El ejemplo imprime los valores de los campos del suceso en el registro de política. Devolución de sucesos a la base de datos El escucha de sucesos de base de datos da soporte a la utilización de la función ReturnEvent en una política para actualizar o suprimir sucesos. Para utilizar ReturnEvent en una política de sucesos de base de datos, debe realizar las tareas siguientes: Procedimiento v Asegúrese de que el desencadenante de base de datos que envía el suceso llena un conjunto especial de campos de sucesos de conexión. Capítulo 3. Trabajar con servicios 71 v Llame a la función ReturnEvent de la política que gestiona los sucesos. Llenado de los campos de sucesos de conexión: Para que la política gestione los sucesos para devolverlos al origen de sucesos, debe llenar un conjunto especial de campos de sucesos en el desencadenante de base de datos. Estos campos especifican la información de conexión del servidor de bases de datos. El escucha de sucesos de base de datos utiliza esta información para conectar a la base de datos cuando se devuelva un suceso actualizado o suprimido. En la Tabla 21 se muestran los campos de sucesos que debe llenar en el desencadenante. Tabla 21. Campos de suceso de conexión de desencadenante de base de datos Campo Descripción RETURNEVENT Debe establecer un valor de TRUE en este campo de suceso. USERNAME Nombre de usuario que se debe utilizar al conectar al servidor de bases de datos Oracle. PASSWORD Contraseña que se debe utilizar al conectar al servidor de bases de datos Oracle. HOST Nombre de host o dirección IP del sistema donde se ejecuta Oracle. PORT Puerto de conexión para el servidor de bases de datos Oracle. SID ID de servidor Oracle. KEYFIELD Campo de clave de la tabla de base de datos, o cualquier otro campo que identifique de forma exclusiva una fila de tabla. Cuando el cliente de bases de datos envía el suceso a Netcool/Impact, cifra la información de conexión (incluidos el nombre de usuario de base de datos y contraseña) especificados en los campos de suceso. A continuación, la información de conexión se descifra cuando la recibe Netcool/Impact. En el ejemplo siguiente se muestra un desencadenante que envía un suceso a Netcool/Impact cuando se inserta una nueva fila en la tabla dept. En este ejemplo se llenan los campos del suceso de conexión especificando elementos en la VARRAY de Oracle que pasa a la base de datos. CREATE OR REPLACE TRIGGER dept_after_row AFTER INSERT ON dept FOR EACH ROW BEGIN dept_pkg.dept1(dept_pkg.dept1.count + 1) := db_varray_type(’EVENTSOURCE | SCOTT.DEPT’, ’DEPTNO | ’||:NEW.DEPTNO, ’LOC | ’||:NEW.LOC, ’DNAME | ’||:NEW.DNAME, ’IMPACTED | ’||:NEW.IMPACTED, ’RETURNEVENT | TRUE’, ’USERNAME | ora_user’, ’PASSWORD | ora_passwd’, ’HOST | ora_host’, ’PORT | 4100’, ’SID | ora_01’, ’KEYFIELD | DEPTNO’); end; / Devolución de sucesos a la base de datos: Puede enviar sucesos actualizados o suprimidos al servidor de bases de datos utilizando la función ReturnEvent. 72 Netcool/Impact: Guía de soluciones ReturnEvent envía la información de sucesos al escucha de sucesos de base de datos, que ensambla un mandato UPDATE o DELETE utilizando la información. A continuación, el escucha de sucesos de base de datos envía el mandato al servidor de bases de datos para su proceso. El mandato UPDATE o DELETE actualiza o suprime la fila que corresponde al suceso enviado original. Para obtener más información sobre ReturnEvent, consulte la publicación Guía de consulta de políticas. En el siguiente ejemplo de política se muestra cómo devolver un suceso actualizado a la base de datos. // Registrar valores de sucesos entrantes Log("Número de Log("Location: Log("Nombre de Log("Afectado: departamento: " + @NÚMDEP); " + @UBIC); base de datos: " + @NOMBREBD); " + @AFECTADO); // Actualizar el valor del campo Location @LOC = "New York City"; // Devolver el suceso a la base de datos ReturnEvent(EventContainer); En el ejemplo siguiente se muestra cómo suprimir un suceso de la base de datos. // Establecer el valor de la variable DeleteEvent en true @DeleteEvent = true; // El nombre @DeleteEvent distingue entre mayúsculas y minúsculas // Establecer las variables de campos de sucesos que necesite el escucha de // sucesos de base de datos para conectar con Netcool/Impact // Devolver el suceso a la base de datos ReturnEvent(EventContainer); servicio de escucha de sucesos de OMNIbus El servicio de escucha de sucesos de OMNIbus se utiliza para integrarse con Netcool/OMNIbus y recibir notificaciones inmediatas de sucesos de vía rápida. El escucha de sucesos de OMNIbus se utiliza para obtener notificaciones de vía rápida de Netcool/OMNIbus a través de la característica de notificación de sucesos acelerada de Netcool/OMNIbus. Recibe las notificaciones mediante el canal IDUC (Insert, Delete, Update o Control). Para configurar el escucha de sucesos de OMNIbus, debe definir sus propiedades de configuración a través de la GUI. Puede utilizar las propiedades de configuración para especificar uno o más canales para los cuales se procesan los sucesos y también una o más políticas que se ejecutarán en respuesta a sucesos recibidos de Netcool/OMNIbus. Importante: v El servicio de escucha de sucesos de OMNIbus funciona con Netcool/OMNIbus para supervisar sucesos de ObjectServer. v Si Servidor Impact y el servidor OMNIbus están en dominios de red diferentes, para que el servicio de escucha de sucesos de OMNIbus funcione correctamente, debe definir la propiedad Iduc.ListeningHostname en el servidor OMNIbus. Esta propiedad debe contener la dirección IP o el nombre de host completo del servidor OMNIbus. Capítulo 3. Trabajar con servicios 73 Si desea más información sobre los desencadenantes de Netcool/OMNIbus y la notificación de sucesos acelerada de OMNIbus y la propiedad Iduc.ListeningHostname en el servidor OMNIbus, consulte la Guía de administración de Netcool/OMNIbus disponible desde este sitio web: Tivoli Documentation Central Configurar el servicio de escucha de sucesos de OMNIbus Utilice este procedimiento para crear el servicio de escucha de sucesos de OMNIbus. Procedimiento 1. En Tivoli Integrated Portal, en el árbol de navegación, pulse Configuración del sistema > Automatización de sucesos > Servicios, para abrir el separador Servicios. 2. En caso necesario, seleccione un clúster de la lista Clúster. 3. Pulse el icono Crear servicio nuevo en la barra de herramientas y seleccione OMNIbusEventListener para abrir la ventana de configuración. 4. Escriba la información necesaria en la ventana de configuración. 5. Pulse el icono Guardar de la barra de herramientas para crear el servicio. 6. Inicie el servicio para establecer una conexión con ObjectServer y suscribirse a uno o más canales IDUC para obtener notificaciones para inserciones, actualizaciones y supresiones. Cómo comprobar los registros de servicio del escucha de sucesos de OMNIbus Al iniciar el servicio de escucha de sucesos de OMNIbus se establece una conexión entre Netcool/Impact y el ObjectServer. Para asegurar que el servicio de escucha de sucesos de OMNIbus se ha iniciado satisfactoriamente, compruebe los registros de servicio. Si el servicio está iniciado, se visualizará un mensaje como en el ejemplo siguiente: Inicializando servicio Conectando al origen de datos: defaultobjectserver Servicio iniciado Intentando conectar para notificaciones de IDUC Se ha establecido la conexión al defaultobjectserver de origen de datos Conexión IDUC: Establecida: Nombre de host Iduc: nc050094 Puerto Iduc: 58003 SPID Iduc: 2 Creación de desencadenantes Debe crear desencadenantes antes de que Netcool/Impact pueda recibir sucesos acelerados de Netcool/OMNIbus. Los desencadenantes notifican a Netcool/Impact los sucesos acelerados. Para obtener más información sobre la creación de desencadenantes, consulte la publicación IBM Tivoli Netcool/OMNIbus Administration Guide en el siguiente sitio web: https://www.ibm.com/developerworks/wikis/display/tivolidoccentral/OMNIbus. 74 Netcool/Impact: Guía de soluciones En este ejemplo se muestra cómo crear un desencadenante para notificar inmediatamente a Netcool/Impact cuando haya una alerta con una gravedad de 5 del Nodo denominado ImpactNode: create or replace trigger ft_insert1 group trigger_group1 priority 1 after insert on alerts.status for each row begin if (new.Severity = 5 AND new.Node = ’ImpactNode’) then iduc evtft ’default’ , insert, new end if; end; Otro ejemplo muestra cómo crear un desencadenante que envía un suceso acelerado a Netcool/Impact cuando se suprime un suceso con Customer internet_banking: create or replace trigger ft_delete1 group trigger_group1 priority 1 before delete on alerts.status for each row begin if (old.Customer = ’internet_banking’) then iduc evtft ’default’ , delete, old end if; end; En el ejemplo siguiente se muestra cómo crear un desencadenante que notifique inmediatamente a Netcool/Impact si se recibe una reinserción del suceso con el Nodo como New York: create or replace trigger ft_reinsert1 group trigger_group1 priority 1 after reinsert on alerts.status for each row begin if (new.Node = ’New York’) then iduc evtft ’default’ , insert, new end if; end; En el ejemplo siguiente se muestra cómo crear un desencadenante de señal que le notifique cuando se establezca una conexión de pasarela con el ObjectServer: create or replace trigger notify_isqlconn group trigger_group1 priority 1 on signal connect begin if( %signal.process = ’GATEWAY’ ) then iduc sndmsg ’default’, ’Conexión de pasarela de ’ + %signal.node + ’ de usuario ’ + %signal.username + ’ en ’ + to_char(%signal.at) end if; end; En este otro ejemplo se muestra cómo crear un desencadenante de señal que le envía una notificación cuando la conexión se desconecta: Capítulo 3. Trabajar con servicios 75 create or replace trigger notify_isqldisconn group trigger_group1 priority 1 on signal disconnect begin if( %signal.process = ’isql’ ) then iduc sndmsg ’default’, ’ISQL Disconnect from ’ + %signal.node + ’ de usuario ’ + %signal.username + ’ en ’ + to_char(%signal.at) end if; end; Utilización de la función ReturnEvent Puede utilizar la función ReturnEvent para insertar, actualizar o suprimir sucesos que recibe Netcool/Impact de Netcool/OMNIbus. Para leer más sobre la función ReturnEvent, consulte la publicación Guía de consulta de políticas. En este ejemplo se muestra cómo utilizar la función ReturnEvent para establecer Node en Impacted y para aumentar Severity en 1: @Node = ’Impacted’; @Severity = @Severity + 1; ReturnEvent(EventContainer); Otro ejemplo muestra cómo suprimir el suceso de alerts.status mediante la función ReturnEvent: @DeleteEvent = TRUE; ReturnEvent(EventContainer); Suscripción a canales individuales Cómo suscribirse a uno o más canales OMNIbus para los que Netcool/Impact procesa sucesos recibidos de Netcool/OMNIbus. Procedimiento 1. En la ventana Configuración de OMNIbusEventListener, en Uno o más canales, añada el canal del que Netcool/Impact procesa sucesos. 2. Para suscribirse a más de un canal, añada una coma entre los nombres de canal. 3. Para añadir el nombre de canal o añadir o eliminar una o más entradas, añada los cambios y reinicie el servicio OMNIbusEventListener para implementar los cambios. Resultados Cuando Netcool/Impact recibe un suceso de vía rápida de un canal que coincide con uno de los canales configurados, el registro del servicio OMNIbusEventListener visualiza el siguiente mensaje: Se ha recibido un mensaje de vía rápida del canal: <nombre_canal> Cuando Netcool/Impact recibe un suceso de vía rápida que no coincide con ninguno de los canales configurados, el registro del servicio OMNIbusEventListener visualiza el mensaje siguiente: El mensaje de vía rápida del canal: <nombre de canal> no ha coincidido con ningún canal configurado. Restricción: Sólo se permite el filtrado de mensajes por canal para mensajes de vía rápida enviados mediante el mandato iduc evtf. Para mensajes de señal enviados 76 Netcool/Impact: Guía de soluciones mediante el mandato iduc sndmsg, Netcool/Impact no filtra los mensajes según el canal desde el que se han originado. Para obtener información sobre estos mandatos, consulte la publicación IBM Tivoli Netcool/OMNIbus Administration Guide disponible en el siguiente sitio web: https://www.ibm.com/developerworks/wikis/display/tivolidoccentral/OMNIbus. Cómo controlar qué sucesos se envían de OMNIbus a Netcool/Impact mediante Spid Puede utilizar Spid en lugar de un nombre de canal para controlar qué sucesos se envían a Netcool/Impact. Cuando se inicia el servicio OMNIbusEventListener, visualiza los detalles de la conexión en IMPACT_HOME/log/<nombre_servidor>_omnibuseventlistener.log, incluido el Spid de conexión. En el ejemplo siguiente, el Spid es 2: 21 21 21 21 21 21 21 21 21 Feb Feb Feb Feb Feb Feb Feb Feb Feb 2012 2012 2012 2012 2012 2012 2012 2012 2012 11:16:07,363: 11:16:07,363: 11:16:07,405: 11:16:07,522: 11:16:07,919: 11:16:08,035: 11:16:08,036: 11:16:08,036: 11:16:08,036: Inicializando servicio Conectando al origen de datos: defaultobjectserver Servicio iniciado Intentando conectar para notificaciones de IDUC Conexión establecida con el origen de datos defaultobjectserver Conexión IDUC: Establecida: Nombre de host Iduc : nc050094 Puerto Iduc : 60957 SPID Iduc : 2 Sabiendo que Netcool/Impact está conectado al Spid 2, puede utilizar el ID de cliente y configurar el desencadenante para enviar la notificación de sucesos acelerada sólo al cliente con Spid=2 (Impact). Un desencandenante de OMNIbus tiene la sintaxis siguiente: IDUC EVTFT destino, tipo_acción, fila Donde: v destino = spid | iduc_channel – spid = expresión_de_entero (el ID de conexión de cliente literal) – canal_iduc = expresión_de_serie (nombre de canal) v tipo_acción = INSERT | UPDATE | DELETE v fila = variable (referencia de nombre de variable de una fila en la automatización) Por ejemplo, el siguiente desencadenante indicaría a OMNIbus que enviara notificaciones sólo a Spid=2, que en este caso es Netcool/Impact: create or replace trigger ft_insert1 group trigger_group1 priority 1 after insert on alerts.status for each row begin if (new.Severity >= 5) then iduc evtft 2 , insert, new end if; end; Para obtener más información sobre los desencadenante de OMNIbus y la notificación de sucesos acelerada, consulte la publicación OMNIbus Administration Guide, disponible en este sitio web: Capítulo 3. Trabajar con servicios 77 https://www.ibm.com/developerworks/wikis/display/tivolidoccentral/OMNIbus Utilización de otros servicios Este capítulo contiene información sobre cómo utilizar otros servicios de Netcool/Impact. Servicio activador de políticas El servicio activador de políticas activa políticas en el inicio o en los intervalos que especifique para cada política seleccionada. Este es un servicio predeterminado que puede utilizar, en lugar de crear el suyo propio o además de crear el suyo propio. Configuración del activador de políticas En un activador de políticas puede configurar el nombre del activador, el intervalo de activación, la política que desea ejecutar a intervalos y las opciones de inicio y registro. Ventana de configuración del servicio de activador de políticas: Utilice esta información para configurar el servicio de activador de políticas. Tabla 22. Ventana de configuración Crear servicio PolicyActivator nuevo Elemento de ventana Descripción Nombre de servicio Escriba un nombre exclusivo para identificar el servicio. Intervalo de activación Seleccione la frecuencia (en segundos) con que el servicio debe activar la política. El valor predeterminado es 30 en el servidor de activador de política incluido con Netcool/Impact. Al crear su propio servidor de activador de política, el valor por defecto es 0. Política Seleccione la política que el activador de políticas debe ejecutar. Inicio: Automáticamente al iniciarse el servidor .Seleccione esta opción para iniciar automáticamente el servicio cuando se inicia el servidor. También puede iniciar y detener el servicio desde la GUI. Registro de servicio: Escribir en archivo Selecciónelo para escribir información de registro en un archivo. Servicio del registrador de políticas El servicio del registrador de políticas es el responsable de gestionar el registro de políticas. El registro es una corriente de texto que se utiliza para registrar los mensajes generados durante el tiempo de ejecución de una política. El registro contiene mensajes del sistema Netcool/Impact y mensajes que crea cuando escribe una política. El servicio del registrador de políticas especifica una política de manejo de errores que se activa cuando se produce un error durante la ejecución de una política. También especifica los niveles de registro de depuración de políticas y qué elementos se deben registrar. Cuando configure este servicio, seleccione una política para manejar los errores a medida que se producen. 78 Netcool/Impact: Guía de soluciones Configuración del registrador de políticas Puede configurar las propiedades siguientes del registrador de políticas. v Política de manejo de errores v Nivel de registro más alto v Registro de sentencias SQL v Registro de parámetros de función de preejecución v Registro de parámetros de función de postejecución v Creación de perfiles de política v Opciones de registro e informes Ventana de configuración del servicio de registrador de políticas: Utilice esta información para configurar el servicio de registrador de políticas. Tabla 23. Ventana de configuración del servicio del registrador de políticas Elemento de ventana Descripción Política de manejo de errores La política de manejo de errores es la política que se ejecuta de forma predeterminada cuando un manejador de errores no maneja un error dentro de la política donde éste se ha producido. Nivel de registro más alto Puede especificar un nivel de registro para los mensajes que se anotan en el registro de política desde una política mediante la función Log. Cuando se procesa una sentencia log() de una política, se evalúa el nivel de registro especificado con el número que ha seleccionado para este campo. Si el nivel especificado en este campo es mayor que o igual al especificado en la sentencia log() de la política, se registra el mensaje en el registro de políticas. Registrar Seleccione qué desea que aparezca en el registro: v Todas las sentencias SQL. Seleccione anotar todo el contenido de todas las sentencias SQL especificadas en llamadas a orígenes de datos de base de datos SQL. Registrar las sentencias SQL puede ayudar a depurar una política que utilice orígenes de datos externos. v Parámetros del módulo de acción previa a la ejecución. Seleccione anotar los valores de todos los parámetros pasados a una función de acción incorporada antes de que se llame a la función en una política. Estos parámetros incluyen los valores de variables incorporadas como, por ejemplo DataItems y DataItem. v Parámetros del módulo de acción posterior a la ejecución v Parámetros de todos los módulos de acción Capítulo 3. Trabajar con servicios 79 Tabla 23. Ventana de configuración del servicio del registrador de políticas (continuación) Elemento de ventana Descripción Perfiles de política: Habilitar Seleccione esta opción para habilitar los perfiles de políticas. La creación de perfiles de políticas calcula el tiempo total necesario para ejecutar una política y anota dicho tiempo en el registro de la política. Puede utilizar esta característica para ver cuánto tiempo se tarda en procesar las asignaciones de las variables y las funciones. También puede ver cuánto tiempo se tarda en procesar toda una función y toda la política. Registro de servicio: Escribir en archivo Selecciónelo para escribir información de registro en un archivo. Anexar nombre de hebra al nombre de archivo de registro Seleccione esta opción para dar nombre al archivo de registro añadiendo el nombre de la hebra al nombre del archivo de registro predeterminado. Anexar nombre de política al nombre de archivo de registro Seleccione esta opción para dar nombre al archivo de registro añadiendo el nombre de la política al nombre del archivo de registro predeterminado. Recopilar informes: Habilitar Selecciónelo para habilitar la recopilación de datos para los informes de políticas. Si elige habilitar la opción Recopilar informes, los registros relacionados con los informes se escriben en el archivo de registrador de políticas sólo cuando el nivel de registro está establecido en 3. Para ver en los registros relacionados con los informes un nivel de registro menos detallado, por ejemplo, el nivel de registro 1, el archivo NCHOME/impact/etc/ <servername>_policylogger.props se puede personalizar completando estos pasos: 1. Añada impact.policylogger.reportloglevel=1 a la propiedadNCHOME/impact/etc/ <servername>_policylogger.props. 2. Reinicie Servidor Impact para implementar el cambio. Modificación del tamaño del archivo de registro policylogger: Cómo cambiar el tamaño del archivo de registro del registrador de políticas y cómo crear más archivos de registrador de políticas. Procedimiento 1. Detenga el servidor Impact y abra el archivo DIR_INICIO_IMPACT/etc/ <nombre_servidor>_policylogger.props. 2. Para cambiar el tamaño del archivo policylogger.log, añada las propiedades siguientes al archivo: impact.policylogger.maxlogsizebytes=[valor en bytes] 3. Para cambiar el número de archivos policylogger.log, añada las propiedades siguientes al archivo: impact.policylogger.maxbackupindex=[número de archivos de copia de seguridad] 4. Reinicie el servidor para implementar los cambios. 80 Netcool/Impact: Guía de soluciones 5. En una configuración en clúster, debe reiniciar el servidor secundario de forma que replique estas propiedades personalizadas al iniciar desde el servidor primario. Servicio de activador de políticas en hibernación El servicio de activador de políticas en hibernación supervisa las políticas en hibernación y las activa a intervalos especificados. El activador de políticas en hibernación se utiliza con soluciones de tipo X sucesos en un Y tiempo y soluciones similares que requieren el uso de políticas en hibernación. Cuando configure este servicio, debe especificar la frecuencia con la que el servicio reactivará las políticas en hibernación que están en espera de activación. Puede ser un período específico o un tiempo absoluto que ha definido. Activador de políticas en hibernación En el activador de políticas de hibernación puede configurar el intervalo de de activación y las opciones de inicio y registro. Configuración del servicio de activador de políticas en hibernación Utilice esta información para configurar el activador de políticas en hibernación. Tabla 24. Ventana de configuración del servicio de activador de políticas en hibernación Elemento de ventana Descripción Intervalo de sondeo Seleccione un intervalo de sondeo (en segundos) para establecer la frecuencia con la que el servicio comprobará las políticas que están hibernando para ver si se deben activar. El valor predeterminado es de 30 segundos. El proceso se activa inmediatamente Seleccione esta opción para ejecutar la política después de que se active. El intervalo de activación es el intervalo en segundos con el que el activador de políticas en hibernación comprueba las políticas en hibernación del repositorio de datos internos para ver si están preparadas para activarlas. Inicio: Automáticamente al iniciarse el servidor .Seleccione esta opción para iniciar automáticamente el servicio cuando se inicia el servidor. También puede iniciar y detener el servicio desde la GUI. Registro de servicio: Escribir en archivo Selecciónelo para escribir información de registro en un archivo. Borrar todas las hibernaciones: Borrar Si resulta necesario, pulse esta opción para borrar todas las políticas en hibernación del Servidor Impact. Servicio del gestor de ejecución de mandatos El gestor de ejecución de mandatos es el servicio responsable de accionar el mandato y la característica de respuesta. El servicio pone en cola las llamadas a la función JRExecAction para ejecutar mandatos externos. El gestor de ejecución de mandatos sólo permite especificar si desea imprimir el registro de servicios en un archivo. No existen más propiedades de configuración. Capítulo 3. Trabajar con servicios 81 Ventana de configuración del servicio del gestor de ejecución de mandatos Puede configurar el servicio del gestor de ejecución de mandatos para imprimir el registro del servicio en un archivo. Servicio del gestor de línea de mandatos El servicio del gestor de línea de mandatos le permite acceder al Servidor Impact desde la línea de mandatos para configurar los parámetros de servicios y también para iniciar y detener servicios. Cuando configure este servicio, especifique el puerto al que se conectará cuando utilice la línea de mandatos. También debe especificar si desea que el servicio se inicie automáticamente cuando se inicia el Servidor Impact. El gestor de línea de mandatos es el servicio que gestiona la CLI. Puede configurar el puerto en el que se ejecuta el servicio de la línea de mandatos, y las opciones de inicio y registro para el servicio. Ventana de configuración del servicio de gestor de línea de mandatos Utilice esta información para configurar el servicio de gestor de línea de mandatos. Tabla 25. Ventana de configuración del servicio de gestor de línea de mandatos Elemento de ventana Descripción Puerto Seleccione en la lista el número de puerto donde desee ejecutar el servicio o escriba el número. Al utilizar la CLI, se utiliza telnet para acceder a este puerto. El valor predeterminado es 2000. Inicio: Automáticamente al iniciarse el servidor .Seleccione esta opción para iniciar automáticamente el servicio cuando se inicia el servidor. También puede iniciar y detener el servicio desde la GUI. Registro de Selecciónelo para escribir información de registro en un archivo. servicio: Escribir en archivo 82 Netcool/Impact: Guía de soluciones Capítulo 4. Trabajar con políticas Una política es un conjunto de operaciones que desea que realice Netcool/Impact. Antes de empezar a desarrollar políticas, debe estar familiarizado con el registro de política, el contexto de política y los aspectos de ámbito de política del producto. Comprensión de los componentes del lenguaje de políticas Puede utilizar el Lenguaje de políticas de Impact (IPL) o JavaScript para escribir las políticas que desea que Netcool/Impact ejecute. El IPL es un lenguaje de scripts similar en sintaxis a lenguajes de programación como C/C++ y Java. Proporciona un conjunto de tipos de datos, variables incorporadas, estructuras de control y funciones que puede utilizar para realizar una amplia gama de tareas de gestión de sucesos. Puede crear sus propias variables y funciones, como en otros lenguajes de programación. JavaScript es un lenguaje de programación de script que se utiliza habitualmente para añadir interactividad a páginas web. También se puede utilizar en entornos de navegador. JavaScript utiliza los mismos conceptos de programación que se utilizan en IPL para escribir políticas. Para obtener más información sobre la sintaxis de JavaScript, consulte http://www.w3schools.com/js/default.asp. Registro de política El registro de política es una secuencia de texto que registra mensajes creados durante el tiempo de ejecución de una política. Los mensajes del registro de política proporcionan información sobre el estado del sistema y sobre las posibles excepciones que se pudieran producir. Puede escribir mensajes personalizados en el registro desde una política utilizando la función Log. Contexto de política El contexto de política es el conjunto de todas las variables cuyos valores se asignan a la política actual. El contexto de política incluye variables incorporadas como por ejemplo EventContainer así como las variables que defina. Puede acceder al valor de este contexto desde una política utilizando la función CurrentContext. Esta función devuelve una serie que contiene los nombres y valor actual de todas las variables de la política. Ámbito de política El ámbito de todas las variables de una política es global. Esto significa que dondequiera que utilice una función, ésta hará referencia al mismo valor, independientemente de si la utiliza en el cuerpo principal del programa o en una función definida por el usuario. © Copyright IBM Corp. 2006, 2014 83 Impresión en el registro de política La impresión de mensajes en el registro de política es una de las prestaciones más útiles de Netcool/Impact en lo que se refiere a probar y depurar políticas. Puede imprimir mensajes en el registro de política utilizando la función Log. La función Log toma el mensaje que desea imprimir como su parámetro de tiempo de ejecución. Este ejemplo es una versión del clásico programa "Hello, World!" utilizado para enseñar a los desarrolladores cómo programar en un lenguaje de programación C. En la versión C se imprime Hello, World! en la salida estándar. No tiene permiso para acceder a la corriente de salida estándar mediante el lenguaje de políticas pero puede imprimir el mensaje en el registro de política. La política, que consta de una única línea, es la siguiente. Log("Hello, World!"); Aquí simplemente llama a la función Log y pasa la serie Hello, World! como parámetro de tiempo de ejecución. Como en los lenguajes de programación como C/C+ y Java, debe colocar los literales de la serie entre comillas dobles. Al ejecutar la política se imprime el siguiente mensaje en el registro de política: Hello, World! Variables definidas por el usuario Las variables definidas por el usuario son variables que se definen cuando se escribe una política. Las palabras reservadas de JavaScript o los objetos de JavaScript y nombres de clase predefinidos no se deben utilizar como nombres de variable en una política de JavaScript. Puede utilizar cualquier combinación de letras y números como nombres de variables, siempre que la primera variable empiece por una letra: No es necesario que inicialice las variables utilizadas para almacenar valores individuales como, por ejemplo, series o enteros. Para las variables de contexto, se llama a la función NewObject, que devuelve un contexto nuevo. Para las variables de contenedor de suceso, se llama a NewEvent. No es necesario que inicialice las variables de miembro en contextos y en contenedores de suceso. El ejemplo siguiente muestra cómo se crea y se hace referencia a las variables definidas por el usuario: MyInteger = 1; MyFloat = 123.4; MyBoolean = True; MyString = "Hello, World!"; MyContext = NewObject(); MyContext.Member = "1"; MyEvent = NewEvent(); MyEvent.Summary = "Event Summary"; Log(MyInteger + ", " + MyEvent.Summary); 84 Netcool/Impact: Guía de soluciones En el ejemplo de esta sección se crea un conjunto de variables a los que se asigna valores. A continuación, se utiliza la función Log de dos maneras distintas para imprimir el valor de las variables en el registro de política. La primera manera en que se utiliza Log es para imprimir cada uno de los valores como una llamada aparte a la función. La segunda manera es imprimir todas las variables en el contexto de política al mismo tiempo, utilizando la función CurrentContext. La función CurrentContext devuelve una serie que contiene los nombres y valores de todas las variables definidas actualmente en la política. VarOne = "One"; VarTwo = 2; VarThree = 3.0; VarFour = VarOne + ", " + VarTwo + ", " + VarThree; Log(VarOne); Log(VarTwo); Log(VarThree); Log(VarFour); Log(CurrentContext()); Al ejecutar esta política, se imprimirá el mensaje siguiente en el registro de política: One 2 3.0 One, Two, Three "Preparado para parámetros proporcionados por el usuario "=(Escalation=5, EventContainer=(), VarTwo=Two, VarOne=One, ActionNodeName=TEMP, VarFour=One, Two, Three, VarThree=Three, ActionType=1) Como se muestra más arriba, no es necesario declarar las variables antes de asignar sus valores de la forma en que lo hace en lenguajes como C/C++ y Java. Las matrices y las variables escalares como enteros o series se crean automáticamente la primera vez que les asigna un valor. Sin embargo, los contextos y los contenedores de sucesos se deben crear explícitamente utilizando las funciones NewObject y NewEvent, tal como se describe más adelante en esta guía. Matriz Los contextos son otro tipo de datos nativo que puede utilizar para almacenar conjuntos de datos. Una matriz en Netcool/Impact representa un conjunto de datos heterogéneo, lo que significa que puede almacenar elementos de cualquier combinación de tipos de datos, incluyendo otras matrices y contextos. Los datos de las matrices se almacenan como elementos sin nombres y no como variables de miembro. En IPL asigna valores a las matrices utilizando la notación de llaves. Esta notación requiere que coloque una lista entre llaves. Los valores se pueden especificar como literales o como variables cuyos valores ha definido anteriormente en la política: nombre_matriz = {elemento1, elemento2, elementon} Atención: Las matrices en IPL y JavaScript están basadas en cero, lo que significa que el primer elemento de la matriz tiene un valor de índice de 0. Capítulo 4. Trabajar con políticas 85 En JavaScript, utilice la notación con corchetes cuadrados para asignar valores de matriz como una serie de literales numéricos, booleanos o de serie separados por comas: nombre_matriz = [elemento1, elemento2, elementon] Importante: puede crear una matriz de cualquier tamaño definiendo manualmente sus elementos. No puede importarla de un archivo. No puede incluirse una matriz en una matriz, a menos que se trate de una matriz multidimensional. Puede acceder al valor de matrices utilizando la notación de corchetes. Esta notación requiere que especifique el nombre de la matriz seguido por el número de índice del elemento colocado entre corchetes. Utilice la sintaxis siguiente para acceder a los elementos de una matriz unidimensional y de una matriz multidimensional: nombre_matriz[índice de elementos] nombre_matriz[índice de elementos de primera dimensión][índice de elementos de segunda dimensión] Ejemplos A continuación se muestra un ejemplo de matriz unidimensional en IPL: MyArray = {"Hello, World!", 12345}; Log(MyArray[0] + ", " + MyArray[1]); A continuación se muestra un ejemplo de matriz unidimensional en JavaScript: MyArray = ["Hello, World!", 12345]; Log(MyArray[0] + ", " + MyArray[1]); Este ejemplo anota el texto siguiente en el registro de políticas: Hello.World!, 12345 A continuación se muestra un ejemplo de matriz bidimensional en IPL: MyArray = {{"Hello, World!", 12345}, {"xyz", 78, 7, "etc"}}; Log(MyArray[0][0] + "." + MyArray[1][0]); A continuación se muestra un ejemplo de matriz bidimensional en JavaScript: MyArray = [["Hello, World!", 12345], ["xyz", 78, 7, "etc"]]; Log(MyArray[0][0] + "." + MyArray[1][0]); Este ejemplo anota el texto siguiente en el registro de políticas: Hello.World!.xyz Este ejemplo de política en IPL utiliza la misma matriz bidimensional y anota la etiqueta y el valor de un elemento en el registro de analizador: MyArray = {{"Hello, World!", 12345}, {"xyz", 78, 7, "etc"}}; log("MyArray is " + MyArray); log("MyArray Length is " + length(MyArray)); ArrayA = MyArray[0]; log("ArrayA is " + ArrayA + " Length is " + length(ArrayA)); i = 0; While(i < length(ArrayA)) { log("ArrayA["+i+"] = " + ArrayA[i]); i = i+1; } ArrayB = MyArray[1]; log("ArrayB is " + ArrayB + " Length is " + length(ArrayB)); i = 0; 86 Netcool/Impact: Guía de soluciones While(i < length(ArrayB)) { log("ArrayB["+i+"] = " + ArrayB[i]); i = i+1; } Este ejemplo de política en JavaScript utiliza la misma matriz bidimensional y anota la etiqueta y el valor de un elemento en el registro de analizador: MyArray = [["Hello, World!", 12345], ["xyz", 78, 7, "etc"]]; Log("MyArray is " + MyArray); Log("MyArray Length is " + Length(MyArray)); ArrayA = MyArray[0]; Log("ArrayA is " + ArrayA + " Length is " + Length(ArrayA)); i = 0; while(i < Length(ArrayA)) { Log("ArrayA["+i+"] = " + ArrayA[i]); i = i+1; } ArrayB = MyArray[1]; Log("ArrayB is " + ArrayB + " Length is " + Length(ArrayB)); i = 0; while(i < Length(ArrayB)) { Log("ArrayB["+i+"] = " + ArrayB[i]); i = i+1; } Esta es la salida del registro de analizador: ArrayA[0] = Hello World! ArrayA[1] = 12345 En la política siguiente, se asigna un conjunto de valores a las matrices y a continuación se imprimen los valores de sus elementos en el registro de política. Array1 = {"One", "Two", "Three", "Four", "Five"}; Array2 = {1, 2, 3, 4, 5}; Array3 = {"One", 2, "Three", 4, "Five"}; String1 = "One"; String2 = "Two"; Array4 = {String1, String2}; Log(Array1[0]); Log(Array2[2]); Log(Array3[3]); Log(Array4[1]); Log(CurrentContext()); Aquí se asignan conjuntos de valores a cuatro matrices distintas. En las primeras tres matrices se asignan diversos literales de series y enteros. En la cuarta matriz se asignan variables como los elementos de matriz. Al ejecutar la política se imprime el siguiente mensaje en el registro de política: One 3 4 Two "Preparado con parámetros proporcionados por el usuario "=(String2=Two, ActionType=1, String1=One, EventContainer=(), ActionNodeName=TEMP, Escalation=6, Array4={One, Two}, Array3={One, 2, Three, 4, Five}, Array2={1, 2, 3, 4, 5}, Array1={One, Two, Three, Four, Five}) Capítulo 4. Trabajar con políticas 87 Contexto El contexto es un tipo de datos que puede utilizar para almacenar conjuntos de datos. Los contextos son como el tipo de datos struct en C/C++. Los contextos se pueden utilizar para almacenar elementos de combinaciones de tipos de datos, incluyendo otros contextos y matrices. Estos datos se almacenan en un conjunto de variables denominado variables de miembro que están "contenidas" en el contexto. Las variables de miembros pueden ser de cualquier tipo, incluidos otros contextos. Se hace referencia a las variables de miembros utilizando la anotación por puntos. Este es también el modo en que se hace referencia a las variables de miembro en un struct en lenguajes como C y C++.En esta notación, debe especificar el nombre del contexto y el nombre de la variable de miembro separados por un punto (.). Utiliza esta notación al asignar valores a variables de miembros o al hacer referencia a las variables en otros lugares de una política. Importante: Se proporciona un contexto incorporado, denominado contexto de política, que se crea automáticamente cuando se ejecuta la política. El contexto de política contiene todas las variables que se utilizan en la política, incluidas las variables incorporadas. A diferencia de las matrices y de las variables escalares, debe crear explícitamente un contexto utilizando la función NewObject antes de poder utilizarlo en una política. No es necesario crear las variables de miembros en el contexto. Las variables de miembros se crean automáticamente la primera vez que les asigna su valor. El siguiente ejemplo muestra cómo se crea un contexto nuevo y cómo se asignan y hace referencia a las variables de miembros: MyContext = NewObject(); MyContext.A = "Hello, World!"; MyContext.B = 12345; Log(MyContext.A + ", " + MyContext.B); Este ejemplo anota el mensaje siguiente en el registro de política: Hello, World!, 12345 En la política siguiente se muestra cómo crear un contexto denominado MyContext y asignar un conjunto de valores a sus variables de miembros. MyContext = NewObject(); MyContext.One = "One"; MyContext.Two = 2; MyContext.Three = 3.0; String1 = MyContext.One + ", " + MyContext.Two + ", " + MyContext.Three; Log(String10; Al ejecutar esta política, se imprimirá el mensaje siguiente en el registro de política: One, 2, 3.0 88 Netcool/Impact: Guía de soluciones Sentencias If La sentencia if se utiliza para realizar operaciones de ramificación. La sentencia if se utiliza para controlar qué sentencias de una política se ejecutan comprobando el valor de una expresión para ver si es true. La sentencia if, en el lenguaje de políticas de Impact es la misma que la utilizada en los lenguajes de programación como C/C++ y Java. La sintaxis de la sentencia if es la palabra clave if seguida por una expresión booleana entre paréntesis. Esta expresión va seguida por un bloque de sentencias colocadas entre llaves. Opcionalmente, la sentencia if puede ir seguida por las palabras clave else o elseif, que también van seguidas por un bloque de sentencias. if (condición){ sentencias } elseif (condición){ sentencias } else { sentencias } donde condición es una expresión booleana y sentencias es un grupo de una o más sentencias. Por ejemplo: if (x == 0) { Log("x igual a cero"); } elseif (x == 1){ Log("x igual a uno"); } else { Log("x igual a cualquier otro valor."); } Cuando la palabra clave if se encuentra en una política, la expresión booleana, se evalúa para ver si es verdadera. Si la expresión es true, el bloque de sentencias que sigue se ejecuta. Si no es verdadera, las sentencias se saltan en el bloque. Si a continuación existe una sentencia else en la política, se ejecuta el correspondiente bloque de sentencias else. En esta política de ejemplo, se utiliza la sentencia if para evaluar el valor de la variable Integer1. Si el valor de Integer1 es 0, la política ejecuta las sentencias del bloque de sentencias. Integer1 = 0; if (Integer1 == 0) { Log("El valor de Integer1 es cero."); } Al ejecutar esta política, se imprimirá el mensaje siguiente en el registro de política: El valor de Integer1 es cero. Otro ejemplo muestra cómo utilizar la sentencia else. Aquí se establece el valor de la variable Integer1 en 2. Debido a que la primera prueba de la sentencia if falla, el bloque de sentencias que sigue a la sentencia else se ejecuta. Integer1 = 2; if (Integer1 == 1) { Capítulo 4. Trabajar con políticas 89 Log("El valor de Integer1 es uno."); } else { Log("El valor de Integer1 no es uno."); } Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: El valor de Integer1 no es uno. Sentencias While La sentencia while se utiliza para crear un bucle de un conjunto de instrucciones hasta que se cumplan determinadas condiciones. La sentencia while permite repetir un conjunto de operaciones hasta que una condición especificada sea true. La sentencia while utilizada en el Lenguaje de políticas de Impact es la misma que la utilizada en lenguajes de programación tales como C, C++ y Java. La sintaxis de la sentencia while es la palabra clave while seguida por una expresión booleana entre paréntesis. Esta expresión va seguida por un bloque de sentencias colocadas entre llaves. while (condición) { sentencias } donde condición es una expresión booleana y sentencias es un grupo de una o más sentencias. Por ejemplo: I = 10; while(I > 0) { Log("El valor de I es: " + I); I = I - 1; } Cuando la palabra clave while se encuentra en una política, la expresión booleana, se evalúa para ver si es verdadera. Si la expresión es true, se ejecutarán las sentencias del bloque siguiente. Cuando se han ejecutado las sentencias, Netcool/Impact prueba de nuevo la expresión y continúa ejecutando el bloque de sentencias repetidamente hasta que la condición es false. La manera más habitual de utilizar la sentencia while es construir un bucle que se ejecuta un determinado número de veces según otros factores de una política. Para utilizar la sentencia while de esta forma, debe utilizar una variable de entero como contador. El valor del contador se establece antes de que se inicie el bucle while y disminuya dentro del mismo. La sentencia While prueba el valor del contador cada vez que se ejecuta el bucle y sale cuando el valor del contador es cero. En el ejemplo siguiente se muestra un uso sencillo de la sentencia while: Counter = 10; while (Counter > 0) { Log("El valor del contador es " + Counter); Counter = Counter - 1; } Aquí se asigna el valor de 10 en una variable denominada Counter. En la sentencia while, la política comprueba el valor de Counter para ver si es mayor que cero. Si Counter es mayor que cero, se ejecutan las sentencias del bloque siguiente. La sentencia final del bloque disminuye el valor de Counter en uno. El bucle While en este ejemplo se ejecuta 10 veces antes de salir. 90 Netcool/Impact: Guía de soluciones Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: El El El El El El El El El El valor valor valor valor valor valor valor valor valor valor del del del del del del del del del del contador contador contador contador contador contador contador contador contador contador es es es es es es es es es es 10 9 8 7 6 5 4 3 2 1 En el ejemplo siguiente se muestra cómo utilizar la sentencia While para iterar una matriz. A menudo utiliza esta técnica al gestionar elementos de datos recuperados de un origen de datos. MyArray = {"One", "Two", "Three", "Four"}; Counter = Length(MyArray); while (Counter > 0) { Index = Counter - 1; Log(MyArray[Index]); Counter = Counter - 1; } Aquí se establece el valor de Counter en el número de elementos de la matriz. La sentencia While realiza un bucle a través del bloque de sentencias una vez para cada elemento de matriz. Debe establecer la variable Index en el valor de Counter menos uno. Esto es porque las matrices de IPL están basadas en cero. Esto significa que el valor de índice del primer elemento es 0 en lugar de 1. Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: Four Three Two One En estos ejemplos, cuando utiliza esta técnica para iterar a través de los elementos de una matriz, accede a los elementos en orden inverso. Para evitar hacer esto puede incrementar la variable Counter en lugar de disminuirla en el bucle. Esto requiere que pruebe si el contador tiene menos que el número de elementos de la matriz dentro de la sentencia While. En el ejemplo siguiente se muestra cómo realizar un bucle a través de una matriz al mismo tiempo que se aumenta el valor de la variable Counter. MyArray = {"One", "Two", "Three", "Four"}; ArrayLength = Length(MyArray); Counter = 0; while (Counter < ArrayLength) { Log(MyArray[Counter]); Counter = Counter + 1; } Al ejecutar esta política, se imprimirá el mensaje siguiente en el registro de política: One Two Three Four Capítulo 4. Trabajar con políticas 91 Funciones definidas por el usuario Las funciones definidas por el usuario son las funciones que se utilizan para organizar el código del cuerpo de una política. Después de definir una función, puede invocarla del mismo modo que las funciones de analizador y de acción incorporadas. Las variables que se pasan a una función se pasan mediante referencia, en lugar de mediante un valor. Esto significa que si se modifica el valor de una variable dentro de una función también se modifica el valor de la variable en el ámbito general de la política. Las funciones definidas por el usuario no pueden devolver un valor como un parámetro de retorno. Puede devolver un valor definiendo un parámetro de salida en la declaración de función y luego asignar un valor a la variable en el cuerpo de la función. Los parámetros de salida se especifican del mismo modo que cualquier otro parámetro. Puede declarar sus propias funciones y llamarlas dentro de una política. Las funciones definidas por el usuario ayudan a encapsular y reutilizar funcionalidad en la política. La sintaxis de una declaración de función es la palabra clave Function seguida por el nombre de la función y una lista de parámetros de tiempo de ejecución separados por coma. La lista de parámetros de tiempo de ejecución va seguida por un bloque de sentencias colocadas entre llaves. A diferencia de las funciones de acción y analizador, no puede especificar un valor de retorno para una función definida por el usuario. Pero debido a que las variables contenidas en una política de IPL tienen un ámbito global, puede emular esta funcionalidad estableciendo el valor de una variable de retorno dentro de la función. Las declaraciones de función deben aparecer en una política antes que cualquier instancia donde se llame a la función. El método recomendado es declarar todas las funciones al comienzo de una política. En el ejemplo siguiente se muestra cómo declarar una función definida por el usuario denominada GetNodeByHostname. Esta función busca un nodo en un origen de datos externo utilizando el nombre de host proporcionado. Function GetNodeByHostName(Hostname) { DataType = "Node"; Filter = "Nombre de host =’" + Nombre de host + "’"; CountOnly = False; MyNodes = GetByFilter(DataType, Filter, CountOnly); MyNode = MyNodes[0]; } Se llama a las funciones definidas por el usuario de la misma forma que se llama a otros tipos de funciones. En el ejemplo siguiente se muestra cómo llamar a la función. GetNodeByHostName("ORA_HOST_01"); Aquí el nombre del nodo que desea buscar es ORA_HOST_01. La función busca el nodo en el origen de datos externo y devuelve un elemento de datos 92 Netcool/Impact: Guía de soluciones correspondiente denominado MyNode. Para obtener más información sobre la búsqueda de datos y elementos de datos, consulte el capítulo siguiente de esta publicación. Importante: Cuando escriba una función de Impact compruebe que no llame a la función dentro del cuerpo de la función ya que esto puede provocar un bucle recursivo y originar un error de desbordamiento de pila. Declaraciones de funciones Las declaraciones de funciones son similares a las de los lenguajes de script como, por ejemplo, JavaScript. Los nombres de función válidos pueden incluir números, caracteres y caracteres de subrayado, peor no puede comenzar por un número. El siguiente es un ejemplo de una función definida por el usuario. Function MyFunc(DataType, Filter, MyArray) { MyArray = GetByFilter(DataType, Filter, False); } Llamada a funciones definidas por el usuario Puede llamar a una función definida por el usuario del modo siguiente: Funcname([param1, param2 ...]) El siguiente ejemplo muestra una llamada a función definida por el usuario: MyFunc("User", "Location = ’New York’", Users); Ejemplos de funciones definidas por el usuario El ejemplo siguiente muestra cómo se pasan las variables a una función por referencia: // Ejemplo de vars por referencia Function IncrementByA(NumberA, NumberB) { NumberB = NumberB + NumberA; } SomeInteger = 10; SomeFloat = 100.001; IncrementByA(SomeInteger, SomeFloat); Log("SomeInteger es ahora: " + SomeInteger); // devolverá: IntegerA is now 10 Log("SomeFloat es ahora: " + SomeFloat) // devolverá: FloatB is now 110.001 El ejemplo siguiente muestra cómo las políticas manejan los valores de retorno de las funciones definidas por el usuario: // Ejemplo de salida sin retorno Function LogTime(TimeToLog) { If (TimeToLog == NULL) { TimeToLog = getdate(); } Log("En el tono, la hora será: "+ localtime(TimeToLog)); Capítulo 4. Trabajar con políticas 93 } LoggedTime = LogTime(getdate()); Log("LoggedTime = "+LoggedTime); // devolverá: "LoggedTime = NULL" ya que no puede // devolverse nada desde las funciones de usuario Planificación de políticas Puede configurar Netcool/Impact para ejecutar políticas a horas específicas. Ejecución de políticas utilizando el activador de política Puede utilizar un servicio de activador de política para ejecutar una política a intervalos especificados durante el tiempo de ejecución de Netcool/Impact. Por ejemplo, si desea ejecutar una política denominada CHECK_SYSTEM_STATUS cada 60 minutos durante el día, debe crear un activador de política, y especificar el nombre de la política y el intervalo de tiempo. A continuación, inicie el servicio en el Servidor GUI. Si desea ejecutar una política diferente a horas específicos del día o de la semana, debe utilizar planificaciones. Ejecución de políticas utilizando planificaciones Puede utilizar planificaciones con un activador de políticas para ejecutar una o varias políticas a horas específicas. Procedimiento 1. Cree una planificación. El primer paso de la configuración de políticas para su ejecución a horas específicas es crear un tipo de datos de planificación en la interfaz gráfica de usuario. Para obtener más información, consulte “Creación de un tipo de datos de planificación” en la página 95. 2. Cree un tipo de datos interno que represente cada política como tarea. 3. 4. 5. 6. 94 Después de crear el tipo de datos de planificación, debe crear un tipo de datos que represente cada política como una tarea. El tipo de datos de tarea puede ser un tipo de datos interno y normalmente tiene dos campos definidos por el usuario. Uno que contiene un nombre descriptivo para la tarea y otro que contiene el nombre de la política asociada con la tarea. Para obtener más información, consulte “Creación de tipos de datos de tarea” en la página 95. Cree elementos de datos de tarea. Después de crear el tipo de datos de tarea, el paso siguiente es crear un elemento de datos de tarea para cada política que desee planificar. Para obtener más información, consulte “Creación de elementos de datos de tarea” en la página 96. Añada las tareas a la planificación. Después de haber creado los elementos de datos de tarea, el paso siguiente es agregar las tareas a la planificación que creó al principio. Esto requiere que especifique la tarea que desea planificar y la fecha u hora a la que desea que se ejecute la política asociada. Para obtener más información, consulte “Adición de las tareas a la planificación” en la página 96. Especifique rangos de tiempo para cada tarea. Escriba una política de planificador superior que inicie las tareas. Netcool/Impact: Guía de soluciones Una política de planificador superior es una política que es responsable de comprobar la planificación para ver si cualquier otra política se debe ejecutar en ese momento. Para obtener más información, consulte “Escritura de la política de planificador superior” en la página 97. 7. Cree un activador de política y configúrelo para ejecutar el planificador superior. El activador de política ejecuta la política de planificador superior a intervalos. Cuando se ejecuta la política del planificador superior, comprueba si hay otras políticas actualmente "de servicio" y luego las ejecuta. Puede configurar el activador de política para que se ejecute con cualquier intervalo de tiempo. Para obtener una temporización más precisa de las políticas planificadas, utilice intervalos más pequeños. Para obtener más información, consulte “Creación de un activador de política” en la página 97. 8. Inicie el activador de política. Para iniciar el activador de política, pulse el icono Iniciar servicio asociado con el nuevo activador de política donde se visualiza en el separador Servicios de la barra de herramientas. Creación de un tipo de datos de planificación Puede crear un tipo de datos de planificación en Servidor GUI. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Seleccione un clúster de la lista Clúster. Desde la lista Proyecto, seleccione Global. 3. En el separador Modelo de datos, pulse Planificar, pulsecon el botón derecho y seleccione Tipo de datos nuevo para abrir el separador Tipo de datos nuevo para Internos. 4. Especifique un nombre exclusivo para la planificación en el campo Nombre de tipo de datos. 5. Pulse el icono Guardar para crear el tipo de datos de planificación. Creación de tipos de datos de tarea Utilice este procedimiento para crear el tipo de datos de tarea. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Seleccione un clúster y un proyecto de las listas Clúster y Proyectos. 3. En el separador Modelo de datos, pulse Internos, pulsecon el botón derecho y seleccione Tipo de datos nuevo para abrir el separador Tipo de datos nuevo para Internos. 4. Especifique un nombre exclusivo para el tipo de datos en el campo Nombre de tipo de datos, por ejemplo, Tareas. 5. Cree nuevos campos que contengan un título descriptivo para la tarea y el nombre de la política de la forma siguiente: a. Pulse Campo nuevo para abrir la ventana Campo nuevo. Utilice esta ventana para definir los atributos de los campos de tipo de datos. Capítulo 4. Trabajar con políticas 95 b. Especifique un ID exclusivo en el campo ID, por ejemplo, NombreTarea o NombrePolítica. c. Desde la lista Formato, seleccione Serie. Los campos Nombre para mostrar y Descripción de esta ventana son opcionales. Para los campos de tipos de datos internos, el nombre real y el nombre para mostrar deben ser siempre iguales al ID de campo. Si deja estos campos vacíos, se llenarán automáticamente con el valor del ID. d. Pulse Aceptar para guardar los cambios y volver al separador del tipo de datos. 6. En la lista Campo de nombre de visualización, seleccione el campo que contiene el nombre de tarea. Este nombre para mostrar aparece cuando se navega por los elementos de datos del tipo de datos. No afecta de ninguna otra forma al comportamiento del tipo de datos. 7. Pulse el icono Guardar para implementar los cambios y crear el tipo de datos de tareas. Creación de elementos de datos de tarea Utilice este procedimiento para crear un elemento de datos de tarea. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Seleccione un clúster y un proyecto de las listas Clúster y Proyectos. 3. En el separador Modelo de datos, expanda el tipo de datos Internos, seleccione el elemento de datos de tareas, pulsecon el botón derecho y seleccione Ver elementos de datos. 4. Pulse el icono Nuevo en el menú. 5. Especifique valores para el campo de Clave y para los campos de nombre de tarea y nombre de política que ha definido al crear el tipo de datos de tareas. El valor del campo Clave puede ser el mismo que el nombre de tarea. Sin embargo, si los elementos de datos se crean en el tipo de datos interno o cualquier otro tipo de datos que se debe utilizar en la configuración de planificación, el campo Clave debe ser exclusivo en el tipo de datos y en todas las tareas y políticas. 6. Pulse Aceptar. A continuación, pulse Guardar para crear el elemento de datos. Adición de las tareas a la planificación Utilice este procedimiento para añadir una tarea a la planificación. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. En el separador Modelo de datos, expanda el origen de datos Planificación, seleccione la tarea de planificación que ha creado y pulsecon el botón derecho y seleccione Elementos de datos nuevos para abrir el separador Elementos de datos: Planificación. 3. Pulse Nuevo para abrir el Editor de planificación. 4. En el campo Nombre de planificación, escriba un nombre para la planificación. 5. Añada una descripción al campo Descripción. 96 Netcool/Impact: Guía de soluciones 6. En la lista Editar miembros por tipo, seleccione el nombre del tipo de datos de tarea que ha creado y pulse Editar. 7. En la ventana Seleccionar miembros de planificación que se abre, seleccione las tareas que desee planificar y pulse Añadir. 8. Pulse Aceptar. 9. En la ventana Editor de planificación, seleccione la tarea que desea planificar en la lista Miembros de planificación. 10. Seleccione el tipo de intervalo de tiempo que desea asociar con la tarea en la lista Añadir nuevo intervalo de tiempo y, a continuación, pulse Nuevo. Los posibles tipos de intervalos de tiempo son Diario, Semanal y Absoluto. 11. En la ventana Editar intervalo de tiempo que se abre, especifique el intervalo de tiempo y el huso horario durante el que desea que se ejecute la política. La hora exacta a la que se ejecuta la política depende de este intervalo de tiempo y de la frecuencia a la que el activador de política ejecute la política de planificador superior. Pulse Aceptar. 12. Pulse Aceptar para salir de la ventana Editor de planificación. Escritura de la política de planificador superior Una política de planificador superior es una política que es responsable de comprobar la planificación para ver si cualquier otra política se debe ejecutar en ese momento. También es responsable de iniciar la política. La política de planificador superior llama a la función GetScheduleMember y recupera el elemento de datos de tarea que está actualmente "de servicio". A continuación, obtiene el nombre de la política asociada con la tarea y la ejecuta utilizando la función Activar. En el ejemplo siguiente se muestra una política típica de planificador superior. En este ejemplo, el nombre del tipo de datos de planificación es Planificación y el nombre de la propia planificación es PlanificaciónTareas. El tipo de datos Tareas contiene un campo denominado NombrePolítica que especifica el nombre de la política que se debe ejecutar. // Llamar a GetByKey y recuperar el elemento de datos de planificación que contiene // la planificación de tareas DataType = "Planificación"; Key = "PlanificaciónTareas"; MaxNum = 1; Schedules = GetByKey(DataType, Key, MaxNum); // Llamar a GetScheduleMember y recuperar la tarea que está actualmente // "de servicio" Tasks = GetScheduleMember(Schedules[0], 0, False, GetDate()); // Llamar a Activate e iniciar la política asociada con la tarea Activate(Null, Tasks[0].PolicyName); Creación de un activador de política Utilice este procedimiento para crear el activador de políticas. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Servicios para abrir el separador Servicios. Capítulo 4. Trabajar con políticas 97 2. En el separador Servicios, pulse el icono Crear servicio nuevo en la barra de herramientas. Pulse Activador de políticas para abrir el separador Activador de política nuevo. 3. En el campo Nombre de servicio, escriba un nombre exclusivo para el activador de políticas. 4. En el campo Intervalo de activación, especifique en segundos el intervalo en el que desee que el activador de políticas ejecute la política de planificador superior. 5. En la lista Política, seleccione la política de planificador superior que ha creado. 6. Seleccione el recuadro de selección Inicio si desea que el activador de políticas se ejecute de forma automática cuando se inicia el servidor. 7. Seleccione el recuadro de selección Registro de servicio si desea escribir los registros de servicio en un archivo. 8. Pulse el icono Guardar de la barra de herramientas para crear el activador de políticas. 98 Netcool/Impact: Guía de soluciones Capítulo 5. Gestión de sucesos Desde una política de IPL, puede acceder y actualizar los valores del campo de los sucesos entrantes; añadir entradas de diario a los sucesos; enviar sucesos nuevos al origen de sucesos y suprimir sucesos en el origen de sucesos. Visión general de sucesos Un suceso es un conjunto de datos que representa un estado o una actividad de una red. La estructura y el contenido de un suceso varían en función del dispositivo, sistema o aplicación que ha generado el suceso pero en la mayoría de casos, los sucesos son alertas de Netcool/OMNIbus. Estos sucesos los generan supervisores y analizadores Netcool y se almacenan en la base de datos del ObjectServer. Los sucesos se obtienen utilizando lectores de sucesos, escuchas de sucesos y servicios de lectores de correo electrónico. Los datos de sucesos entrantes se almacenan utilizando la variable incorporada EventContainer. Esta variable se pasa al motor de política como parte del contexto al ejecutar una política. Al escribir una política, puede acceder a los campos del suceso utilizando las variables de miembros de EventContainer. Contenedores de sucesos El contenedor de sucesos es un tipo de datos nativo de Netcool/Impact utilizado para almacenar datos de sucesos. El contenedor de sucesos consta de un conjunto de variables de estado de sucesos y campos de sucesos. Variable EventContainer EventContainer es una variable incorporada que almacena los datos de los campos de los sucesos entrantes. Cada vez que se pasa un suceso al motor de política para su proceso, se crea una instancia de EventContainer, se llenan las variables de los campos del suceso y el suceso se almacena en el contexto de política. A continuación, puede acceder a los valores de los campos del suceso desde la política. Variables de campos de suceso Las variables de campos de suceso son variables de miembros de un contenedor de sucesos que almacenan los valores de los campos de un suceso. Existe una variable de campo de suceso para cada campo de un suceso. Los nombres de las variables de campos de suceso equivalen a los nombres de los campos de suceso. Por ejemplo, si un suceso tiene campos denominados AlertKey, Node, Severity y Summary, el contenedor de sucesos correspondiente tiene variables de campos de suceso con los mismos valores. © Copyright IBM Corp. 2006, 2014 99 Variables de estado de suceso Las variables de estado de suceso son un conjunto de variables de miembros predefinidas que se pueden utilizar para especificar el estado de un suceso al enviarlo al origen de sucesos utilizando la función ReturnEvent. Se utilizan dos variables de estado de suceso: JournalEntry y DeleteEvent. Para obtener información sobre la utilización de JournalEntry, consulte “Adición de entradas de diario a los sucesos” en la página 101. Para obtener información sobre la utilización de DeleteEvent, consulte “Supresión de sucesos” en la página 103. Variables de contenedor de sucesos definidas por el usuario Las variables de contenedor de sucesos definidas por el usuario son variables que se crean al utilizar la función NewEvent. Puede utilizar estas variables al enviar sucesos nuevos al origen de sucesos, o cuando desee almacenar temporalmente datos de sucesos en una política. Acceso a los campos de sucesos Puede utilizar la notación por puntos o la notación @ para acceder a los valores de los campos de sucesos. Utilización de la notación por puntos Puede utilizar la notación por puntos para acceder al valor de los campos de sucesos de la misma forma que accede a los valores de las variables de miembros de una struct en lenguajes como C y C++. En la política siguiente se muestra cómo utilizar la notación por puntos para acceder a los valores de los campos Node, Severity y Summary de un suceso entrante e imprimirlos en el registro de política: Log(EventContainer.Node); Log(EventContainer.Severity); Log(EventContainer.Summary); Utilización de la notación @ Si utiliza IPL, puede utilizar la notación @ para acceder a los campos de sucesos. La notación @ es una abreviatura que puede utilizar para hacer referencia a los campos de sucesos en la variable EventContainer incorporada sin necesidad de escribir todo el nombre de EventContainer. Si utiliza JavaScript, debe utilizar la notación con puntos EventContainer.Identifier. En la política siguiente se muestra cómo utilizar la notación @ para acceder al valor de los campos Node, Severity y Summary de un suceso entrante e imprimirlos en el registro de política: Log(@Node); Log(@Severity); Log(@Summary); Actualización de los campos de sucesos Para actualizar los campos de un suceso entrante, debe asignar nuevos valores a las variables de los campos de suceso en EventContainer. 100 Netcool/Impact: Guía de soluciones Un suceso que tenga un nuevo valor asignado a su variable de campo no se actualizará hasta que llame a la función ReturnEvent. En los ejemplos siguientes se muestra cómo actualizar los campos Summary y Severity de un suceso entrante. @Summary = "Nodo inactivo"; @Summary = @Summary + ": Actualizado por Netcool/Impact"; @Severity = 3; @Severity = @Severity + 1; Adición de entradas de diario a los sucesos Puede utilizar IPL y JavaScript para añadir entradas de diario a los sucesos de Netcool/OMNIbus existentes. Acerca de esta tarea Sólo puede agregar entradas de diario a sucesos que existan en la base de datos del ObjectServer. No puede añadir entradas de diario a sucesos nuevos que ha creado utilizando la función NewEvent en la política actualmente en ejecución. Siga estos pasos para añadir una entrada de diario a un suceso. Procedimiento 1. Asigne el texto del diario a la variable JournalEntry. JournalEntry es una variable de estado de suceso para agregar nuevas entradas de diario a un suceso existente. Para obtener más información, consulte “Asignación de la variable JournalEntry”. 2. Envíe el suceso al origen de sucesos utilizando la función ReturnEvent. Llame a ReturnEvent y pase el contenedor de sucesos como parámetro de tiempo de ejecución de la forma siguiente: ReturnEvent(EventContainer); Ejemplo En el ejemplo siguiente se muestra cómo agregar una nueva entrada de diario a un suceso entrante. // Asignar un texto de entrada de diario a la variable JournalEntry @JournalEntry = ’Modificado el ’ + LocalTime(GetDate()) + "\r\n" + ’Modificado por Netcool\Impact.’; // Enviar el suceso al origen de sucesos utilizando ReturnEvent ReturnEvent(EventContainer); Asignación de la variable JournalEntry JournalEntry es una variable de estado de suceso para agregar nuevas entradas de diario a un suceso existente. Netcool/Impact utiliza reglas especiales para interpretar literales de serie asignados a JournalEntry. El texto almacenado en JournalEntry se debe asignar utilizando comillas, a excepción de los caracteres especiales como \r, \n y \t, que se deben asignar utilizando comillas dobles. Si desea utilizar ambas clases de texto en una única entrada, debe especificarlas por separado y, a continuación, concatenar la serie utilizando el operador +. Capítulo 5. Gestión de sucesos 101 Para incorporar un salto de línea en una entrada de diario, debe utilizar una serie \r\n. En los ejemplos siguientes se muestra cómo asignar texto de diario a la variable JournalEntry. @JournalEntry = ’Modificado por Netcool/Impact’; @JournalEntry = ’Modificado el ’ + LocalTime(GetDate()); @JournalEntry = ’Modificado el ’ + LocalTime(GetDate()) + "\r\n" + ’Modificado por Netcool/Impact’; Envío de sucesos nuevos Utilice este procedimiento para enviar sucesos nuevos a un origen de sucesos. Procedimiento 1. Crear un contenedor de sucesos utilizando la función NewEvent Para crear un contenedor de sucesos, llame la función NewEvent y pase el nombre del lector de sucesos asociado al origen de sucesos: MyEvent = NewEvent("lectorsucesospredeterminado"); La función devuelve un contenedor de sucesos vacío. 2. Establezca la variable de miembro EventReaderName: MyEvent.EventReaderName = "defaulteventreader"; 3. Llene los campos de sucesos asignando valores a las variables de campo de suceso correspondientes. Por ejemplo: MyEvent.EventReaderName = "defaulteventreader"; MyEvent.Node = "192.168.1.1"; MyEvent.Summary = "Nodo inactivo"; MyEvent.Severity = 5; MyEvent.AlertKey = MyEvent.Node + ":" + MyEvent.Summary; 4. Envíe el suceso al origen de datos utilizando la función ReturnEvent. Llame a la función ReturnEvent y pase el contenedor de sucesos nuevo como parámetro de tiempo de ejecución de la forma siguiente: ReturnEvent(MyEvent); Ejemplo En el ejemplo siguiente se muestra cómo crear, llenar y enviar un nuevo suceso a un origen de sucesos. // Crear un nuevo contenedor de sucesos MyEvent = NewEvent("lectorsucesospredeterminado"); // Llenar las variables de miembros del contenedor de sucesos MyEvent.EventReaderName = "defaulteventreader"; MyEvent.Node = "192.168.1.1"; MyEvent.Summary = "Nodo inactivo"; MyEvent.Severity = 5; MyEvent.AlertKey = MyEvent.Node + ":" + MyEvent.Summary; // Agregar una entrada de diario (opcional) MyEvent.JournalEntry = ’Modificado el ’ + LocalTime(GetDate()) + "\r\n" + ’Modificado por Netcool/Impact"; 102 Netcool/Impact: Guía de soluciones // Enviar el suceso al origen de sucesos ReturnEvent(MyEvent); Supresión de sucesos Utilice este procedimiento para suprimir un suceso entrante del origen de sucesos. Procedimiento 1. Establezca la variable DeleteEvent en el contenedor de sucesos. La variable DeleteEvent es una variable de estado de suceso que se utiliza para especificar que se debe suprimir un suceso cuando éste se envíe de vuelta al origen de sucesos. Debe establecer el valor de DeleteEvent en True para que se suprima un suceso. Por ejemplo: @DeleteEvent = True; 2. Envíe el suceso al origen de sucesos utilizando la función ReturnEvent. Por ejemplo: ReturnEvent(EventContainer); Ejemplos de supresión de un suceso entrante del origen de sucesos Estos ejemplos muestran cómo suprimir un suceso entrante del origen de sucesos mediante IPL y JavaScript. v Lenguaje de políticas de Impact: // Establecer la variable DeleteEvent @DeleteEvent = True; // Enviar el suceso al origen de sucesos ReturnEvent(EventContainer); v JavaScript: // Establecer la variable DeleteEvent EventContainer.DeleteEvent = true; // Enviar el suceso al origen de sucesos ReturnEvent(EventContainer); Capítulo 5. Gestión de sucesos 103 104 Netcool/Impact: Guía de soluciones Capítulo 6. Gestión de datos Puede manejar datos en una política. Desde dentro de una política puede recuperar datos de un origen de datos por filtro, por clave o por enlace, suprimir, o añadir datos a un origen de datos, actualizar datos en un origen de datos y llamar a funciones de base de datos o procedimientos almacenados. Puede acceder a datos almacenados en una amplia variedad de orígenes de datos. Éstos incluyen muchas bases de datos comerciales, como por ejemplo Oracle, Sybase y Microsoft SQL Server. También puede acceder a los datos almacenados en el origen de datos LDAP y a los datos almacenados por diversas aplicaciones de terceros, incluidos los gestores de inventario de red y los sistemas de mensajería. Cómo trabajar con elementos de datos Los elementos de datos son elementos del modelo de datos que representa unidades reales de datos almacenadas en un origen de datos. La estructura de esta unidad de datos depende de la categoría del origen de datos asociada. Por ejemplo, si el origen de datos es un tipo de datos de la base de datos SQL, cada elemento de datos corresponde a una fila de una tabla de la base de datos. Si el origen de datos es un servidor LDAP, cada elemento de datos corresponde a un nodo de la jerarquía de LDAP. Variables de campos Las variables de campos son variables de miembros de un elemento de datos. Existe una variable de campo para cada campo de elemento de datos. Los nombres de las variables de campos coinciden con que los nombres de los campos de elementos de datos subyacentes. Por ejemplo, si tiene un elemento de datos con dos campos denominados ID de usuario y Nombre de usuario, también tendrá dos variables de campos denominadas ID de usuario y Nombre de usuario. Variables DataItem y DataItems La variable DataItems es una variable incorporada de matriz de tipos que se utiliza de manera predeterminada para almacenar elementos de datos devueltos por GetByFilter, GetByKey, GetByLinks u otras funciones que recuperan elementos de datos. Si no especifica una variable de retorno al llamar a estas funciones, Netcool/Impact asigna los elementos de datos recuperados a la variable DataItems. La variable DataItem hace referencia al primer elemento (índice 0) de la matriz DataItems. Recuperación de datos por filtro La recuperación de datos por filtro significa que los elementos de datos se obtienen de un tipo de datos donde ya sabe el valor de uno de los campos o de varios. Cuando recupera datos por filtro, está diciendo "Proporcionarme todos los elementos de datos de ese tipo, donde determinados campos contengan los valores especificados. © Copyright IBM Corp. 2006, 2014 105 Cómo trabajar con filtros Un filtro es una cadena de texto que define las condiciones para las que Netcool/Impact recupera datos. El uso de filtros con tipos de datos internos, SQL, LDAP y algunos tipos de datos Mediator está soportado. El formato del filtro varía dependiendo de la categoría del tipo de datos. Filtros SQL Los filtros SQL son series de texto que se utilizan para especificar un subconjunto de elementos de datos en un tipo de datos interno o de base de datos SQL. Para tipos de datos internos y de base de datos SQL, el filtro es una cláusula WHERE de SQL que proporciona un conjunto de comparaciones que deben ser true para que se devuelva un elemento de datos. Estas comparaciones normalmente se realizan entre los nombres de campos y sus valores correspondientes. Sintaxis Para tipos de datos de base de datos SQL, la sintaxis del filtro SQL la especifica el origen de datos subyacente. El filtro SQL es el contenido de una cláusula SQL WHERE especificada en el formato proporcionado por la base de datos subyacente. Cuando los elementos de datos se recuperan del origen de datos, este filtro se pasa directamente a la base de datos subyacente para su proceso. Para los tipos de datos internos, el filtro SQL lo procesa internamente el motor de políticas. Para los tipos de datos internos, la sintaxis es la siguiente: Campo Operador Valor [AND | OR | NOT (Campo Operador Valor) ...] donde Campo es el nombre de un campo de tipo de datos, Operador es un operador comparativo y Valor es el valor del campo. Atención: Tenga en cuenta que para los tipos de datos internos y SQL, los literales de un filtro SQL deben estar entrecomillados. El motor de políticas interpreta las comillas dobles antes de procesar el filtro SQL. Si se utilizan comillas dobles dentro de un filtro SQL se generan errores de análisis. Operadores Uno de los operadores de comparación estándar especifica el tipo de comparación. La sintaxis del filtro SQL soporta los operadores comparativos siguientes: v > v < v = v <= v => v != v LIKE 106 Netcool/Impact: Guía de soluciones Restricción: Puede utilizar el operador LIKE con expresiones regulares, como las que soporta el origen de datos subyacente. La sintaxis del filtro SQL soporta los operadores booleanos AND, OR y NOT. Consejo: Se pueden utilizar juntas varias comparaciones mediante los operadores AND, OR y NOT. Orden de operación Puede especificar el orden en que se evalúan las expresiones del SQL utilizando paréntesis. Ejemplos A continuación se proporciona un ejemplo de filtro SQL: Location = ’NYC’ Location LIKE ’NYC.*’ Facility = ’Wandsworth’ AND Facility = ’Putney’ Facility = ’Wall St.’ OR Facility = ’Midtown’ NodeID >= 123345 NodeID != 123234 Puede utilizar este filtro para obtener todos los datos en los que el valor del campo Location es New York: Location = ’New York’ Con este filtro se obtienen todos los datos en los que el valor del campo Location es New York o New Jersey: Location = ’New York’ OR Location = ’New Jersey’ Para obtener todos los elementos de datos cuando el valor del campo Location es Chicago o Los Angeles y el valor del campo Nivel es 3: (Location = ’New York’ OR Location = ’New Jersey’) AND Nivel = 3 Filtros LDAP Los filtros LDAP son series de texto que se utilizan para especificar un subconjunto de elementos de datos en un tipo de datos LDAP. El origen de datos LDAP subyacente procesa los filtros LDAP.Utilice los filtros LDAP cuando realice las tareas siguientes: v Recuperar elementos de datos de un tipo de datos LDAP que utilice GetByFilter. v Recuperar un subconjunto de elementos de datos LDAP que utilice GetByLinks. v Suprimir elementos de datos individuales de un tipo de datos LDAP. v Especificar qué elementos de datos aparecen cuando examina un tipo de datos LDAP en la GUI. Sintaxis Un filtro LDAP consta de una o varias expresiones booleanas con operadores lógicos que tienen el prefijo de la lista de expresiones.Las expresiones booleanos utilizan el formato siguiente: Capítulo 6. Gestión de datos 107 Atributo Operador Valor donde Atributo es el nombre del atributo LDAP Valor es el valor del campo. La sintaxis del filtro admite los operadores =, ~=, <, <=, >, >= y ! y proporciona una coincidencia de subseries limitadas si se utiliza el operador *. Asimismo, la sintaxis también da soporte a llamadas para coincidencia de extensiones definidas en el origen de datos LDAP. Los espacios en blanco no se utilizan como separadores entre el atributo, el operador y el valor y estos valores de serie no se especifican utilizando comillas. Para obtener más información acerca de la sintaxis de filtros LDAP, consulte Internet RFC 2254. Operadores Como con los filtros SQL, los filtros LDAP proporcionan un conjunto de comparaciones que deben ser true a fin de que se devuelva el elemento de datos. Estas comparaciones normalmente se realizan entre los nombres de campos y sus valores correspondientes. Los operadores de comparación a los que se da soporte en los filtros LDAP son los siguientes: v = v ~=, v v v v v < <= > >= ! Una diferencia entre los filtros LDAP y los filtros SQL es que cualquier operador booleano utilizado para especificar varias comparaciones debe aparecer como prefijo de la expresión. Otra diferencia es que los literales de serie no se especifican utilizando comillas. Ejemplos A continuación se proporciona un ejemplo de filtro LDAP: (cn=Mahatma Gandhi) (!(location=NYC*)) (&(facility=Wandsworth)(facility=Putney)) (|(facility=Wall St.)(facility=Midtown)(facility=Jersey City)) (nodeid>=12345) Puede utilizar este ejemplo para obtener todos los datos en los que el valor de nombre común es Mahatma Gandhi: (cn=Mahatma Gandhi) Con este ejemplo obtendrá todos los elementos de datos en los que el valor del atributo location no empieza por la serie NYC: (!(location=NYC*)) Para obtener todos los elementos de datos donde el valor del atributo facility es Wandsworth o Putney: 108 Netcool/Impact: Guía de soluciones (|(facility=Wandsworth)(facility=Putney)) Filtros de mediador Los filtros de Mediador se utilizan con la función GetByFilter para recuperar los elementos de datos de algunos tipos de datos de Mediador. La sintaxis de los filtros de mediador varía en función del DSA subyacente. Para obtener más información sobre la sintaxis de mediador para un DSA determinado, consulte la documentación del DSA. Recuperación de datos por filtro en una política Para recuperar datos por filtro, debe llamar a la función GetByFilter y pasar el nombre del tipo de datos y la serie de filtro. La función devuelve una matriz de elementos de datos que coinciden con las condiciones del filtro. Si no especifica una variable de retorno, GetByFilter asigna la matriz a la variable DataItems incorporada. Ejemplo de recuperación de datos de un tipo de datos de base de datos SQL Estos ejemplos muestran cómo recuperar datos de un tipo de datos de base de datos SQL. En el primer ejemplo, puede obtener todos los elementos de datos de un tipo de datos llamado Node donde el valor del campo Location es New York y el valor del campo TypeID es 012345. A continuación se imprimen los campos y valores del elemento de datos en el registro de política utilizando las funciones Log y CurrentContext. // Llamar a GetByFilter y pasar el nombre del tipo de datos // y la serie de filtro. DataType = "Node";Filter = "Location = ’New York’ AND TypeID = 012345"; CountOnly = False; MyNodes = GetByFilter(DataType, Filter, CountOnly); // Registrar los valores de campos de elementos de datos. Log(CurrentContext()); Una versión más corta de este ejemplo es la siguiente: MyNodes = GetByFilter("Node", "Location = ’New York’ AND TypeID = 012345", False); Log(CurrentContext()); En el segundo ejemplo, puede obtener todos los elementos de datos de un tipo de datos llamado Node donde el valor del campo IPAddress iguala el valor del campo Node en un suceso entrante. Como anteriormente, se imprimen los campos y valores de los elementos de datos en el registro de política. // Llamar a GetByFilter y pasar el nombre del tipo de datos // y la serie de filtro. DataType = "Node"; Filter = "IPAddress = ’" + @Node + "’"; CountOnly = False; MyNodes = GetByFilter(DataType, Filter, CountOnly); Capítulo 6. Gestión de datos 109 // Registrar los valores de campos de elementos de datos. Log(CurrentContext()); Asegúrese de comprender la sintaxis de filtro en el código de ejemplo. Cuando se utiliza el valor de una variable dentro de una serie de filtro SQL, el valor se debe colocar entre comillas. Se debe a que Netcool/Impact procesa la serie de filtro en dos etapas. Durante la primera etapa, evalúa la variable. Durante la segunda etapa, concatena la serie de filtro y la envía al origen de datos para su proceso. Una versión más corta de este ejemplo es la siguiente: MyNodes = GetByFilter("Node", "Location = ’" + @Node + "’", False); Log(CurrentContext()); Ejemplo de recuperación de datos de un tipo de datos LDAP Estos ejemplos muestran cómo recuperar datos de un tipo de datos LDAP. En el primer ejemplo, puede obtener cualesquiera elementos de datos de un tipo de datos llamado User donde el valor del campo cn (nombre común) es Brian Huang. A continuación se imprimen los campos y valores del elemento de datos en el registro de política utilizando las funciones Log y CurrentContext. // Llamar a GetByFilter y pasar el nombre del tipo de datos // y la serie de filtro. DataType = "Usuario"; Filter = "(cn=Brian Huang)"; CountOnly = False; MyUsers = GetByFilter(DataType, Filter, CountOnly); // Registrar los valores de campos de elementos de datos. Log(CurrentContext()); Una versión más corta de este ejemplo es la siguiente: MyUsers = GetByFilter("User", "(cn=Brian Huang)", False); Log(CurrentContext()); En el segundo ejemplo, puede obtener todos los elementos de datos de un tipo de datos llamado Node donde el valor del campo Location es New York o New Jersey. Como anteriormente, se imprimen los campos y valores de los elementos de datos en el registro de política. // Llamar a GetByFilter y pasar el nombre del tipo de datos // y la serie de filtro. DataType = "Node"; Filter = "(|(Location=NewYork)(Location=New Jersey))"; CountOnly = False; MyNodes = GetByFilter(DataType, Filter, CountOnly); // Registrar los valores de campos de elementos de datos Log(CurrentContext()); Una versión más corta de este ejemplo es la siguiente: MyNodes = GetByFilter("Node", "(|(Location=New York)(Location=New Jersey))", False); Log(CurrentContext()); 110 Netcool/Impact: Guía de soluciones Ejemplo de búsqueda de datos de un tipo de datos Mediador DSA de Smallworld En el ejemplo siguiente se muestra cómo buscar datos de un tipo de datos de Mediador de DSA Smallworld. Smallworld es un gestor de inventario de red desarrollado por GE Network Solutions. Netcool/Impact proporciona un DSA de mediador y un conjunto de tipos de datos predefinidos que permiten leer datos del NIS Smallworld. En este ejemplo se obtienen todos los elementos de datos del tipo de datos SWNetworkElement donde el valor de ne_name es DSX1 PNL-01 (ORP). A continuación se imprimen los campos y valores del elemento de datos en el registro de política utilizando las funciones Log y CurrentContext. // Llamar a GetByFilter y pasar el nombre del tipo de datos // y la serie de filtro. DataType = "ELementoRedSW"; Filter = "ne_name = ’DSX1 PNL-01 (ORP)’"; CountOnly = False; MyElements = GetByFilter(DataType, Filter, CountOnly); // Registrar los valores de campos de elementos de datos. Log(CurrentContext()); Una versión más corta de este ejemplo es la siguiente: MyElements = GetByFilter("ElementoRedSW", \ "ne_name = ’NSX1 PNL-01 (ORP)’", False); Log(CurrentContext()); Recuperación de datos por clave La recuperación de datos por clave significa que los elementos de datos se obtienen de un tipo de datos donde ya sabe el valor de uno de los campos de clave o de varios. Cuando recupera datos por clave, está diciendo: "Proporcionarme un número determinado de elementos de datos en ese tipo, donde los campos de clave equivalgan a los valores que especifique. Debido a que los campos de clave normalmente indican un elemento de datos exclusivo, el número de elementos de datos devueltos es normalmente de uno. Claves Una clave es un campo especial de un tipo de datos que identifica de forma exclusiva un elemento de datos. Debe especificar los campos de clave al crear un tipo de datos. La forma más habitual de utilizar el campo de clave es utilizarlo para identificar un campo de clave en el origen de datos subyacente. Para obtener más información sobre las claves de tipo de datos, consulte “Claves de tipo de datos” en la página 19. Expresiones de clave La expresión de clave es un valor o matriz de valores al que deben equivaler los campos de clave del elemento de datos a fin de que se devuelvan. Están soportadas las expresiones de clave siguientes: Capítulo 6. Gestión de datos 111 Expresiones de clave única Una expresión de clave única es un entero, valor flotante o serie que especifica el valor con el que el campo de clave de un elemento de datos debe coincidir para que se devuelva. Expresiones de varias claves Una expresión de varias claves es una matriz de valores con la que los campos de clave de un elemento de datos deben coincidir para poder recuperarse. Para obtener más información, consulte “Expresiones de varias claves”. Expresiones de varias claves Una expresión de varias claves es una matriz de valores con la que los campos de clave de un elemento de datos deben coincidir para poder recuperarse. Netcool/Impact determina si los valores de los campos de clave coinciden comparando cada uno de los valores de la matriz con el campo de clave correspondiente de uno en uno. Por ejemplo, si tiene un tipo de datos con dos campos de clave denominados Key_01 y Key_02, y utiliza una expresión de clave de {"KEY_12345", "KEY_93832"}, la función compara KEY_12345 con el valor de Key_01 y KEY_93832 con el valor de Key_02. Si los dos campos coinciden con los valores especificados, la función devuelve el elemento de datos. Si sólo un campo coincide, o ninguno de ellos, el elemento de datos no se devuelve. Recuperación de datos por clave en una política Para recuperar datos por clave, debe llamar a la función GetByKey y pasar el nombre del tipo de datos y la serie de filtro. La función devuelve una matriz de elementos de datos que coinciden con las condiciones del filtro. Si no especifica una variable de retorno, GetByKey asigna la matriz a la variable DataItems incorporada. Ejemplo de devolución de datos de un tipo de datos mediante una expresión de una sola clave En este ejemplo se recupera un elemento de datos de un tipo de datos denominado Nodo donde el valor del campo de clave es ID-00001. A continuación se imprimen los campos y valores del elemento de datos en el registro de política utilizando las funciones Log y CurrentContext. // Llamar a GetByKey y pasar el nombre del tipo de datos // y la expresión de clave. DataType = "Node"; Key = "ID-00001"; MaxNum = 1; MyNodes = GetByKey(DataType, Key, MaxNum); // Registrar los valores de campos de elementos de datos. Log(CurrentContext()); Una versión más corta de este ejemplo es la siguiente: MyNodes = GetByKey("Node", "ID-00001", 1); Log(CurrentContext()); 112 Netcool/Impact: Guía de soluciones Ejemplo de devolución de datos por clave mediante una expresión de varias claves En este ejemplo se recupera un elemento de datos de un tipo de datos denominado Cliente donde los valores de sus campos de clave son R12345 y D98776. Se imprimen los campos y valores de los elementos de datos en el registro de política. // Llamar a GetByKey y pasar el nombre del tipo de datos // a la expresión de clave. Type = "Cliente"; Key = {"R12345", "D98776"}; MaxNum = 1; MyCustomers = GetByKey(Type, Key, MaxNum); // Registrar los valores de campos de elementos de datos. Log(CurrentContext()); Una versión más corta de este ejemplo es la siguiente: MyCustomers = GetByKey("Cliente", {"R12345", "D98776"}, 1); Log(CurrentContext()); Recuperación de datos por enlace La recuperación de datos por enlace significa que los elementos de datos se obtienen de tipos de datos enlazados a uno o más elementos de datos que ha recuperado anteriormente. Cuando recupera elementos de datos por enlace, está diciendo "Proporcionarme elementos de datos de estos tipos de datos que estén enlazados a estos elementos de datos que ya tiene. Los elementos de datos que ya tiene se denominan elementos de datos de origen. Los elementos de datos que desea recuperar se denominan destinos. Visión general de enlaces Los enlaces son elementos del modelo de datos que definen relaciones entre elementos de datos y entre tipos de datos. Pueden ahorrar tiempo durante el desarrollo de políticas porque permiten definir una relación de datos una vez y a continuación reutilizarla varias veces cuando necesite encontrar datos relacionados con otros datos en una política.Los enlaces son un componente opcional de un modelo de datos. Los enlaces dinámicos y estáticos están soportados. Recuperación de datos por enlace en una política Para recuperar elementos de datos por enlace, en primer lugar debe recuperar elementos de datos de origen utilizando las funciones GetByFilter o GetByKey. A continuación, debe llamar a GetByLinks y pasar una matriz de tipos de datos de destino y los orígenes. La función devuelve una matriz de elementos de datos de los tipos de datos de destino que están enlazados con los elementos de datos de origen. Opcionalmente, puede especificar un filtro que define un subconjunto de elementos de datos de destino a devolver. También puede especificar el número máximo de elementos de datos devueltos. Capítulo 6. Gestión de datos 113 Ejemplo de recuperación de datos por enlace En estos ejemplos se muestra cómo recuperar datos por enlace. En el primer ejemplo, se llama a GetByFilter y se recupera un elemento de datos del tipo de datos Nodo cuyo valor Nombre de host coincide con el campo Nodo de un suceso entrante. A continuación, se llama a GetByLinks para recuperar todos los elementos de datos del tipo de datos Clientes que están enlazados al Nodo. En este ejemplo se imprimen los campos y valores de los elementos de datos del registro de política antes de salir. // Llamar a GetByFilter y pasar el nombre del tipo de datos // y la serie de filtro. DataType = "Node"; Filter = "Nombre de host = ’" + @Node + "’"; CountOnly = False; MyNodes = GetByFilter(DataType, Filter, CountOnly); // Llamar a GetByLinks y pasar el tipo de datos de destino, // el número máximo de elementos de datos a recuperar y // el elemento de datos de origen. DataTypes = {"Cliente"}; Filter = ""; MaxNum = "10000"; DataItems = MyNodes; MyCustomers = GetByLinks(DataTypes, Filter, MaxNum, DataItems); // Registrar los valores de campos de elementos de datos. Log(CurrentContext()); Una versión más corta de este ejemplo es: MyNodes = GetByFilter("Node", "Nombre de host = ’" + @Node + "’", False"); MyCustomers = GetByLinks({"Cliente"}, "", 10000, MyNodes); Log(CurrentContext()); En el segundo ejemplo se utiliza un filtro de enlace para especificar un subconjunto de elementos de datos en el tipo de datos de destino que se debe devolver. Como anteriormente, se llama a GetByFilter y se recupera un elemento de datos del tipo de datos Nodo cuyo valor Nombre de host coincide con el campo Nodo de un suceso entrante. A continuación, se llama a GetByLinks para recuperar todos los elementos de datos del tipo de datos Clientes cuya Ubicación es New York y que están enlazados con el Nodo. A continuación, se imprimen los campos y valores de los elementos de datos en el registro de política antes de salir. // Llamar a GetByFilter y pasar el nombre del tipo de datos // y la serie de filtro. DataType = "Node"; Filter = "Nombre de host = ’" + @Node + "’"; CountOnly = False; MyNodes = GetByFilter(DataType, Filter, CountOnly); // Llamar a GetByLinks y pasar el tipo de datos de destino, // el número máximo de elementos de datos a recuperar y // el elemento de datos de origen. DataTypes = {"Cliente"}; Filter = "Location = ’New York’"; MaxNum = "10000"; 114 Netcool/Impact: Guía de soluciones DataItems = MyNodes; MyCustomers = GetByLinks(DataTypes, Filter, MaxNum, DataItems); // Registrar los valores de campos de elementos de datos. Log(CurrentContext()); Una versión más corta de este ejemplo es: MyNodes = GetByFilter("Node", "Nombre de host = ’" + @Node + "’", False"); MyCustomers = GetByLinks({"Cliente"}, "Location = ’New York’", 10000, MyNodes); Log(CurrentContext()); Adición de datos Utilice este procedimiento para añadir un elemento de datos a un tipo de datos. Procedimiento 1. Cree un contexto mediante la función NewObject. En el ejemplo siguiente se muestra cómo crear un contexto llamado MyNode . MyNode = NewObject(); 2. Cumplimente las variables de miembro del contexto con datos correspondientes a los valores que desea establecer en el elemento de datos nuevo. El nombre de cada variable de miembro debe ser exactamente el que aparece en la definición de tipo de datos, como en el ejemplo siguiente: MyNode.Name = "Achilles"; MyNode.IPAddress = "192.168.1.1"; MyNode.Location = "London"; 3. Añada el elemento de datos. Puede agregar el elemento de datos al tipo de datos llamando a la función AddDataItem y pasando el nombre del tipo de datos y el contexto como parámetros de tiempo de ejecución. En el ejemplo siguiente se muestra cómo agregar el elemento de datos a un tipo de datos. AddDataItem("Node", MyNode); Ejemplo de adición de un elemento de datos a un tipo de datos En este ejemplo, el tipo de datos se denomina Usuario. El tipo de datos Usuario contiene los campos siguientes: Nombre, Ubicación e ID. // Crear nuevo contexto. MyUser = NewObject(); // Llenar las variables de miembros en el contexto. MyUser.ID = "00001"; MyUSer.Name = "Jennifer Mehta"; MyUser.Location = "New York"; // Llamar a AddDataItem y pasar el nombre del tipo de datos // y el contexto. DataType = "Usuario"; AddDataItem(DataType, MyUser); Capítulo 6. Gestión de datos 115 Una versión más corta de este mensaje sería la siguiente: MyUser=NewObject(); MyUser.ID = "00001"; MyUser.Name = "Jennifer Mehta"; MyUser.Location = "New York"; AddDataItem("Usuario", MyUser); Actualización de datos Puede actualizar uno o varios elementos de datos. Para actualizar un único elemento de datos, en primer lugar debe recuperar los datos del tipo de datos utilizando GetByFilter, GetByKey o GetByLinks. A continuación, puede actualizar los campos de elementos de datos cambiando los valores de las variables de campo correspondientes. Cuando cambia el valor de las variables de campos, los valores del origen de datos subyacente se actualizan en tiempo real. Esto significa que cada vez que establece un nuevo valor de campo, Netcool/Impact solicita una actualización a nivel de origen de datos. Para actualizar varios elementos de datos en un tipo de datos, debe llamar a la función BatchUpdate y pasar el nombre del tipo de datos, una serie de filtro que especifica qué elementos de datos actualizar y una expresión de actualización. Netcool/Impact actualiza todos los elementos de datos coincidentes con los valores especificados. La expresión de actualización utiliza la misma sintaxis que la cláusula SET de la sentencia UPDATE a la que da soporte el origen de datos subyacente. Esta cláusula consta de una lista de campos y valores separados por coma que se deben actualizar. Sólo se da soporte a la actualización de varios elementos de datos para tipos de datos de base de datos SQL. Ejemplo de actualización de elementos de datos individuales En este ejemplo se llama a GetByFilter y se recupera un elemento de datos de un tipo de datos denominado Nodo. A continuación, cambie el valor de las variables de campos correspondientes. // Llamar a GetByFilter y pasar el nombre del tipo de datos // y la serie de filtro. DataType = "Node"; Filter = "Location = ’" + @Node + "’"; CountOnly = False; MyNodes = GetByFilter(DataType, Filter, CountOnly); MyNode = MyNodes[0]; // Actualizar los valores de las variables de campos en MyNode // Las actualizaciones se realizan en tiempo real en el origen de datos MyNode.Name = "Host_01"; MyNode.ID = "00001"; // Registrar los valores de campos de elementos de datos. Log(CurrentContext()); 116 Netcool/Impact: Guía de soluciones Una versión más corta de este ejemplo es la siguiente: MyNodes = GetByFilter("Node", "Location = ’" + @Node + "’", False); MyNodes[0].Name = "Host_01"; MyNodes[0].ID = "00001"; Log(CurrentContext()); Ejemplo de actualización de varios elementos de datos En este ejemplo se actualizan todos los elementos de datos del tipo de datos Cliente cuya Ubicación es New York. La actualización cambia los valores de los campos Ubicación y Nodo. A continuación se recuperan los mismos elementos de datos utilizando GetByFilter para verificar la actualización. Antes de salir se imprimen los valores de los campos del elemento de datos en el registro de política. // Llamar a BatchUpdate y pasar el nombre del tipo de datos, // la serie de filtro y una expresión de actualización DataType = "Cliente"; Filter = "Location = ’New York’"; UpdateExpression = "Location = ’London’, Node = ’Host_02’"; BatchUpdate(DataType, Filter, UpdateExpression); // Llamar a GetByFilter y pasar el nombre del tipo de datos // y una serie de filtro DataType = "Cliente"; Filter = "Location = ’London’"; CountOnly = False; MyCustomers = GetByFilter(DataType, Filter, CountOnly); // Registrar los valores de campos de elementos de datos. Log(CurrentContext()); Una versión más corta de este ejemplo es la siguiente: BatchUpdate("Cliente", "Location = ’New York’", "Location = ’London’, Nodo = ’Host_02’"); MyCustomers = GetByFilter("Cliente", "Location = ’London’", False); Log(CurrentContext()); Supresión de datos Puede suprimir uno o varios elementos de datos. Para poder suprimir un único elemento de datos de un tipo de datos, en primer lugar debe recuperarlo del origen de datos. Puede recuperar el elemento de datos utilizando las funciones GetByFilter, GetByKey o GetByLinks. Después de haber recuperado el elemento de datos, puede llamar a la función DeleteDataItem y pasar el elemento de datos como parámetro de tiempo de ejecución. Para suprimir varios elementos de datos, debe llamar a la función BatchDelete y pasarle el nombre del tipo de datos y un filtro o los elementos de datos que desea suprimir. Cuando suprime elementos de datos por filtro, está diciendo: "Suprimir todos los elementos de datos de ese tipo, donde determinados campos contengan los valores indicados. Capítulo 6. Gestión de datos 117 El filtro es una serie de texto que establece las condiciones con las que debe coincidir un elemento de datos para que se deba suprimir. La sintaxis del filtro es que una cláusula SQL WHERE que proporciona un conjunto de comparaciones debe ser true a fin de que se devuelva un elemento de datos. Esta sintaxis especificada por el origen de datos subyacente. Cuando Netcool/Impact se dirige al origen de datos para suprimir los elementos de datos, pasa este filtro directamente al origen de datos para su proceso. Sólo se da soporte a la supresión de elementos de datos por filtro para tipos de datos de base de datos SQL. También puede suprimir elementos de datos pasándolos directamente a la función BatchDelete como matriz. Ejemplo de supresión de elementos de datos individuales En este ejemplo se suprime un elemento de datos de un tipo de datos denominado Usuario donde el valor del campo Nombre es John Rodriguez. Debido a que el tipo de datos (en este caso) sólo contiene un elemento de datos coincidente, puede hacer referencia a él como MyUsers[0]. // Llamar a GetByFilter y pasar el nombre del tipo de datos // y la serie de filtro. DataType = "Usuario"; Filter = "Nombre = ’John Rodriguez’"; CountOnly = False; MyUsers = GetByFilter(DataType, Filter, CountOnly); MyUser = MyUsers[0]; // Llamar a DeleteDataItem y pasar el elemento de datos. DeleteDataItem(MyUser); Una versión más corta de este ejemplo es la siguiente: MyUsers = GetByFilter("Usuario", "Nombre = ’John Rodriguez’", False); DeleteDataItem(MyUsers[0]); Ejemplo de supresión de elementos de datos por filtro En este ejemplo se suprimen todos los elementos de datos de un tipo de datos denominado Nodo, donde el valor de Ubicación es New York. // Llamar a BatchDelete y pasar el nombre del tipo de datos // y una serie de filtro que especifique qué elementos de datos se deben suprimir DataType = "Node"; Filter = "Location = ’New York’"; DataItems = NULL; BatchDelete(DataType, Filter, DataItems); Una versión más corta de este ejemplo es la siguiente: BatchDelete("Node", "Location = ’New York’", NULL); Ejemplo de supresión de elementos de datos por elemento En el ejemplo siguiente se muestra cómo suprimir varios elementos de datos pasándolos directamente a BatchDelete. 118 Netcool/Impact: Guía de soluciones En este ejemplo se suprimen todos los elementos de datos de un tipo de datos denominado Cliente, donde el valor de Ubicación es London. // Llamar a GetByFilter y pasar el nombre del tipo de datos // y una serie de filtro DataType = "Cliente"; Filter = "Location = ’New York’"; CountOnly = False MyCustomers = GetByFilter(DataType, Filter, CountOnly); // Llamar a BatchDelete y pasar la matriz // devuelta por GetByFilter BatchUpdate(DataType, NULL, MyCustomers); Una versión más corta de este ejemplo es la siguiente: MyCustomers = GetByFilter("Cliente", "Location = ’London’", False); BatchDelete("Clientes", NULL, MyCustomers); Cómo llamar a funciones de base de datos Puede llamar a funciones definidas en el origen de datos subyacente de un tipo de datos de base de datos SQL. Estas funciones permiten obtener datos útiles como por ejemplo el número de filas de la base de datos que coinciden con un filtro especificado. Para llamar a una función de base de datos, debe llamar a CallDBFunction y pasar el nombre del tipo de datos, una serie de filtro y la expresión de función. A continuación, CallDBFunction devuelve los resultados de la función. CallDBFunction utiliza la misma sintaxis de filtro SQL que GetByFilter y BatchDelete. Encontrará la sintaxis completa y ejemplos adicionales de los filtros SQL en la publicación Guía de consulta de políticas. En el ejemplo siguiente se muestra cómo llamar a la función COUNT de base de datos en una política. En este ejemplo se cuenta el número de elementos de datos del tipo de datos Node, donde el valor del campo Location es New York. A continuación se imprime el número de elementos contados en el registro de política. // Llamar a CallDBFunction y pasar el nombre del tipo de datos, // una serie de filtro y la expresión de función. DataType = "Node"; Filter = "Location = ’New York’"; Function = "COUNT()"; NumItems = CallDBFunction(DataType, Filter, Function); // Imprimir el número de elementos contados en el registro de política. Log(NumItems); Una versión más corta de este ejemplo es la siguiente: NumItems = CallDBFunction("Node", "Location = ’New York’", "COUNT()"); Log(NumItems); Capítulo 6. Gestión de datos 119 120 Netcool/Impact: Guía de soluciones Capítulo 7. Gestión de las hibernaciones Las hibernaciones son políticas que se han puesto temporalmente en suspensión. Mientras una política está en suspensión, ésta se almacena internamente en su estado actual y todo el proceso se pone en pausa hasta que el servicio del activador de políticas en hibernación u otra política la active. Los lenguajes IPL y JavaScript admiten la hibernación. Visión general de las hibernaciones El tipo de datos Hibernación es un tipo de datos del sistema que almacena políticas en hibernación. Normalmente no crea o modifica elementos de datos Hibernación utilizando la GUI de Tivoli Integrated Portal. Sin embargo, puede utilizar la GUI para suprimir hibernaciones almacenadas en el caso de que se produzca una condición de error y de que las hibernaciones no se activen mediante el activador de políticas en hibernación u otra política. Una clave de acción es una serie que identifica de manera exclusiva una hibernación. Cuando ponga una política en hibernación, deberá especificar una clave de acción exclusiva. El valor de tiempo de espera de hibernación es el número de segundos que hiberna una política antes de que el activador de políticas en hibernación pueda activarla. El valor de tiempo de espera de hibernación no afecta a la hora a la que otra política puede activar la hibernación. Las hibernaciones están diseñadas para su utilización en soluciones de X sucesos en Y tiempo. Este tipo de solución supervisa un origen de sucesos para ver si se produce un número determinado de sucesos idénticos durante un intervalo de tiempo, y realiza la acción de gestión de sucesos indicada (por ejemplo, notificar a un administrador de una condición de suceso repetitivo). Puede poner una política en hibernación. También puede activar una política de hibernación o eliminar una política de hibernación desde el tipo de datos de hibernación. Utilice la función RemoveHibernation para eliminar una política del tipo de datos de hibernación y eliminarlo de la cola de hibernación. Hibernación de una política Para hibernar una política, debe llamar a la función Hibernate y pasar una clave de acción y el número de segundos que ésta debe hibernar. La clave de acción debe ser una serie exclusiva que desee utilizar para identificar la política. Normalmente, esta serie se obtiene realizando cualquier combinación de las tareas siguientes: v Utilice el valor del campo Identificador en un suceso del ObjectServer entrante. El ObjectServer genera un valor de Identificador exclusivo para cada suceso. v Utilice la función Random para generar un valor aleatorio. v Utilice la función GetDate para generar un valor basado en la hora actual del sistema. © Copyright IBM Corp. 2006, 2014 121 Ejemplos de hibernación de una política En los ejemplos siguientes se muestra cómo hibernar una política y trabajar con los lenguajes IPL y JavaScript. En este ejemplo, la clave de acción es el valor del campo Identificador de un suceso ObjectServer entrante. Esta política estará en hibernación durante 60 segundos antes de que el activador de políticas en hibernación la active. // Llamar a Hibernar y pasar una clave de acción y el valor // de tiempo de espera para la hibernación. ActionKey = EventContainer.Identifier; Reason = null; Timeout = 60; Hibernate(ActionKey, Reason, Timeout); Una versión más corta de esta política es la siguiente. Hibernate(EventContainer.Identifier, null, 60); En este ejemplo, la clave de acción es una combinación de la hora actual del sistema y un valor aleatorio. Esta política estará en hibernación durante 2 minutos antes de que el activador de políticas en hibernación la active. // Llamar a Hibernar y pasar una clave de acción y el valor // de tiempo de espera para la hibernación. ActionKey = GetDate() + "_" + Random(9999); Reason = null; Timeout = 120; Hibernate(ActionKey, Reason, Timeout); Una versión más corta de esta política es la siguiente. Hibernate(GetDate() + Random(9999), null, 120); Recuperación de hibernaciones La recuperación de hibernaciones es la manera en la que se obtienen elementos de datos del tipo de datos Hibernación. Debe recuperar una hibernación para poder activarla desde una política o eliminarla. Puede recuperar hibernaciones mediante dos modos: v La búsqueda de clave de acción v El filtro Recuperación de hibernaciones por búsqueda de clave de acción Puede utilizar la función GetHibernatingPolicies para recuperar hibernaciones utilizando una búsqueda lexicográfica de valores de clave de acción. Acerca de esta tarea GetHibernatingPolicies devuelve una matriz de elementos de datos Hibernación cuyas claves de acción están dentro del rango de claves de acción de inicio y finalización especificadas. 122 Netcool/Impact: Guía de soluciones En el ejemplo siguiente se muestra cómo recuperar hibernaciones utilizando una búsqueda de clave de acción. Esta búsqueda devuelve todos los elementos de datos Hibernación cuyas claves de acción se encuentran entre ClaveAcciónAAA y ClaveAcciónZZZ. El ejemplo imprime también el contenido del contexto de política en el registro del árbol de acciones. // Llamar a GetHibernatingPolicies y pasar los valores // de clave de acción de inicio y de clave de acción de finalización. StartActionKey = "TeclaAcciónAAA"; EndActionKey = "TeclaAcciónZZZ"; MaxNum = 10000; MyHibers = GetHibernatingPolicies(StartActionKey, EndActionKey, MaxNum); Log(CurrentContext()); Una versión más corta de este ejemplo es la siguiente. MyHibers = GetHibernatingPolicies("ClaveAcciónAAA", "ClaveAcciónZZZ", 10000); Log(CurrentContext()); Recuperación de hibernaciones por filtro Puede utilizar la función GetByFilter para recuperar hibernaciones utilizando un filtro. Acerca de esta tarea GetByFilter devuelve una matriz de elementos de datos Hibernación cuyas claves de acción coinciden con la serie de filtro especificada. El filtro es un filtro SQL tal como se define en “Recuperación de datos por filtro” en la página 105. En el ejemplo siguiente se muestra cómo recuperar hibernaciones utilizando GetByFilter. En este ejemplo se recupera el elemento de datos Hibernación cuya clave de acción es 76486467. A continuación, se imprime el contenido del contexto de política actual en el registro de política. // Llamar a GetByFilter y pasar el nombre del tipo de datos // y una serie de filtro. DataType = "Hibernación"; Filter = "ActionKey = ’76486467’"; CountOnly = false; MyHibers = GetByFilter(DataType, Filter, CountOnly); Log(CurrentContext()); Una versión más corta de este ejemplo es la siguiente. MyHibers = GetByFilter("Hibernation", "ActionKey = ’76486467’, false); Log(CurrentContext()); Activación de una hibernación Existen dos modos en los que se puede salir de una hibernación. Para activar una hibernación, debe realizar las tareas siguientes: v Recuperar la hibernación utilizando GetHibernatingPolicies o GetByFilter v Llamar a ActivateHibernation Capítulo 7. Gestión de las hibernaciones 123 También debe ejecutar la función RemoveHibernation para eliminar la política de la cola de hibernación y para liberar recursos de memoria. Recuperación de la hibernación El primer paso de la activación de una hibernación es recuperarla del tipo de datos Hibernación utilizando GetHibernatingPolicies o GetByFilter. Acerca de esta tarea Este paso se describe en la sección anterior de esta guía. Llamada a ActivateHibernation Después de haber recuperado la hibernación, puede llamar a la función ActivateHibernation y pasar el elemento de datos como parámetro de tiempo de ejecución. Ejemplo En el ejemplo siguiente se muestra cómo activar una hibernación. En este ejemplo, se activa una política de hibernación cuyo valor de clave de acción es TeclaAcciónABC. // Llamar a GetHibernatingPolicies y pasar los valores // de clave de acción de inicio y de clave de acción de finalización. StartActionKey = "TeclaAcciónAAA"; EndActionKey = "TeclaAcciónZZZ"; MaxNum = 10000; MyHibers = GetHibernatingPolicies(StartActionKey, EndActionKey, MaxNum); MyHiber = MyHibers[0]; // Llamar a ActivateHibernation y pasar el elemento de datos Hibernation como // un parámetro de tiempo de ejecución. ActivateHibernation(MyHiber); Eliminación de hibernaciones Utilice la función RemoveHibernation para eliminar una política del tipo de datos de hibernación y eliminarlo de la cola de hibernación. Para eliminar una hibernación desde el repositorio de datos interno, debe llamar a la función RemoveHibernation y pasar la clave de acción de la hibernación como parámetro de tiempo de ejecución. En el ejemplo siguiente se muestra cómo eliminar una hibernación. En este ejemplo, la clave de acción para la hibernación es ClaveAcciónABC. RemoveHibernation("ClaveAcciónABC"); 124 Netcool/Impact: Guía de soluciones Capítulo 8. Envío de correo electrónico Netcool/Impact permite enviar correo electrónico desde una política. Visión general de envío de correo electrónico Puede utilizar la característica para enviar notificaciones de correo electrónico a los administradores y usuarios cuando se produzca un suceso o combinación de sucesos determinados. Netcool/Impact no proporciona un servidor de correo incorporado. Para poder enviar correo electrónico, debe asegurarse de que haya un servidor SMTP disponible en el entorno. El servicio de remitente de correo electrónico de Netcool/Impact debe estar también en ejecución para que una política pueda enviar satisfactoriamente correo electrónico. Enviando un correo electrónico Para enviar correo electrónico debe llamar a la función SendEmail y pasar la siguiente información como parámetros de tiempo de ejecución. Acerca de esta tarea Para enviar correo electrónico debe llamar a la función SendEmail y pasar la siguiente información como parámetros de tiempo de ejecución: Procedimiento v v v v La dirección de correo electrónico del destinatario El texto de la línea del asunto del correo electrónico El contenido del cuerpo del correo electrónico Nombre del remitente de correo electrónico Resultados En el ejemplo siguiente se muestra cómo enviar un correo electrónico. En este ejemplo, se envía el correo electrónico a la dirección [email protected]. // Llamar a SendEmail y enviar la dirección, el asunto y el texto de mensaje // como parámetros de tiempo de ejecución Address = "[email protected]"; Subject = "Notificación de Netcool/Impact"; Message = EventContainer.Node + " ha indicado la condición de error siguiente: " + EventContainer.Summary; Sender = "impact"; ExecuteOnQueue = false; SendEmail(null, Address, Subject, Message, Sender, ExecuteOnQueue); © Copyright IBM Corp. 2006, 2014 125 126 Netcool/Impact: Guía de soluciones Capítulo 9. Configuración de mensajería instantánea La mensajería instantánea (IM) es un servicio de red que permite a dos participantes comunicarse mediante texto en tiempo real. Los servicios de mensajería instantánea que más se utilizan son ICQ, AOL Instant Messenger (AIM), Yahoo! Messenger y Microsoft Messenger. Puede enviar y recibir mensajes instantáneos desde dentro de una política de Impact. Mensajería instantánea de Netcool/Impact Mensajería instantánea de Netcool/Impact es una característica que permite enviar y recibir mensajes instantáneos desde dentro de una política. Utilizando esta característica, Netcool/Impact puede supervisar una cuenta de mensajería instantánea en cualquiera de los servicios utilizados más habitualmente para ver si hay mensajes entrantes y realizar operaciones cuando se reciban mensajes específicos: Netcool/Impact también puede enviar mensajes instantáneos a cualquier otra cuenta de mensajería instantánea. Puede utilizar este servicio para utilizar sistemas de mensajería instantánea para notificar a los administradores, operadores y otros usuarios cuando se producen determinadas condiciones en su entorno. La mensajería instantánea de Netcool/Impact utiliza Jabber para enviar y recibir mensajes instantáneos. Jabber es un conjunto de protocolos y tecnologías que proporcionan la manera en la que dos entidades de software intercambian datos de transmisión continua a través de una red. Para obtener más información, consulte el sitio web de Jabber en la dirección http://www.jabber.org. Componentes de mensajería instantánea de Netcool/Impact Netcool/Impact tiene dos tipos de servicio que funcionan conjuntamente con las políticas para proporcionar la funcionalidad de mensajería instantánea. El servicio de lector Jabber está a la escucha de mensajes instantáneos entrantes y a continuación envía una política especificada cuando se recibe un nuevo mensaje. El servicio Jabber envía mensajes a otras cuentas de mensajería instantánea. Netcool/Impact requiere acceso a un servidor Jabber para poder enviar y recibir mensajes instantáneos. Encontrará disponible una lista de servidores Jabber públicos en el sitio web de Jabber en http://www.jabber.org/user/ publicservers.php. Proceso de la mensajería instantánea de Netcool/Impact El proceso IM de Netcool/Impact cuenta con dos fases: escucha y envío de mensajes. Escucha de mensajes Durante la fase de escucha de mensajes, el servicio de lector Jabber está a la escucha de nuevos mensajes de una o más cuentas de mensajería instantánea. © Copyright IBM Corp. 2006, 2014 127 Cuando se recibe un nuevo mensaje, el lector Jabber crea un nuevo EventContainer y lo llena con el contenido del mensaje entrante. A continuación, el lector Jabber inicia la política especificada en sus valores de configuración y le pasa el EventContainer. A continuación, Netcool/Impact procesa la política. Envío de mensajes El envío de mensajes es la fase durante la cual Netcool/Impact envía nuevos mensajes mediante el servicio Jabber. El envío de mensajes se produce durante la ejecución de una política cuando Netcool/Impact encuentra una llamada a la función SendInstantMessage. Cuando Netcool/Impact procesa una llamada a SendInstantMessage, pasa el contenido del mensaje, destinatario y otra información al servicio Jabber. A continuación, el servicio Jabber ensambla el mensaje y lo envía a un servidor Jabber donde se direcciona al destinatario especificado. Configuración de la mensajería instantánea de Netcool/Impact Para poder enviar y recibir mensajes instantáneos utilizando una política, debe configurar el servicio Jabber y el servicio de lector Jabber tal como se describe en la publicación Guía de la interfaz de usuario. Después de haber configurado estos servicios, puede empezar a escribir políticas de mensajería instantánea utilizando la información de “Utilización de políticas de mensajería instantánea”. Utilización de políticas de mensajería instantánea Utilice los mensajes instantáneos en una políticaNetcool/Impact para enviar mensajes y gestionar mensajes de entrada. Gestión de mensajes entrantes Cuando el lector Jabber recibe un mensaje entrante, inicia la política especificada en la configuración del servicio del lector Jabber y pasa el contenido del mensaje a la política utilizando la variable EventContainer. Acerca de esta tarea A continuación, la política puede gestionar el mensaje entrante de la misma forma que gestiona la información pasada en un suceso entrante. Cuando el lector Jabber recibe un mensaje entrante, llena los campos siguientes de la variable EventContainer: From y Body. El campo From contiene el nombre de usuario de la cuenta desde la que se ha enviado el mensaje. Body contiene el contenido del mensaje. Puede acceder al contenido de estos campos utilizando la notación por puntos o la notación @. Envío de mensajes Puede enviar mensajes instantáneos desde una política utilizando la función SendInstantMessage. Acerca de esta tarea Esta función requiere que especifique el destinatario y el contenido del cuerpo del mensaje. También puede especificar un asunto, un ID de sala de conversación y si desea enviar el mensaje directamente o ponerlo en la cola de mensajes para su 128 Netcool/Impact: Guía de soluciones proceso por parte del servicio del gestor de ejecución de mandatos. Para ver una descripción completa de esta función, consulte la publicación Guía de consulta de políticas. Ejemplo En el ejemplo siguiente se muestra cómo enviar y recibir mensajes instantáneos utilizando la mensajería instantánea de Netcool/Impact. En este ejemplo, el servicio de lector Jabber llama a la política siempre que se recibe un mensaje entrante. A continuación, la política confirma la recepción del mensaje y realiza un conjunto diferente de acciones, en función de si el remitente del mensaje es NetcoolAdmin o NetcoolOps. // Llamar a SendInstantMessage y pasar el nombre del destinatario y el contenido // del mensaje como parámetros de mensaje To = @De // Destinatario es remitente de mensaje original TextMessage = "Recepción de mensaje confirmada."; SendInstantMessage(To, NULL, NULL, TextMessage, False); If (@De == "NetcoolAdmin") { Log("Mensaje recibido de usuario NetcoolAdmin."); Log("Contenido del mensaje: " + @Cuerpo); If (@From == "NetcoolOps") { Log("Mensaje recibido de usuario NetcoolOps."); Log("Contenido del mensaje: " + @Cuerpo); } Else { Log("Mensaje recibido de usuario no reconocido."); Log("Contenido del mensaje: " + @Cuerpo); } Capítulo 9. Configuración de mensajería instantánea 129 130 Netcool/Impact: Guía de soluciones Capítulo 10. Ejecución de mandatos externos La ejecución de mandatos externos es el proceso de ejecución de aplicaciones, scripts y mandatos externos desde una política. Visión general de la ejecución de mandatos externos Puede utilizar el servidor JRExec o el mandato y la característica de respuesta para ejecutar mandatos externos. El servidor JRExec es un componente ejecutable de Netcool/Impact que le permite ejecutar mandatos externos en el sistema donde está ubicado el servidor Netcool/Impact. Mandato y respuesta es una característica más avanzada que permite ejecutar programas interactivos y no interactivos en sistemas locales y remotos. Puede ejecutar cualquier tipo de mandato externo que se pueda iniciar desde una línea de mandatos. Esto incluye los mandatos del sistema operativo, scripts de shell y muchos otros tipos de aplicaciones. Gestión del servidor JRExec El servidor JRexec se utiliza para ejecutar mandatos externos, scripts y aplicaciones desde una política. Visión general del servidor JRExec El servidor JRExec es un componente de servidor ejecutable de Netcool/Impact que se utiliza para ejecutar mandatos, scripts y aplicaciones externos desde dentro de una política en el mismo sistema en el que está instalado Netcool/Impact. El servidor JRExec se instala automáticamente cuando se instala Netcool/Impact. En los sistemas Windows también debe añadir manualmente el servidor JRExec como un servicio Windows. Ejecute el servidor JRExec ya sea mediante el script del servidor JRExec o con las herramientas de administración de servicios, según el sistema operativo. El servidor se configura mediante un archivo de propiedades. Utilice la función JRExecAction para ejecutar mandatos externos desde dentro de una política. Para obtener más información sobre la función JRExecAction, consulte Guía de consulta de políticas. Inicio del servidor JRExec Utilice este procedimiento para iniciar el servidor JRExec. Procedimiento v En los sistemas UNIX se utiliza el script de inicio del servidor JRExec, nci_jrexec, situado en el directorio $IMPACT_HOME/bin. Ejecute este mandato en el terminal: ./nci_jrexec v En los sistemas Windows se inicia el servicio de servidor JRExec, en la consola de gestión de Servicios. © Copyright IBM Corp. 2006, 2014 131 Pulse con el botón derecho en Servidor Netcool JRExec en la ventana Servicios que se abre y seleccione Iniciar. Detención del servidor JRExec Utilice este procedimiento para detener el servidor JRExec. Procedimiento v En los sistemas Windows se detiene el servicio de servidor JRExec, en la consola de gestión de Servicios. Pulse con el botón derecho en Servidor Netcool JRExec en la ventana Servicios que se abre y seleccione Detener. v En los sistemas UNIX debe finalizar manualmente el proceso. Hay dos procesos asociados al servidor JRExec: el proceso nci_jrexec y un proceso JAVA iniciado por el proceso nci_jrexec. 1. Obtenga los ID utilizando estos mandatos: – ps -eaf | grep nci_jrexec Este mandato devuelve el PID del proceso nci_jrexec. – ps -eaf | grep java Aparte del Servidor Impact y del ID de proceso de Servidor GUI, este mandato debe devolver este proceso: 501 16053 1 1 13:58 pts/2 00:00:02 /home/netcool_usr/IBM/tivoli/tipv2/java/bin/java -Dibm.tivoli.impact.propertiesDir=/home/netcool_usr/IBM/tivoli/impact/etc -Dbase.directory=/home/netcool_usr/IBM/tivoli/impact -Dnetcool.productname=impact -classpath /home/netcool_usr/IBM/tivoli/impact/lib/nciJmxClient.jar: /home/netcool_usr/IBM/tivoli/tipv2/lib/ext/log4j-1.2.15.jar com.micromuse.response.client.RemoteJRExecServerImpl Esto es sólo un ejemplo, por lo que es posible que el PID y la vía de acceso del proceso sean diferentes en el sistema del usuario. 2. Termine ambos procesos con este mandato: kill -9 pid donde pid es uno de los dos ID de proceso asociados con el servidor JRExec. Propiedades de configuración del servidor JRExec El archivo de propiedades del servidor JRExec, jrexecserver.props, se encuentra en el directorio $IMPACT_HOME/etc/. El archivo puede contener las propiedades siguientes: impact.jrexecserver.port Para cambiar el número de puerto utilizado por el servidor JRExec. El valor predeterminado es 1345. Si cambia esta propiedad, debe actualizar también el valor de la propiedad impact.jrexec.port en el archivo <nombre_servidor>_server.props, donde <nombre_servidor> es el nombre de la instancia de Servidor Impact. impact.jrexecserver.logfile Para habilitar el registro para el servidor JRExec. Establezca como valor la vía de acceso y el nombre de archivo del archivo de registro del servidor JRExec de destino. Por ejemplo, impact.jrexecserver.logfile=/opt/IBM/ tivoli/impact/logs/jrexecserver.log. 132 Netcool/Impact: Guía de soluciones Registro cronológico del servidor JRExec Para habilitar el registro cronológico para el servidor JRExec, añada la propiedad impact.jrexecserver.logfile al archivo de propiedades del servidor JRExec. 1. Cree un archivo de propiedades llamado jrexecserver-log4j.properties en el directorio $NCHOME/impact/etc. 2. Defina las propiedades siguientes en el archivo de propiedades: log4j.rootCategory=INFO log4j.appender.JREXEC=org.apache.log4j.RollingFileAppender log4j.appender.JREXEC.threshold=DEBUG log4j.appender.JREXEC.layout=org.apache.log4j.PatternLayout log4j.appender.JREXEC.layout.ConversionPattern=%d{DATE} %-5p [%c{1}] %m%n log4j.appender.JREXEC.append=true log4j.appender.JREXEC.file=<$NCHOME>/impact/log/nci_jrexec.log log4j.appender.JREXEC.bufferedIO=false log4j.appender.JREXEC.maxBackupIndex=3 log4j.appender.JREXEC.maxFileSize=10MB Asegúrese de utilizar la vía de acceso completa para el valor <$NCHOME>. 3. También debe establecer DEBUG como la prioridad predeterminada para todos los registradores de IBM y micromuse en el mismo archivo: log4j.category.com.micromuse=DEBUG,JREXEC log4j.additivity.com.ibm.tivoli=false log4j.additivity.com.micromuse=false 4. Cree un archivo de registro llamado nci_jrexec.log en el directorio $NCHOME/impact/log. Ejecutar de mandatos con el servidor JRExec Para ejecutar un mandato utilizando el servidor JRExec, puede llamar a la función JRExecAction y pasar el nombre del mandato y cualquier argumento de línea de mandatos como parámetros de tiempo de ejecución. También puede pasar un valor que especifica si desea que el servidor JRExec espere a que se complete el mandato antes de ejecutar otros mandatos o si desea que continúe el proceso sin esperar. En el ejemplo siguiente se muestra cómo ejecutar un mandato externo con el servidor JRExec. En este ejemplo se envía una página a un administrador utilizando una aplicación de búsqueda de personas denominada pageit que se instala en el directorio /opt/pager/bin del sistema. La aplicación pageit toma el número de teléfono de la persona a la que se busca y el número de contacto de retorno como argumentos de línea de mandatos. En esta aplicación, el servidor JRExec espera a que la aplicación finalice antes de continuar procesando otros mandatos. // Llamar a JRExecAction y pasar la serie del mandato y // otros parámetros Command = "/opt/pager/bin/pageit"; Args = {"2125551212", "2126353131"}; ExecuteOnQueue = False; Timeout = 60; JRExecAction(Command, Args, ExecuteOnQueue, Timeout); Utilización de CommandResponse Mandato y respuesta es una característica avanzada que permite ejecutar programas interactivos y no interactivos en sistemas locales y remotos. Capítulo 10. Ejecución de mandatos externos 133 Puede invocar esta característica en una política utilizando la función CommandResponse. Para obtener más información sobre la sintaxis de la función, consulte CommandResponse en Guía de consulta de políticas. 134 Netcool/Impact: Guía de soluciones Capítulo 11. Gestión de series y matrices Lea la información siguiente sobre el manejo de strings y matrices en una política. Gestión de series Puede utilizar la política Netcool/Impact para manipular series de varias formas. Puede realizar las tareas siguientes con series: v v v v v v v Concatenar series Buscar la longitud de una serie Dividir una serie en subseries Extraer una subserie de otra serie Sustituir una subserie de una serie Eliminar una subserie de una serie Eliminar espacio en blanco inicial/final de una serie v Cambiar las mayúsculas/minúsculas de una serie v Cifrar y descifrar series Concatenación de series Para concatenar series, debe utilizar el operador de suma (+). Acerca de esta tarea Puede concatenar dos series o varias series a la vez. También puede concatenar una serie con un valor numérico. En el ejemplo siguiente se muestra cómo concatenar series. String1 = "Esto"; String2 = "es una prueba"; String3 = String1 + " " + String2; Log(String3); String4 = "El valor de X es" + 5; Log(String4); Al ejecutar este ejemplo, se imprimen los mensajes siguientes en el registro de política: Esto es una prueba. El valor de X es 5 Búsqueda de la longitud de una serie Puede utilizar la función Length para encontrar la longitud de una serie. Acerca de esta tarea La función Length devuelve el número de caracteres de cualquier serie de texto. En el ejemplo siguiente se muestra cómo utilizar la función Length. © Copyright IBM Corp. 2006, 2014 135 NumChars = Length("Esto es una prueba."); Log(NumChars); Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: 19 División de una serie en subseries Puede utilizar la función Dividir para dividir una serie en subseries. Acerca de esta tarea La función Split toma una serie y un conjunto de caracteres de delimitador como parámetros de tiempo de ejecución. Devuelve una matriz en la que cada elemento es una subserie. En el ejemplo siguiente se muestra cómo utilizar la función Split. MyString = "One, Two, Three, Four."; Delimiters = ",."; MyArray = Split(MyString, Delimiters); Count = Length(MyArray); While (Count > 0) { Index = Count - 1; Log(MyArray[Index]); Count = Count - 1; } Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: Four Three Two One Extracción de una subserie de otra serie Puede utilizar la posición de palabra o una expresión regular coincidente para extraer una subserie de otra serie. Extracción de una subserie utilizando la posición de la palabra Para utilizar la posición de palabra para extraer una subserie, llame la función Extract y pase la serie y la posición de palabra de la subserie. En el ejemplo siguiente se muestra cómo extraer una serie de esta forma. MyString = "Esto es una prueba."; MySubstring = Extract(MyString, 2); Log(MySubstring); Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: es Extracción de una subserie utilizando la coincidencia de expresión regular Puede utilizar coincidencia de expresión regular para recuperar una única subserie o todas las subseries de una serie. 136 Netcool/Impact: Guía de soluciones Para extraer una única subserie, debe utilizar la función RExtract. La función RExtract toma una serie y un patrón de expresiones regulares como parámetros de tiempo de ejecución. Devuelve la primera subserie coincidente que encuentra en la serie. Para extraer todas las subseries coincidentes, debe utilizar la función RExtractAll. De la misma forma que con RExtract, la función RExtractAll toma una serie y un patrón de expresiones regulares como parámetros de tiempo de ejecución. Devuelve una matriz que contiene todas las subseries coincidentes. Sustitución de una subserie en una serie Puede utilizar la función Replace para sustituir una subserie de una serie. Acerca de esta tarea La función Replace toma la serie, la subserie que debe sustituir y el elemento de sustitución como parámetros de tiempo de ejecución. La función devuelve la serie después de crear la sustitución. En el ejemplo siguiente se muestra cómo sustituir una subserie. MyString = "Esto es una prueba."; Substring1 = "es una"; Substring2 = "no es una"; MyString = Replace(MyString, Substring1, Substring2); Log(MyString); Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: Esto no es una prueba. Eliminación de una subserie de una serie Puede utilizar la función Recortar para recortar una subserie de una serie. Acerca de esta tarea La función Strip toma la serie y la subserie que desea eliminar como parámetros de tiempo de ejecución. Devuelve la serie después de que se haya eliminado la subserie. En los ejemplos siguientes se muestra cómo eliminar una subserie de una serie. MyString = "Esto no es una prueba."; Substring = " no"; MyString = Strip(MyString, Substring); Log(MyString); Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: Esto es una prueba. Eliminación de los espacios en blanco iniciales y finales de una serie Puede utilizar la función Recortar para recortar los espacios en blanco iniciales y finales de una serie. Capítulo 11. Gestión de series y matrices 137 Acerca de esta tarea La función Trim toma la serie como parámetro de tiempo de ejecución y la devuelve sin los espacios iniciales o finales. En el ejemplo siguiente se muestra cómo eliminar el espacio en blanco inicial y final de una serie. MyString = " Esto es una prueba. MyString = Trim(MyString); Log(MyString); "; Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: Esto es una prueba. Modificación de las mayúsculas/minúsculas de una serie Puede utilizar la función tolower para cambiar la serie a minúscula. También puede utilizar la función ToUpper para cambiar una serie a todo mayúsculas. Ejemplo En el ejemplo siguiente se muestra cómo convertir todos los caracteres de una serie a minúsculas. Log(ToLower("ESTO ES UNA PRUEBA."); Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: esto es una prueba . En el ejemplo siguiente se muestra cómo convertir todos los caracteres de una serie a mayúsculas. Log(ToUpper("esto es una prueba ."); Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: ESTO ES UNA PRUEBA. Cifrado y descifrado de series El lenguaje de política proporciona una característica que permite cifrar y descifrar series. Acerca de esta tarea Esta características es útil si desea gestionar datos de contraseña en una política de Netcool/Impact. Puede utilizar la función Cifrar para cifrar una serie. Esta función toma la serie como parámetro de tiempo de ejecución y devuelve una versión cifrada. En el ejemplo siguiente se muestra cómo cifrar una serie: MyString = Encrypt("contraseña"); Puede descifrar una serie que ha cifrado anteriormente utilizando la función Decrypt. Esta función toma una serie cifrada como un parámetro de tiempo de ejecución y devuelve la versión en texto sin formato. En el ejemplo siguiente se muestra cómo descifrar una serie. 138 Netcool/Impact: Guía de soluciones MyString = Decrypt("AB953E4925B39218F390AD2E9242E81A"); Gestión de matrices Puede utilizar el idioma de política Netcool/Impact para encontrar la longitud y los valores distintos de una matriz. Búsqueda de la longitud de una matriz Puede utilizar la función Distinct para encontrar el número de elementos en una matriz. Acerca de esta tarea La función Length toma la matriz como parámetro de tiempo de ejecución y devuelve su número de elementos. El ejemplo siguiente muestra cómo buscar el número de elementos de una matriz en IPL: Elements = Length({"One", "Two", "Three"}); Log(Elements); El ejemplo siguiente muestra cómo buscar el número de elementos de una matriz en JavaScript: Elements = Length(["One", "Two", "Three"]; Log(Elements); Cuando ejecute el ejemplo en cualquiera de los lenguajes, se imprimirá el mensaje siguiente en el registro de política: 3 Búsqueda de valores distintivos en una matriz Puede utilizar la función Distinto para encontrar valores distintos en una matriz. Acerca de esta tarea La función Distinct toma la matriz como parámetro de tiempo de ejecución y devuelve otra matriz que consta sólo de los elementos exclusivos, es decir, no duplicados. En el ejemplo siguiente se muestra cómo buscar los valores distintivos de una matriz: MyArray = {"One", "One", "Two", "Three", "Three", "Four"}; MyArray = Distinct(MyArray}; Log(MyArray); Al ejecutar este ejemplo, se imprime el siguiente mensaje en el registro de política: {One,Two,Three} Capítulo 11. Gestión de series y matrices 139 140 Netcool/Impact: Guía de soluciones Capítulo 12. Guía de aprendizaje de enriquecimiento de sucesos El objetivo de esta guía de aprendizaje es desarrollar una solución de enriquecimiento de sucesos para ampliar el valor de una instalación existente de Netcool/Impact. Esta solución automatiza tareas comunes realizadas manualmente por los operadores de red y ayuda a integrar datos empresariales relacionados con alertas en ObjectServer. Visión general de tutorial Esta guía de aprendizaje utiliza un entorno de ejemplo que proporciona la información preliminar para entender los diversos conceptos y tareas del enriquecimiento de sucesos. El entorno es un centro de operaciones de red de una gran empresa donde ésta ha instalado y configurado Netcool/OMNIbus y lo utiliza actualmente para gestionar dispositivos en su red. El entorno de ejemplo es una representación en escala reducida de lo que podría encontrar realmente en un centro de operaciones del mundo real. Contiene sólo los elementos de red y datos empresariales que requiere esta guía de aprendizaje. Esta guía de aprendizaje le conduce a través de los pasos siguientes: v Comprensión de la instalación de Netcool/Impact v Comprensión de los datos empresariales v Análisis del flujo de trabajo en el entorno v Creación de un proyecto v Configuración de un modelo de datos v v v v Configuración de servicios Escritura de una política de enriquecimiento de sucesos Configuración del lector de sucesos de OMNIbus para ejecutar la política Ejecución de toda la solución Comprensión de la instalación de Netcool/Impact El primer paso de esta guía de aprendizaje es comprender la instalación actual de Netcool. Normalmente, antes de empezar a desarrollar cualquier solución de Netcool, debe averiguar qué productos de la suite de Netcool ha instalado y qué dispositivos, sistemas o aplicaciones del entorno se supervisan. La instalación de Netcool en el entorno de ejemplo consta de Netcool/OMNIbus y de una colección de analizadores que supervisan dispositivos de la red. Esta instalación utiliza dos instancias de una base de datos del ObjectServer denominada NCOMS que se han configurado en una configuración de copia de © Copyright IBM Corp. 2006, 2014 141 seguridad/migración tras error. Estos ObjectServers se encuentran en sistemas host denominados NCO_HOST_01 y NCO_HOST_02 y se ejecutan en el puerto predeterminado de 4100. Los analizadores de esta instalación supervisan diversos dispositivos de red. Los detalles de los dispositivos no son importantes en este tutorial, pero cada analizador envía el conjunto básico de campos de alerta a la base de datos ObjectServer, incluidos los campos Nodo, Resumen, Gravedad, AlertKey e Identificador. Comprensión de los datos empresariales El paso siguiente de esta guía de aprendizaje es comprender la ubicación y estructura de los datos empresariales del entorno. En el entorno de ejemplo, la empresa utiliza instancias de la base de datos Oracle para almacenar información de inventario de red, información de servicio al cliente e información general de la organización sobre la empresa. La información que desea utilizar se almacena en dos bases de datos denominadas ORA_01 y ORA_02. ORA_01 es una base de datos de inventario de red que almacena información sobre los dispositivos de la red, incluyendo su especificación técnica, ubicaciones de los centros y números de bastidor. ORA_01 es un sistema denominado ORA_HOST_01. ORA_02 es una base de datos que contiene información sobre los diversos departamentos de la empresa. ORA_02 se encuentra en un sistema denominado ORA_HOST_02. Ambos se ejecutan en el puerto 1521. Análisis del flujo de trabajo Después de haber encontrado la ubicación y la estructura de los datos empresariales, el paso siguiente es analizar el flujo de trabajo de gestión de sucesos actual en el entorno. El entorno de trabajo de la guía de aprendizaje es un centro de operaciones de red. En este centro, una serie de operadores están de servicio en todo momento. Se sientan en un área de trabajo abierta y cada uno de ellos tiene acceso a una consola que visualiza una lista de sucesos de Netcool/OMNIbus. En grandes pantallas de proyector en una pared del centro de operaciones hay disponibles visualizaciones de mapas de gran tamaño que proporcionan vistas geográficas en del estado actual de la red. Conforme las alertas fluyen al ObjectServer desde los diversos analizadores y supervisores de Netcool instalados en el entorno, éstas aparecen en la lista de sucesos a disposición de los operadores. En función de la gravedad de las alertas, los operadores realizan manualmente una serie de tareas utilizando las herramientas de lista de sucesos, aplicaciones de terceros y herramientas típicas de oficina como teléfonos móviles y correo electrónico. Para esta guía de aprendizaje, asumimos que, entre otras tareas, los operadores realizan las acciones siguientes para cada alerta de gravedad. Los operadores: v Manualmente dan acuse de recibo de la alerta utilizando la lista de sucesos. v Utilizan una herramienta de base de datos interna de la empresa para buscar información sobre el dispositivo que causa la alerta. Esta herramienta ejecuta una consulta en la base de datos de inventario de red y devuelve las especificaciones técnicas, la ubicación y otra información. 142 Netcool/Impact: Guía de soluciones v Utilizan otra herramienta interna de la empresa para buscar el departamento empresarial al que da servicio el dispositivo que ha causado la alerta. v Si el departamento empresarial forma parte de una función crítica para la empresa, incrementan la gravedad de la alerta y la actualizan en la base de datos del ObjectServer. Los operadores pueden realizar otras acciones, como buscar administradores de servicio en la ubicación donde se encuentra el dispositivo y ponerse en contacto con ellos mediante teléfono o dispositivo buscapersonas. Después del problema que ha causado la alerta se haya solucionado, es posible que los operadores registren también la resolución en un registro de problemas y supriman la alerta del ObjectServer. Sin embargo, para esta guía de aprendizaje sólo se utiliza las tareas del flujo de trabajo que se muestran. Creación del proyecto Después de haber acabado de analizar el flujo de trabajo, el paso siguiente es crear un proyecto en la GUI de Tivoli Integrated Portal. Acerca de esta tarea Puede utilizar este proyecto para almacenar el modelo de datos, los servicios y las políticas utilizados en esta solución. El nombre de este proyecto es NCI_TUT_01. Procedimiento 1. Abra Tivoli Integrated Portal en un navegador web e inicie la sesión. 2. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos, pulse en uno de los enlaces, por ejemplo Modelo de datos, para ver las listas de selección de proyectos y clústeres en el separador Modelo de datos. 3. Seleccione un clúster de la lista Clúster. Desde la lista Proyecto, seleccione Global. 4. Pulse el icono Proyecto nuevo de la barra de herramientas para abrir la ventana Proyecto nuevo. 5. La ventana Proyecto nuevo se utiliza para configurar el proyecto nuevo. 6. En el campo Nombre de proyecto escriba NCI_TUT_01. 7. Pulse Aceptar y luego en Cerrar. Configuración del modelo de datos Después de haber creado un proyecto con esta guía de aprendizaje, el paso siguiente es configurar un modelo de datos de Netcool/Impact. Este modelo de datos consta de orígenes de sucesos, orígenes de datos y tipos de datos que requiere la solución de enriquecimiento de sucesos. También consta de un enlace dinámico utilizado para definir la relación entre los tipos de datos. Utilice la GUI Tivoli Integrated Portal para llevar a cabo todas las tareas en este paso. Para configurar el modelo de datos, debe realizar las tareas siguientes: v Crear el origen de sucesos v Crear los orígenes de datos Capítulo 12. Guía de aprendizaje de enriquecimiento de sucesos 143 v Crear los tipos de datos v Crear el enlace dinámico Creación del origen de sucesos La primera tarea de la configuración del modelo de datos es crear el origen de sucesos. Como se indicó al investigar los detalles de la instalación de Netcool, el entorno de ejemplo tiene un origen de sucesos, un ObjectServer denominado NCOMS. Acerca de esta tarea Debido a que desea conectarse a las alertas almacenadas en este ObjectServer, debe crear un origen de sucesos que la represente en Netcool/Impact. Un origen de sucesos es un tipo especial de origen de datos que Netcool/Impact puede utilizar para representar un origen de datos de sucesos físico del entorno. Debido a que el origen de datos de sucesos es una base de datos del ObjectServer, debe crear un origen de datos ObjectServer y configurarlo con la información de conexión que ha descubierto al investigar los detalles de la instalación de Netcool. Para crear el origen de sucesos: Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Seleccione un clúster de la lista Clúster. En la lista Proyectos, seleccione NCI_TUT_01. 3. Pulse el icono Origen de datos nuevo y seleccione ObjectServer en la lista. Se abre la ventana Origen de datos nuevo. 4. Especifique NCOMS en el campo Nombre de origen de datos. 5. Especifique el nombre y contraseña de un usuario del ObjectServer en los campos Nombre de usuario y Contraseña. 6. Escriba NCO_HOST_01 en el campo Nombre de host primario. 7. Especifique 4100 en el campo Puerto primario. 8. Pulse Probar conexión para probar la conexión del ObjectServer. 9. 10. 11. 12. Especifique NCO_HOST_02 en el campo Nombre de host de copia de seguridad. Especifique 4100 en el campo Puerto de copia de seguridad. Pulse Probar conexión para probar la conexión del ObjectServer. Pulse Aceptar. Creación de los orígenes de datos La tarea siguiente de la configuración del modelo de datos es crear los orígenes de datos. Acerca de esta tarea Como se le indicó al descubrir la ubicación y estructura de los datos empresariales en el entorno, los datos que desea utilizar en esta solución se encuentran en dos bases de datos Oracle denominadas ORA_01 y ORA_02. Debido a que desea acceder a estas bases de datos, debe crear un origen de datos que se corresponda a cada una de ellas. 144 Netcool/Impact: Guía de soluciones Para crear los orígenes de datos: Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Pulse el icono Origen de datos nuevo y seleccione Oracle en la lista. Se abre la ventana Origen de datos nuevo. 3. Especifique ORACLE_01 en el campo Nombre de origen de datos. 4. Especifique un nombre de usuario y contraseña de Oracle en los campos Nombre de usuario y Contraseña. 5. Escriba ORA_HOST_01 en el campo Nombre de host primario. 6. Especifique 1521 en el campo Puerto primario. 7. Especifique ORA_01 en el campo SID. 8. Pulse Probar conexión para probar la conexión del ObjectServer. 9. Pulse Aceptar. Resultados Repita estos pasos para crear otro origen de datos que se corresponda con la base de datos ORA_02. Nombre este origen de datos ORACLE_02. Creación de los tipos de datos La tarea siguiente de la configuración del modelo de datos es crear los tipos de datos. Acerca de esta tarea Como se le indicó al descubrir la ubicación y estructura de los datos empresariales en el entorno, los datos que desea utilizar están contenidos en dos tablas. La primera tabla se denomina Device y está ubicada en la base de datos ORA_01. Esta tabla contiene información sobre cada uno de los dispositivos de la red. Las columnas de la tabla incluyen Hostname, DeviceID, HardwareID, Facility y RackNumber. La segunda tabla se denomina Department y está ubicada en la base de datos ORA_02. Esta tabla contiene información sobre cada departamento funcional de la empresa. Las columnas de esta tabla incluyen DeptName, DeptID y Location. Debido a que desea acceder a los datos en ambas tablas, debe crear un tipo de datos para cada una de ellas. Nombre estos tipos de datos Dispositivo y Departamento. Para crear los tipos de datos: Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Seleccione ORACLE_01 en la lista de orígenes de datos. 3. Pulse el icono Tipo de datos nuevo. Capítulo 12. Guía de aprendizaje de enriquecimiento de sucesos 145 4. 5. 6. 7. 8. 9. 10. 11. Se abre una nueva ficha del Editor de tipo de datos. Especifique Dispositivo en el campo Nombre de tipo de datos. Seleccione ORACLE_01 en el menú desplegable Nombre de origen de datos. Asegúrese de que la casilla de verificación Habilitado está seleccionada. Se marca de forma predeterminada. Desplácese hacia abajo en el separador Editor de tipo de datos para que esté visible el área Descripción de tabla. Seleccione Dispositivo en la lista Tabla base. Pulse Renovar. Netcool/Impact consulta la base de datos Oracle y llena el navegador Descripción de tabla con los nombres de cada una de las columnas de la tabla Dispositivo. Especifique que el campo DeviceID es el campo de clave para el tipo de datos seleccionando la opción Key en la fila DeviceID. Seleccione Nombre de host en la lista Campo de nombre para mostrar. 12. Pulse Guardar en el separador Editor de tipo de datos. 13. Pulse Cerrar en el separador Editor de tipo de datos. Resultados Repita estos pasos para crear otro tipo de datos que se corresponda con la tabla Department de la base de datos ORA_02. Denomine a este tipo de datos Departamento. Creación de un enlace dinámico El paso siguiente es crear un enlace dinámico entre los tipos de datos Dispositivo y Departamento. Acerca de esta tarea Una propiedad de los datos empresariales que utiliza en esta solución es que hay una relación entre dispositivos del entorno y departamentos de la empresa. Todos los dispositivos que residen en un centro determinado dan servicio a los departamentos empresariales de la misma ubicación. Puede hacer que esta relación forme parte del modelo de datos creando un enlace dinámico entre los tipos de datos Dispositivo y Departamento. Después de crear el enlace dinámico, puede utilizar la función GetByLinks para atravesarlo en una política. En esta relación, Dispositivo es el tipo de datos de origen y Departamento es el tipo de datos de destino. Cuando crea el enlace entre los dos tipos de datos, puede definirlo utilizando la sintaxis siguiente: Location = ’%Facility%’ Este filtro indica a Netcool/Impact que los elementos de datos Dispositivo están enlazados con los elementos de datos Departamento si el valor del campo Location en Department es igual al valor del campo Facility en Device. Para crear el enlace de datos: 146 Netcool/Impact: Guía de soluciones Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. 2. Pulse el nombre del tipo de datos Dispositivo. Se abre un nuevo separador Editor de tipo de datos en el panel de trabajo principal de la GUI. Este editor visualiza información de configuración para el tipo de datos Dispositivo. 3. Seleccione el separador Enlaces dinámicos del editor. Se abrirá el área Enlaces desde este tipo de datos en el editor. 4. Pulse el botón Nuevo enlace por filtro para abrir la ventana Enlace por filtro. 5. Seleccione Departamento en la lista Tipo de datos de destino. 6. En el campo Filtro ..., especifique la serie de filtro que define la relación entre la lista Dispositivo y la lista Departamento. Como se ha indicado en la descripción de esta tarea más arriba, la serie de filtro es Location = ’%Facility%’. Esto indica que desea que los elementos de datos Dispositivo estén enlazados a los elementos de datos Departamento si el campo Location en Department es el mismo que el campo Facility en Device. 7. Pulse Aceptar. 8. Pulse el botón Guardar en el separador Editor de tipo de datos. 9. Pulse el botón Cerrar en el separador Editor de tipo de datos. Revisión del modelo de datos Después de haber creado los enlaces dinámicos, puede revisar el modelo de datos utilizando la GUI de Tivoli Integrated Portal para verificar que ha realizado todas las tareas correctamente. Acerca de esta tarea Puede revisar el modelo de datos abriendo los paneles de tarea Origen de datos y Tipo de datos del panel de navegación y asegurándose de que se visualizan el origen de sucesos, los orígenes de datos y los tipos de datos que ha creado. Configuración de servicios El paso siguiente de esta guía de aprendizaje es configurar el lector de sucesos de OMNIbus que requiere la solución. Creación del lector de sucesos El lector de sucesos de OMNIbus para esta solución debe comprobar el ObjectServer de NCOMS cada 3 segundos y recuperar los nuevos sucesos, si los hay. Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Servicios para abrir el separador Servicios. 2. Pulse el icono Crear servicio nuevo y seleccione Lector de OMNIbusEvent en la lista. 3. Especifique TUT_READER_01 en el campo Nombre de servicio. 4. Seleccione NCOMS en la lista Origen de datos. 5. Especifique 3000 en el campo Intervalo de sondeo. Capítulo 12. Guía de aprendizaje de enriquecimiento de sucesos 147 6. Seleccione la opción Inicio. Esta opción especifica si el servicio se inicia automáticamente al ejecutar Netcool/Impact. 7. Pulse Aceptar. Revisión de los servicios Después de haber creado el lector de sucesos, puede utilizar la GUI de Tivoli Integrated Portal para verificar que ha realizado todas las tareas correctamente. Acerca de esta tarea Para revisar el servicio que ha creado, pulse el panel de tarea Servicios del panel de navegación y asegúrese de que se visualice el lector de sucesos de OMNIbus TUT_READER_01. También puede comprobar el panel Estado de servicio para asegurarse de que aparece el lector de sucesos. Escritura de la política Después de haber configurado el servicio de lector de sucesos de OMNIbus, el paso siguiente es escribir la política para la solución. Esta política se denomina EnrichEvent y realiza automáticamente las tareas que ha descubierto al analizar el flujo de trabajo en el entorno. Puede utilizar la política EnrichEvent para completar las tareas siguientes: v Busca la información sobre el dispositivo que causa la alerta. v Busca los departamentos de la empresa a los que da servicio el dispositivo. v Si uno de los departamentos de la empresa forma parte de una función crítica de la empresa, la política aumenta la gravedad de la alerta a crítica. En esta sección se asume que ya sabe cómo crear, editar y guardar una política utilizando las herramientas de editor de políticas de la GUI de Tivoli Integrated Portal. Para obtener más información sobre estas herramientas, consulte la publicación Guía de la interfaz de usuario. Búsqueda de información de dispositivo La primera tarea que desea que realice la política es buscar información de dispositivo relacionada con la alerta en la base de datos de inventario de red. Acerca de esta tarea Concretamente, desea que la política recupere las especificaciones técnicas del dispositivo que causa la alerta, así como información sobre el recurso y el número de bastidor donde está ubicado el dispositivo. Para ello, la política debe realizar SELECT a nivel de base de datos en la tabla que contiene los datos de dispositivo y devolver aquellas filas que estén relacionadas con la alerta entrante. Si se considera desde la perspectiva del modelo de datos, la política debe obtener elementos de datos del tipo de datos Dispositivo cuando el valor del campo Nombre de host es el mismo que el valor del campo Nodo de la alerta. Para recuperar los elementos de datos, debe especificar el código siguiente en el separador del editor de políticas de Netcool/Impact: 148 Netcool/Impact: Guía de soluciones DataType = "Dispositivo"; Filter = "Nombre de host = ’" + @Node + "’"; CountOnly = False; MyDevices = GetByFilter(DataType, Filter, CountOnly); MyDevice = MyDevices[0]; If (Length(MyDevices) < 1) { Log("No se han encontrado dispositivos coincidentes."); } If (Length(MyDevices) > 1) { Log("Se ha encontrado más de un dispositivo coincidente."); } Aquí, GetByFilter recupera elementos de datos del tipo de datos Dispositivo donde el valor del campo Nombre de host es igual al valor del campo Node de la alerta entrante. Los elementos de datos se almacenan en una matriz denominada MyDevices. Aunque GetByFilter puede devolver más de un elemento de datos en la matriz, sólo se espera que la matriz contenga un elemento de datos en esta situación, ya que cada dispositivo de la base de datos tiene un Nombre de host exclusivo. El primer elemento de la matriz MyDevices se asigna a la variable MyDevice de forma que posteriormente se puede utilizar MyDevice como abreviatura en la política. Dado que desea recuperar sólo un elemento de datos del tipo de datos, la política también imprime mensajes de error en el registro de política si GetByFilter recupera menos de o más de una. Búsqueda de departamentos de la empresa La siguiente tarea que desea que realice la política es buscar los departamentos empresariales a los que da servicio el dispositivo que ha causado la alerta. Acerca de esta tarea Al configurar los modelos de datos para esta solución, ha creado un enlace dinámico. Este enlace ha definido la relación entre los dispositivos en el entorno y departamentos de la empresa. Para buscar los departamentos de la empresa a los que da servicio el dispositivo, la política debe tomar el elemento de datos que recuperó anteriormente del tipo de datos Dispositivo y atravesar los enlaces entre éste y el tipo de datos Departamento. Para recuperar los elementos de datos Departamento enlazados con el Dispositivo, especifique el texto siguiente en el editor de políticas debajo del código que ha especificado anteriormente: DataTypes = {"Departamento"}; Filter = NULL; MaxNum = 10000; MyDepts = GetByLinks(DataTypes, Filter, MaxNum, MyDevices); If (Length(MyDepts) < 1) { Log("No se han encontrado departamento enlazados."); } Aquí GetByLinks recupera hasta 10.000 elementos de datos Departamento enlazados con elementos de datos en la matriz MyDevices. Ya que está seguro de que la empresa tiene menos de 10.000 departamentos, puede utilizar un valor grande como este para asegurarse de que se devuelven todos los elementos de datos Departamento. Los elementos de datos devueltos se almacenan en la matriz MyDepts. Dado que desea como mínimo un elemento de datos del tipo de datos, la política imprime Capítulo 12. Guía de aprendizaje de enriquecimiento de sucesos 149 también un mensaje de error en el registro de política si GetByLinks no devuelve ninguno. Incremento de la gravedad de una alerta La tarea final que desea que realice la política es aumentar la gravedad de la alerta. Acerca de esta tarea Por ejemplo, si el departamento que resulta afectado tiene una función crítica en la empresa. Para esta guía de aprendizaje, los departamentos de la empresa cuya función es crítica para la empresa son las unidades del Centro de datos y de Proceso de transacciones. Para realizar esta tarea, la política tiene que iterar por cada uno de los elementos de datos Departamento recuperados del paso anterior. Para cada Departamento, debe probar el valor del campo Nombre con los nombres de los dos departamentos de la empresa que tienen una función crítica. Si el nombre Departamento corresponde a uno de los nombres de esos dos departamentos, la política debe aumentar la gravedad de la alerta a Crítica. Count = Length(MyDepts); While (Count > 0) { Index = Count - 1; MyDept = MyDepts[Index]; If (MyDept.Name == "Centro de datos" || MyDept.Name == "Proceso de transacciones") { @Severity = 5; } Count = Count - 1; } Aquí se utiliza un bucle While para iterar por los elementos de la matriz MyDepts. MyDepts es la matriz de elementos de datos Departamento devueltos anteriormente en la política mediante una llamada a GetByLinks. Antes de que se inicie el bucle While, el valor de la variable Count se establece en el número de elementos de la matriz MyDepts. Cada vez que se ejecuta el bucle, comprueba el valor de Count. Si Count es mayor que cero, las sentencias del bucle se ejecutarán. Si Count es inferior o igual a cero, las sentencias no se ejecutarán. Debido a que Count disminuye en una unidad cada vez que se realiza el bucle, el bucle While se ejecuta una vez para cada elemento de datos en MyDepts. Se utiliza una variable denominada Index para hacer referencia al elemento actual de la matriz. El valor de Index es el valor de Count menos uno, ya que las matrices de Netcool/Impact son estructuras basadas en cero cuyo primer elemento se cuenta como cero en lugar de uno. Dentro del bucle, la política utiliza una sentencia If para comprobar el nombre del Departamento actual en la matriz con el nombre de los dos departamentos críticos para la empresa. Si el nombre del Departamento actual coincide con los departamentos críticos para la empresa, la política establece el valor del campo Severity de la alerta en 5, lo que indica una gravedad crítica. 150 Netcool/Impact: Guía de soluciones Revisión de la política Después de haber acabado de escribir la política, puede revisarla para comprobar que sea precisa y que esté completa. Acerca de esta tarea En el ejemplo siguiente se muestra el texto completo de esta política. // Buscar información de dispositivo DataType = "Dispositivo"; Filter = "Nombre de host = ’" + @Node + "’"; CountOnly = False; MyDevices = GetByFilter(DataType, Filter, CountOnly); MyDevice = MyDevices[0]; If (Length(MyDevices) < 1) { Log("No se han encontrado dispositivos coincidentes."); } // Buscar departamentos de la empresa DataTypes = {"Departamento"}; Filter = NULL; MaxNum = 10000; MyDepts = GetByLinks(DataTypes, Filter, MaxNum, MyDevices); If (Length(MyDepts) < 1) { Log("No se han encontrado departamento enlazados."); } // Si el departamento es crítico para la empresa, actualice la gravedad de la alerta Count = Length(MyDepts); While (Count > 0) { Index = Count - 1; MyDept = MyDepts[Index]; If (MyDept.Name == "Centro de datos" || MyDept.Name == "Proceso de transacciones") { @Severity = 5; } Count = Count - 1; } Ejecución de la solución El paso final de esta guía de aprendizaje es ejecutar la solución de enriquecimiento de sucesos. Antes de empezar Antes de ejecutar la solución, debe configurar el servicio de lector de sucesos TUT_READER_01 OMNIbus para que desencadene la política EnrichEvent. Para configurar TUT_READER_01: 1. Abra Netcool/Impact y seleccione Configuración del sistema > Automatización de sucesos > Servicios 2. Seleccione el servicio TUT_READER_01 y pulse Editar. 3. Pulse la pestaña Correlación de sucesos. 4. Para crear una correlación, pulse el botón Nueva correlación. Capítulo 12. Guía de aprendizaje de enriquecimiento de sucesos 151 5. Si desea desencadenar la política enrichevent para todos sucesos, deje el campo Expresión de filtro vacío. Si desea desencadenar la política EnrichEvent para sucesos específicos, especifique los valores para estos sucesos. 6. 7. 8. 9. Seleccione EnrichEvent en el campo Política que debe ejecutarse. Pulse la casilla de verificación Activo. Para guardar la configuración, pulse Aceptar. Para guardar los cambios en el servicio TUT_READER_01, pulse el icono de almacenamiento. Procedimiento Para iniciar la solución, inicie simplemente el servicio de lector de sucesos de OMNIbus. A continuación, el lector de sucesos empieza a supervisar el ObjectServer y recupera los nuevos sucesos que aparecen. Cuando aparece un nuevo suceso, el lector de sucesos lo devuelve a Netcool/Impact, donde se procesa ejecutando la política EnrichEvent. 152 Netcool/Impact: Guía de soluciones Capítulo 13. Configurar la política de Impact PasstoTBSM En este escenario configurará la política de Impact PasstoTBSM. Creará y configurará una política de Impact, y creará un modelo de servicio de TBSM para recibir los datos. Creará un portlet personalizado para ver los datos. Cuando haya creado el portlet personalizado creará una página de forma libre para mostrar los datos. Resultado esperado Cuando haya completado este escenario tendrá una página personalizada de forma libre que mostrará datos en TBSM, reunidos desde una política de Impact. Visión general La función PasstoTBSM se utiliza para enviar información de sucesos de Netcool/Impact a TBSM. Netcool/Impact utiliza la función PasstoTBSM para enviar información de sucesos a TBSM. En una política Impact puede añadir la función PassToTBSM a la política. Cuando activa la política utilizando un servicio Netcool/Impact, la información de sucesos se envía a TBSM. En TBSM puede configurar manualmente una Regla de estado entrante para que busque sucesos procedentes de Netcool/Impact. El menú de la lista Canal de datos muestra el servicio Netcool/Impact utilizado par ejecutar la política que contiene la función PasstoTBSM. Para mostrar los campos disponibles para el servicio Netcool/Impact seleccionado debe personalizar manualmente los nombres de campo de la ventana Personalizar campos para que coincidan con los campos de la política. También puede utilizar la característica PasstoTBSM para transferir información de sucesos desde un clúster de Netcool/Impact remoto hasta TBSM. Para ello se necesita realizar alguna configuración adicional. Configuración Puede utilizar la función PassToTBSM tanto en la instalación local como en la remota. La sintaxis para PassToTBSM es la misma que para una política que se ejecuta en un servidor TBSM. Para una instalación remota deben completarse las tareas siguientes: v El servidor TBSM debe compartir un servidor de nombre en clústeres con el Servidor Impact remoto Netcool/Impact en la lista Canal de datos de la ventana Editar regla de estado entrante. v En TBSM un usuario de administración configura impact.sla.remoteimpactcluster=<nombre de clúster del servidor Impact remoto> en etc/TBSM_sla.props en el servidor TBSM. v En Netcool/Impact, un usuario administrador exporta el proyecto For ImpactMigration de TBSM y lo importa a la versión remota de Netcool/Impact. Netcool/Impact necesita el proyecto For ImpactMigration para acceder a los orígenes de datos y los tipos de datos de TBSM. © Copyright IBM Corp. 2006, 2014 153 Para llamar la función PassToTBSM desde un Servidor Impact remoto, el clúster Netcool/Impactnecesita el tipo de datos ImpactEvents. El tipo de datos ImpactEvents apunta a la tabla ImpactEvents de la base de datos DB2 que TBSM utiliza. Este tipo de datos utiliza un origen de datos llamado TBSMDatabase. El origen de datos TBSMDatabase y el tipo de datos ImpactEvents pertenecen al proyecto llamado ForImpactMigration en el servidor TBSM. Puede exportar este proyecto desde el servidor TBSM e importarlo al Servidor Impact remoto para proporcionar a Servidor Impact los orígenes de datos y los tipos de datos necesarios desde TBSM. Exportación e importación del proyecto ForImpactMigration Para llamar la función PassToTBSM desde el servidor Impact remoto, el servidor Impact remoto necesita importar el proyecto ForImpactMigration y su contenido desde TBSM. Antes de empezar El proyecto ForImpactMigration aparece en la lista Proyectos de la versión de Impact que está dentro de TBSM. El proyecto ForImpactMigration tiene los orígenes de datos y los tipos de datos necesarios para que el servidor Impact remoto envíe sucesos utilizando PassToTBSM. Para enviar sucesos a TBSM desde un servidor Impact remoto, un usuario administrador necesita importar el proyecto ForImpactMigration desde el servidor TBSM e importarlo a su servidor Impact. Acerca de esta tarea Antes se completan la exportación y la importación al servidor Impact. Utilice el botón Desbloquear todo de la barra de herramientas Proyectos globales para desbloquear los elementos bloqueados y comprobar si el archivo etc/<nombre_instancia>_versioncontrol.locks tiene elementos bloqueados antes de completar los pasos de importación y exportación. Procedimiento 1. En la instancia de servidor TBSM, ejecute el mandato de nci export. <DIR_INSTAL>/tbsm/bin/nci_export TBSM --project ForMigration <dir exportado> 2. Copie el directorio exportado al servidor Impact remoto o a una ubicación en la que el servidor Impact pueda acceder al directorio. 3. En la instancia de servidor Impact, ejecute el mandato nci import. <DIR_INSTAL>/impact/bin/nci_import NCI <dir exportado> para importar ForImpactMigration al servidor Impact remoto. Creación de una política Un ejemplo de política que utilizar para PassToTBSM con el asistente de servicios web para crear la política. Acerca de esta tarea El rol de esta política consiste en supervisar un servicio web que proporciona datos sobre el clima, sobre temperatura y humedad de una ciudad concreta. En este ejemplo creará la política utilizando la opción de servicios web del asistente de políticas. 154 Netcool/Impact: Guía de soluciones Procedimiento 1. En el separador Políticas, seleccione la flecha situada junto al icono Política nueva. Seleccione Utilizar asistente > Servicios Web para abrir la ventana Invocar servicio web-Introducción. 2. En la ventana Invocar servicio web-Introducción, escriba el nombre de la política en el campo Nombre de política, por ejemplo Tiempo y escriba Siguiente. 3. En la ventana Invocación de servicio web-Archivo WSDL y módulo de cliente, en el campo URL o vía de acceso de WSDL, escriba el URL o una vía de acceso para el archivo WSDL de destino. Por ejemplo http://wsf.cdyne.com/ WeatherWS/Weather.asmx?wsdl. En las instancias en las que el servidor GUI está instalado separado de Servidor Impact, la vía de acceso de archivos para el archivo WSDL hace referencia al sistema de archivos Servidor Impact, no el sistema de archivos del servidor GUI. Si especifica un URL para el archivo WSDL, ese URL debe ser accesible al host de Servidor Impact y al host del servidor GUI. 4. En el área Módulo de cliente, seleccione Proporcionar un nombre de paquete para el módulo de cliente nuevo. 5. Entre un nombre para el paquete, por ejemplo getWeatherInfoPkg. Pulse Siguiente. 6. En la ventana Invocación del nombre de servicio-Nombre del servicio web, Puerto y método, la información general del servicio web se rellena previamente para los elementos siguientes; Servicio web Weather, Tipo de puerto de servicio web WeatherSoap y Método de servicio web. Seleccione la opción que desee de la lista, por ejemplo GetCityWeatherByZIP. Pulse Siguiente. 7. En la ventana Invocación de servicio web- Parámetros del método de servicio web, escriba los parámetros necesarios por el método de servicio web de destino. Por ejemplo, escriba el nombre, el código postal de la ciudad para la que desee obtener información del tiempo. Pulse Siguiente. Cuando el asistente se completa, crea una política que obtiene información del tiempo del sitio web seleccionado para la ciudad especificada. 8. En la ventana Invocación de servicio web-parámetros de Método de servicio web, puede editar opcionalmente URL o vía de acceso de WSDL seleccionando el recuadro de selección de edición. Para habilitar la seguridad del servicio web, marque el recuadro de selección Habilitar seguridad de servicio web. Seleccione uno de los tipos de autenticación siguientes: v Autenticación de nombre de usuario HTTP v Autenticación de nombre de usuario de mensaje SOAP Añada el Nombre de usuario y Contraseña. Pulse Siguiente. 9. Aparece la ventana Invocación del servicio web-Resumen y Finalizar. Muestra detalles sobre la política. Pulse Finalizar para crear la política. Cuando se completa el asistente, genera el contenido de la política. Puede ejecutar la política de la manera habitual y verificar los resultados en el registrador de políticas. 10. Para extraer los datos de la política y enviarlos a TBSM. Debe editar manualmente la política y añadir las líneas siguientes a la política. PassToTBSM(ec); Importante: Esta política utiliza un objeto NewEvent para pasar los datos. Si crea un objeto para enviar los datos de sucesos a PassToTBSM, utilice NewEvent, no NewObject. Si su política es controlada por un lector o sucesos o Capítulo 13. Configurar la política de Impact PasstoTBSM 155 por una escucha de sucesos, el objeto EventContainer se puede enviar directamente a PassToTBSM. Un servicio PolicyActivator no pasa ningún objeto de sucesos a su política, así que deberá crear un NewEvent("EventSourceName") incluido el nombre del servicio que apunte al origen de sucesos desde el que se leen y envían sucesos. Por ejemplo, MyEvent = NewEvent("DefaultPolicyActivator"); Ejemplo de la política de servicios web generada por el asistente de servicios web. //Esta política generada por el asistente de Impact. //Esta política se basa en un archivo wsdl en http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl log("Iniciar política ’getWeather’..."); //Especifique el nombre de paquete tal como se ha definido al compilar WSDL en Impact WSSetDefaultPKGName(’getWeatherInfoPkg’); //Especificar parámetros GetCityWeatherByZIPDocument=WSNewObject ("com.cdyne.ws.weatherws.GetCityWeatherByZIPDocument"); _GetCityWeatherByZIP=WSNewSubObject (GetCityWeatherByZIPDocument,"GetCityWeatherByZIP"); _ZIP = ’27513’; _GetCityWeatherByZIP[’ZIP’] = _ZIP; WSParams = {GetCityWeatherByZIPDocument}; //Especifique un nombre de servicio web, un punto final y un método WSService = ’Weather’; WSEndPoint = ’http://wsf.cdyne.com/WeatherWS/Weather.asmx’; WSMethod = ’getCityWeatherByZIP’; log("Se va a invocar la llamada de servicio web GetCityWeatherByZIP ......"); WSInvokeDLResult = WSInvokeDL(WSService, WSEndPoint, WSMethod, WSParams); log("Resultado devuelto de la llamada de servicio web GetCityWeatherByZIP: " +WSInvokeDLResult); //Añadido para PasstoTBSM city = WSInvokeDLResult.GetCityWeatherByZIPResponse. GetCityWeatherByZIPResult.City; temperature=WSInvokeDLResult.GetCityWeatherByZIPResponse. GetCityWeatherByZIPResult.Temperature; humidity=WSInvokeDLResult.GetCityWeatherByZIPResponse. GetCityWeatherByZIPResult.RelativeHumidity; ec = NewEvent("WeatherActivator"); // Utilizando un activador de políticas llamado WeatherActivator ec.city=city; ec.temperature=temperature; ec.humidity=humidity; log(" City : " + ec.city + " " + ec.humidity); Temp : " + ec.temperature + " Humid : PassToTBSM(ec); Creación de un servicio activador de políticas Cree el servicio activador de políticas para llamar a una política, y obtener actualizaciones y pasar las actualizaciones a TBSM. 156 Netcool/Impact: Guía de soluciones Procedimiento 1. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos y pulse Servicios para abrir el separador Servicios. 2. En el separador Servicios, pulse el icono Crear servicio nuevo. 3. En el menú, seleccione una plantilla para el servicio que desee crear. En esta instancia, seleccione Activador de políticas. 4. Añada el Nombre de servicio por ejemplo WeatherActivator, el Intervalo de activación en segundos, por ejemplo 300, y seleccione la política Weather que ha creado previamente en la lista Política. 5. Inicio: Automáticamente al iniciarse el servidor Seleccione el recuadro de selección para iniciar automáticamente el servicio cuando se inicia el servidor. También puede iniciar y detener el servicio desde la GUI. 6. Registro de servicio: Escribir en archivo Seleccione el recuadro de selección para escribir la información de registro en un archivo. 7. Pulse el icono Guardar servicio. 8. Inicie el servicio. Crear una plantilla y regla nueva para reunir datos sobre el clima En este tema creará una estructura de servicios para organizar los datos climáticos por ciudad. Creará una plantilla de servicios regionales y una regla de agregación que dependa de la plantilla de servicios de la ciudad. Acerca de esta tarea Para crear la estructura de servicios: Procedimiento 1. Desde el menú desplegable Navegación de servicios, seleccione Plantillas. 2. Pulse el botón Crear plantilla nueva. Se abre el separador Editar plantilla en el Editor de servicios. 3. Escriba CityWeather en el campo Nombre de la plantilla. 4. Escriba Datos del tiempo por ciudad en el campo Descripción. 5. En el separador Reglas, después de Hijos, pulse el botón Crear regla de estados entrantes. 6. Seleccione el botón de selección Basado en un valor numérico y pulse el botón Aceptar. Se abrirá la ventana de edición de reglas de estados entrantes. 7. Escriba CityTemperature en el campo Nombre de regla. 8. Seleccione WeatherActivator en la lista desplegable Canal de datos. 9. Pulse el botón Personalizar campos. Se abre la ventana Campos personalizados. 10. Asegúrese de que los valores para los campos se basen en la tabla de correspondencias siguiente: Tabla 26. Nombres y tipos de campos predeterminados Nombre de campo Tipo de campo EventClass Serie EventType Serie ResourceName Serie Capítulo 13. Configurar la política de Impact PasstoTBSM 157 Tabla 26. Nombres y tipos de campos predeterminados (continuación) Nombre de campo Tipo de campo SecondaryResourceName Serie Summary Serie Value1 Flotante Value2 Flotante Value3 Flotante 11. Añada los campos siguientes: Tabla 27. Campos y tipos personalizados nuevos Nombre de campo Tipo de campo city Serie temperature Flotante humidity Flotante 12. Pulse Aceptar. 13. Escriba los valores siguientes para el rol de estado entrante con la tabla siguiente como guía. Tabla 28. Valores para la regla CityTemperature Campos de entrada Valor Nombre de instancia city Expresión temperature < Seleccione el recuadro de selección Status. Marginal 80 Malo 95 Seleccione el recuadro de selección Almacenar datos para esta regla para TWA. 14. Pulse Aceptar. La regla CityTemperature aparece en el separador Reglas. 15. Puede repetir los mismos pasos para crear una regla de estado entrante CityHumidity para recopilar datos de humedad del canal de datos WeatherActivator. Seleccione humidity como valor de salida y elija valores entre 0 y 100 para los umbrales de estado. 16. Para guardar la regla, pulse el botón Guardar de la barra de herramientas Editar plantilla. Crear la regla CityHumidity para la plantilla CityWeather En este tema creará una regla para reunir datos para la plantilla. Procedimiento 1. Desde el menú desplegable Navegación de servicios, seleccione Plantillas. 2. Si no está ya abierto, pulse el separador Editar plantilla 'CityWeather'. 3. Pulse el botón Regla de estado entrante para abrir la ventana Editar tipo de regla de estado entrante. 158 Netcool/Impact: Guía de soluciones Figura 5. Botón Regla de estado entrante 4. Seleccione el botón de selección Basado en un umbral bueno, marginal y malo y pulse el botón Aceptar. Se abre la ventana Crear regla de estado entrante. 5. Escriba CityHumidity en el campo Nombre de regla. 6. Seleccione weatherActivator en la lista desplegable Canal de datos. 7. Pulse el botón Personalizar campos. Se abre la ventana Campos personalizados. 8. Asegúrese de que los valores para los campos se basen en la tabla de correspondencias siguiente: Tabla 29. Nombres y tipos de campos predeterminados Nombre de campo Tipo de campo EventClass Serie EventType Serie ResourceName Serie SecondaryResourceName Serie Summary Serie Value1 Flotante Value2 Flotante Value3 Flotante 9. Añada los campos siguientes: Tabla 30. Campos y tipos personalizados nuevos Nombre de campo Tipo de campo City Serie Temperature Flotante Humidity Flotante 10. Pulse Aceptar. 11. Escriba los valores siguientes para el rol de estado entrante con la tabla siguiente como guía. Tabla 31. Valores para la regla CityTemperature Campos de entrada Valor Nombre de instancia City Expression Humidity < Seleccione el recuadro de selección Status. Marginal 60 Malo 85 Seleccione el recuadro de selección Almacenar datos para esta regla para TWA. 12. Pulse el botón Aceptar. Capítulo 13. Configurar la política de Impact PasstoTBSM 159 13. Pulse el botón Guardar en el separador el separador Editar plantilla 'CityWeather'. Nota: La regla no se guardará en la base de datos TBSM hasta que pulse el botón Guardar. La regla CityHumidity aparece en el separador Reglas. Qué hacer a continuación Siguiente: Crear el servicio a mano. En este tema se crea un servicio para el tiempo de la ciudad. Crear un servicio city En este tema creará un servicio. Acerca de esta tarea Para crear un servicio denominado Cary, realice los pasos siguientes: Procedimiento 1. Desde el menú desplegable Navegación de servicios, seleccione Servicios. 2. Pulse el botón Crear servicio nuevo. 3. 4. 5. 6. 7. 8. Se abre el separador Editar servicio en el Editor de servicios. En el campo Nombre de servicio escriba Cary. En el separador Plantillas, pulse la plantilla CityWeather de la lista Plantillas disponibles y pulse el botón >>. La plantilla CityWeather se mueve a la lista Plantillas seleccionadas. Pulse el botón Guardar de la barra de herramientas del separador Editar servicio. El portlet Navegación de servicios muestra el nuevo servicio en el árbol Servicios. Para tener un árbol de servicios personalizados con sólo las ciudades que contienen información del tiempo, cree otro servicio (por ejemplo Weather) y haga que Cary sea dependiente del mismo. Cree una nueva plantilla de árbol CityWeather, añadiendo las columnas Temperature y Humidity para la plantilla CityWeather. Asocie las nuevas columnas a @CityTemperature y @CityHumidity, respectivamente. Para obtener información sobre cómo crear árboles personalizados, consulte Guía de configuración de servicios > Árboles de servicios personalizados. Resultados Siguiente: Personalizar un portlet de árbol de servicios Cuando haya creado el servicio, puede personalizar el portlet de Árbol de servicios para mostrar sólo la información de tiempo de City. Personalizar un portlet del árbol de servicios En este tema creará un portlet del árbol de servicios personalizado. 160 Netcool/Impact: Guía de soluciones Procedimiento 1. Pulse Valores –> Portlets del panel de navegación. Aparece una lista de todos los nodos de navegación de la consola, agrupados del mismo modo que en la navegación de la consola. La página incluye todos los portlets que puede elegir personalizar. 2. Pulse Nuevo. Se abre la página de bienvenida del asistente de creación de widgets. Pulse Siguiente. Se abre la página siguiente con el título Seleccionar un widget de base. 3. Seleccione el portlet Servicios. Pulse Siguiente. 4. En la página General, escriba Weather by City en el campo Nombre. 5. Desplácese por las opciones de iconos de miniaturas del portlet y elija uno según la figura siguiente. 6. Elija la imagen de descripción del nuevo portlet tal como se muestra en la figura siguiente: 7. Seleccione TBSM y pulse el botón Añadir > para añadir el nuevo portlet al catálogo TBSM. 8. 9. 10. 11. Pulse Siguiente. Se abre la página Seguridad. En la página Seguridad, seleccione Usuario en la lista Roles seleccionados. Pulse Añadir para ver una lista de roles que pueden acceder a esta página. Seleccione estos roles de la lista de roles disponibles: v tbsmReadOnlyUser v tbsmAdminUser v 12. Seleccione Usuario en la lista desplegable Roles seleccionados para ver los niveles de acceso de los usuarios. Pulse Añadir. 13. En la lista de roles disponibles, seleccione tbsmAdminUser, seleccione Usuario privilegiado de la lista desplegable Roles seleccionados para ver los niveles de acceso de los usuarios. 14. Pulse Añadir. 15. Pulse Siguiente Se abre la sección Personalizar. 16. En la página General, especifique Weather by City como título del portlet. 17. Pulse Siguiente. Se abre la página Contexto. Seleccione Weather como instancia de inicio. 18. Pulse Siguiente. Se abre la página Vista. 19. En la lista desplegable Plantilla de árbol, seleccione CityWeather. Mantenga los valores desplegables para los otros campos. 20. Pulse Siguiente. Aparece la página Resumen. 21. Pulse Finalizar. 22. Verifique que aparezca el nuevo portlet en Valores –> Portlets. Capítulo 13. Configurar la política de Impact PasstoTBSM 161 Resultados Siguiente: Añadir un portlet de servicios personalizados a una página de de formato libre Cuando haya personalizado un portlet del árbol de servicios, podrá añadirlo a una página nueva. Añadir un portlet de servicios personalizados a una página de forma libre En este tema puede añadir un árbol de servicios personalizado a una nueva página de forma libre. Antes de empezar Para crear una página personalizada necesita privilegios de administrador en TBSM. Acerca de esta tarea Para crear una página personalizada complete los pasos siguientes: Procedimiento 1. Pulse Valores –> Páginas del panel de navegación. Aparece una lista de todos los nodos de navegación de la consola, agrupados del mismo modo que en la navegación de la consola. 2. Pulse Página nueva. Se inicia una nueva página de título Valores de página. 3. Escriba Servicio del tiempo en el campo Nombre de página. 4. En el campo Ubicación de página, pulse Ubicación para navegar y buscar la ubicación que desee para su página. console/Availability/. Este valor especifica que la página aparecerá en Disponibilidad en la lista de tareas de la consola. Mantenga los valores desplegables para los otros campos. 5. En el campo Ubicación de página, pulse Ubicación para navegar hacia donde aparecerá la página nueva en la lista de tareas de la consola. Arrastre la nueva página hasta la carpeta Disponibilidad. Esta página es para usuarios de sólo lectura que no necesitarán editar servicios. Como resultado, se añade la página al grupo Disponibilidad. El campo Ubicación se actualiza con console/Availability/. Mantenga los valores desplegables para los otros campos. 6. Pulse Aceptar. 7. Seleccione la opción Forma libre de Diseño de página. 8. Expanda Valor opcional para añadir acceso de roles a esta página. 9. Seleccione Usuario en la lista Roles seleccionados. 10. Pulse Añadir para ver una lista de roles que pueden acceder a esta página. 11. Seleccione estos roles de la lista de roles disponibles: v tbsmReadOnlyUser v tbsmAdminUser v 12. Pulse Añadir. 162 Netcool/Impact: Guía de soluciones 13. Para tbsmReadOnlyUser, seleccione Usuario en la lista desplegable Nivel de acceso. 14. Para tbsmAdminUser, seleccione Usuario privilegiado en la lista Roles seleccionados. 15. Pulse Aceptar. Aparece la paleta de portlets, que se utiliza para seleccionar el contenido de los portlets. 16. Seleccione la carpeta Todo. 17. Utilice las flechas de la parte inferior de la paleta de Portlet para buscar y seleccionar el portlet Weather by City. 18. Arrastre el portlet City Weather Tree al espacio vacío situado bajo la paleta de portlets. --> Weather by City 19. Arrastre un Time Window Analyzer y póngalo bajo Weather by City. 20. En Time Window Analyzer, pulse Añadir servicio. 21. Busque Cary y pulse en él. Puede editar las preferencias compartidas para que Cary se convierta en el servicio predeterminado para el portlet Time Window Analyzer. 22. Pulse Editar opciones > Máscara para personalizar el aspecto de su portlet. La opción Máscara controla el aspecto del borde del portlet. 23. Pulse Terminado. Se abrirá la nueva página. Nota: Después de pulsar en Terminado ya no podrá cambiar u organizar sus portlets. 24. Cierre y vuelva a abrir la sesión como usuario OSManager1 para comprobar que el nuevo usuario pueda ver la página. Capítulo 13. Configurar la política de Impact PasstoTBSM 163 164 Netcool/Impact: Guía de soluciones Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario Puede utilizar Proveedor de datos de interfaz de usuario en Netcool/Impact para proporcionar datos a clientes compatibles con Proveedor de datos de interfaz de usuario . Integración con Netcool/Impact Proveedor de datos de interfaz de usuario accede a datos de orígenes de datos, tipos de datos y políticas en Netcool/Impact. La consola es un componente de Jazz for Service Management. llamado IBM Dashboard Application Services Hub. Jazz for Service Management se empaqueta con Netcool/Impact. En esta publicación, nos referiremos a IBM Dashboard Application Services Hub como la consola. Puede utilizar Proveedor de datos de interfaz de usuario para visualizar datos de Netcool/Impact en la consola. Puede utilizar la consola para crear sus propios widgets o bien puede utilizar uno de los paneles de instrumentos de autoservicio personalizables. Jazz for Service Management Proveedor de datos de interfaz de usuario requiere Netcool/Impact 6.1.1 o superior. Proveedor de datos de interfaz de usuario también requiere Jazz for Service Management, que está disponible para su descarga en la misma página web que Netcool/Impact 6.1.1. Puede utilizar el instalador proporcionado con Jazz for Service Management para instalarlo por separado. Recomendamos que instale Netcool/Impact y Jazz for Service Management en servidores distintos. Si no instala Netcool/Impact y Jazz for Service Management en el mismo servidor, debe cambiar los números de puerto predeterminados para evitar conflictos entre las versiones de Tivoli Integrated Portal 2.2.x.x utilizadas por el Servidor GUI e IBM Dashboard Application Services Hub, al que se hace referencia como la consola en esta documentación. Por ejemplo, un Servidor GUI con Tivoli Integrated Portal instalado utiliza el puerto 16310 como el puerto predeterminado. Los paneles de instrumentos de la consola en Jazz for Service Management utilizan el mismo puerto. En este caso, debe cambiar el puerto utilizado por los paneles de instrumentos de la consola en Jazz for Service Management, por ejemplo, a 18310. Para obtener más información sobre Jazz for Service Management, consulte http://pic.dhe.ibm.com/infocenter/tivihelp/v3r1/topic/com.ibm.psc.doc_1.1.0/ psc_ic-homepage.html Iniciación a Proveedor de datos de interfaz de usuario Para poder utilizar Netcool/ImpactProveedor de datos de interfaz de usuario , debe completar los requisitos previos. © Copyright IBM Corp. 2006, 2014 165 Requisitos previos Para utilizar Proveedor de datos de interfaz de usuario , debe asegurarse primero de que estén instalados los componentes correctos. Debe configurar la autorización de usuario. Finalmente, debe crear el origen de datos y los tipos de datos o la política que desea utilizar para proporcionar datos a Proveedor de datos de interfaz de usuario . Visualización de datos en la consola Para visualizar datos en la consola, debe completar las tareas siguientes: 1. Cree la conexión remota entre Proveedor de datos de interfaz de usuario y la consola. 2. Cree el modelo de datos o política que proporciona los datos de Netcool/Impact. 3. Cree una página en la consola. 4. Cree un widget en la página en la consola. Componentes de Proveedor de datos de interfaz de usuario Para utilizar Proveedor de datos de interfaz de usuario , debe asegurarse de tener instalados todos los componentes necesarios. Componentes necesarios de Jazz for Service Management Para utilizar Proveedor de datos de interfaz de usuario , debe instalar primero el componente IBM Dashboard Application Services Hub (la consola) de Jazz for Service Management. Si desea utilizar los widgets de paneles de instrumentos de autoservicio de Netcool/Impact, debe instalar los widgets de paneles de instrumentos de autoservicio en Dashboard Application Services Hub Server. Para obtener más información, consulte “Instalación de widgets de paneles de instrumentos de autoservicio de Netcool/Impact” en la página 209. Descripción general de los componentes El gráfico siguiente describe los componentes necesarios para utilizar Proveedor de datos de interfaz de usuario . 166 Netcool/Impact: Guía de soluciones El entorno del sistema se compone de un Servidor GUI o un Servidor Impact, un servidor secundario o un servidor primario en un entorno en clúster, y un servidor de panel de instrumentos personalizado. Netcool/Impact 6.1.1 está instalado en Servidor GUI, el Servidor Impact principal y el Servidor Impact secundario. Servidor GUI es instala como parte de Tivoli Integrated Portal (TIP) 2.2.x.x. El servidor de panel de instrumentos personalizado utiliza los widgets que se crean en TIP 3.1 para conectar al Servidor GUI. El panel de instrumentos personalizado utiliza el componente Servicios de registro que proporciona Jazz for Service Management para conectar a una base de datos DB2. Para obtener más información sobre el componente Servicios de registro, consulte http://pic.dhe.ibm.com/infocenter/tivihelp/v3r1/topic/com.ibm.psc.doc_1.1.0/ psc_ic-homepage.html. El servidor de panel de instrumentos personalizado ejecuta Tivoli Integrated Portal (TIP) 3.1, a diferencia de los otros servidores que ejecutan Tivoli Integrated Portal (TIP) 2.2.x.x. Esto se debe a que sólo puede crear los widgets que facilitan la integración en Tivoli Integrated Portal (TIP) 3.1. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 167 Configuración de la autenticación de usuario Para utilizar Proveedor de datos de interfaz de usuario , debe asignar primero uno de los roles siguientes. Acerca de esta tarea La autenticación de usuario la controla el rol impactUIDataProviderUser. Este rol se administra en el perfil de Tivoli Integrated Portal. Procedimiento Debe asignar uno de los roles siguientes a los usuarios para habilitar el acceso a Proveedor de datos de interfaz de usuario : v iscadmins v impactAdminUser v impactFullAccessUser v impactUIDataProviderUser Para obtener más información sobre este rol, consulte la información sobre el rol impactUIDataProviderUser en la sección sobre la utilización de roles de la Guía de la interfaz de usuario. Tipos de datos y Proveedor de datos de interfaz de usuario Para asegurarse de que el tipo de datos puede enviar datos a Proveedor de datos de interfaz de usuario , debe asegurarse de que existen los valores siguientes. Los tipos de datos SNMP e internos requieren valores adicionales. Al crear un tipo de datos, debe considerar los valores siguientes: v Para todos los tipos de datos, excepto el tipo de datos interno, debe seleccionar también el recuadro de selección Campo de clave para el campo de clave. El campo clave identifica la exclusividad de los datos que muestra el widget en la consola. v Debe habilitar el tipo de datos de forma que pueda enviar datos a Proveedor de datos de interfaz de usuario . Para asegurarse de que Proveedor de datos de interfaz de usuario puede acceder al tipo de datos, abra el editor de tipo de datos y seleccione el recuadro de selección Acceder a los datos mediante el proveedor de datos de la interfaz de usuario: habilitado. Una vez que se renueve el modelo de datos, el tipo de datos estará disponible como origen de proveedor de datos. La velocidad de renovación predeterminada es 5 minutos. Sin embargo, este valor se puede cambiar. Para obtener más información sobre cómo cambiar la velocidad de renovación, consulte “Personalización de Proveedor de datos de interfaz de usuario ” en la página 217. v Debe seleccionar un nombre de visualización que no contenga ningún carácter especial ni espacios. Para seleccionar el nombre de visualización, en el árbol de navegación expanda Configuración del sistema > Automatización de sucesos y pulse Modelo de datos para abrir el separador Modelo de datos. Expanda el origen de datos al que pertenece el tipo de datos y pulse el tipo de datos que desea utilizar. Seleccione el campo que desea utilizar como nombre de visualización de la lista Campo de nombre de visualización. v Si el valor del campo clave de tipo de datos contiene comillas ("), la consola no puede soportar el widget que se basa en el tipo de datos. Esto significa que no puede pulsar la fila que se basa en el campo clave, utilícela para enviar un 168 Netcool/Impact: Guía de soluciones suceso a otro widget o para proporcionar información de visualización previa mediante puntero. Debe utilizar un campo clave que no contenga comillas. Tipos de datos internos Si utiliza tipos de datos internos, debe seleccionar uno de los campos pertenecientes al tipo de datos en la lista Campo de nombre de visualización en el editor de tipos de datos. No debe seleccionar KEY. Debe seleccionar un campo existente en su definición de esquema. Proveedor de datos de interfaz de usuario utiliza el valor de este campo como el identificador de elemento. Debe elegir un valor exclusivo para el campo de clave; de lo contrario, Proveedor de datos de interfaz de usuario sobrescribe la clave elegida con el valor más reciente. Tipos de datos SNMP Si utiliza tipos de datos SNMP, debe definir un valor en el campo Nombre de campo en el editor de tipos de datos. Proveedor de datos de interfaz de usuario utiliza el valor del campo Nombre de campo como el identificador de elemento. Si existe más de una entrada para el mismo valor en el campo Nombre de campo, Proveedor de datos de interfaz de usuario utiliza la entrada que se ha creado más recientemente. Si desea que Proveedor de datos de interfaz de usuario utilice un identificador de elemento exclusivo, especifique un valor exclusivo en el campo Nombre de campo para el tipo de datos. Integración de widgets de gráfica y Proveedor de datos de interfaz de usuario Si utiliza los widgets de gráfica circular o lineal para visualizar datos en la consola, debe cambiar el número de elementos por página de Todo a un número para asegurarse de que la consola pueda visualizar los datos. Procedimiento 1. Abra una página en la consola o cree una nueva. 2. Seleccione un widget. Para seleccionar un widget, pulse Todo y arrastre el widget al área de contenido. 3. Configure los datos del widget. Para configurar los datos del widget, púlselo en el área de contenido y pulse el icono de flecha abajo > Editar. Se visualiza la ventana Seleccionar un conjunto de datos. 4. Seleccione el conjunto de datos que desea utilizar para proporcionar los datos. Para buscar el tipo de datos, especifique el nombre de tipo de datos y pulse el botón Buscar. Para visualizar una lista de todos los tipos de datos disponibles, pulse el icono Mostrar todo. 5. Haga clic en Configuración.En la lista Lista de elementos por página, cambie el número de elementos por página de Todos por un número. Por ejemplo, cámbielo a 50. 6. Pulse Aceptar para guardar el widget. Nombres reservados para Proveedor de datos de interfaz de usuario Los nombres siguientes están reservados para que los utilice Proveedor de datos de interfaz de usuario . No puede utilizar estos nombres en sus bases de datos ni políticas. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 169 Proveedor de datos de interfaz de usuario utiliza los caracteres de coma (,) y ampersand (&) en la interfaz de usuario y en el URL para políticas que utilizan la función de políticas DirectSQL. Puede utilizar AS en lugar de ampersand (&) en las políticas. Proveedor de datos de interfaz de usuario utiliza el campo UIObjectId para indexar los campos de clave. No puede utilizar el campo UIObjectId en ninguna de las políticas. Netcool/Impact utiliza el campo AS UIDPROWNUM en la consola que se utiliza para bases de datos DB2 y Oracle. No puede utilizar UIDPROWNUM como un nombre de campo para ninguna de las bases de datos DB2 y Oracle conectadas. Los widget de árbol y topología utilizan el campo UITreeNodeId. El campo UITreeNodeId está reservado para que lo utilice Proveedor de datos de interfaz de usuario y contiene los campos siguientes que también están reservados: v UITreeNodeId v UITreeNodeParent v UITreeNodeStatus v UITreeNodeLabel v UITreeNodeType Pasos generales para integrar Proveedor de datos de interfaz de usuario y la consola Puede utilizar una variación de los pasos generales que se muestran aquí para visualizar datos de Netcool/Impact Proveedor de datos de interfaz de usuario en la consola. Los pasos exactos diferirán según si se utiliza un tipo de datos o política para proporcionar los datos. Sin embargo, normalmente, para integrar Proveedor de datos de interfaz de usuario y la consola debe completar las actividades siguientes: 1. Crear la conexión remota. 2. Crear el proveedor de información. Si desea visualizar datos directamente de una tabla de DB2 u otro origen de datos, debe configurar el modelo de datos en Netcool/Impact. Si desea visualizar los datos directamente desde una política en Netcool/Impact, debe crear la política. Por ejemplo, si desea utilizar una política para hacer un mashup de datos de dos orígenes distintos, debe crear una política en Netcool/Impact que resuma los datos. 3. Crear una página y un widget en la consola. Configuración de la conexión remota entre Proveedor de datos de interfaz de usuario y la consola Para visualizar los datos de Proveedor de datos de interfaz de usuario en la consola, debe configurar primero la conexión remota entre Proveedor de datos de interfaz de usuario y la consola. Acerca de esta tarea La conexión de Jazz for Service Management (la consola) es con el host y el puerto en que se está ejecutando Servidor GUI con el perfil de Tivoli Integrated Portal. El puerto predeterminado para el perfil de Tivoli Integrated Portal es 16311 para HTTPS y 16310 si está utilizando un protocolo HTTP. 170 Netcool/Impact: Guía de soluciones Procedimiento 1. Abra la consola. 2. Para abrir la ventana Conexiones, pulse Valores > Conexiones. La ventana Conexiones lista todos los proveedores de datos disponibles. 3. Para crear un nuevo proveedor remoto para representar Netcool/Impact Proveedor de datos de interfaz de usuario , pulse el icono Crear nuevo proveedor remoto y complete los valores siguientes: a. Seleccione el protocolo en la lista. Por ejemplo, HTTPS. b. Especifique el nombre de host. Por ejemplo, la dirección IP del Servidor GUI. c. Especifique el número de puerto. Por ejemplo, para HTTPS el valor predeterminado es 16311. d. Especifique el nombre de usuario y la contraseña que ha utilizado al instalar el Servidor Impact. e. Seleccione el proveedor de datos que ha creado. Para visualizar todos los proveedores de datos disponibles, pulse Buscar. Una vez que ha seleccionado el proveedor de datos, los campos Nombre e ID de proveedor se llenan automáticamente. Si utiliza varios servidores en un entorno en clúster, se visualiza una conexión para cada servidor. Por ejemplo, si utiliza Netcool/Impact en un clúster con TBSM, se visualiza una conexión para ambos miembros del clúster. 4. Para crear la conexión de proveedor remoto, pulse Aceptar. Creación del modelo de datos Para integrar Proveedor de datos de interfaz de usuario y la consola, debe crear un origen de datos y un tipo de datos para proporcionar los datos. Antes de empezar Para crear un tipo de datos, se requieren algunos valores específicos para facilitar la integración con Proveedor de datos de interfaz de usuario . Para obtener más información sobre estos valores, consulte “Tipos de datos y Proveedor de datos de interfaz de usuario ” en la página 168. Procedimiento 1. Cree un origen de datos. 2. Cree un tipo de datos. Resultados Los cambios sólo se visualizan tras el intervalo de renovación. De forma predeterminada la velocidad de renovación es de 5 minutos. Para obtener más información sobre cómo cambiar este valor, consulte “Personalización de Proveedor de datos de interfaz de usuario ” en la página 217. Creación de una página en la consola Para crear un widget para visualizar los datos de Proveedor de datos de interfaz de usuario , debe crear una página en la consola. Procedimiento 1. Abra la consola. 2. Para crear una página, pulse Valores > Nueva página. También puede seleccionar Cómo empezar > Construir una página en el escritorio. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 171 3. Especifique el nombre de la página. 4. Pulse Aceptar para guardar la página. Resultados Se ha creado la página. Ahora puede crear un widget para visualizar los datos. Creación de un widget en una página de la consola Para visualizar datos de Netcool/Impact en una página de la consola, debe crear un widget. Acerca de esta tarea Para crear un widget, debe crear una página en la consola. Para obtener más información, consulte “Creación de una página en la consola” en la página 171. Procedimiento 1. Abra la página que desea utilizar para este widget en la consola. 2. Seleccione un widget. Para seleccionar un widget, pulse Todo y arrastre el widget al área de contenido. Por ejemplo, pulse Todo, seleccione el widget Tabla y arrastre el widget al área de contenido. 3. Configure los datos del widget. Para configurar los datos del widget, púlselo en el área de contenido y pulse el icono de flecha abajo > Editar. Se visualiza la ventana Seleccionar un conjunto de datos. 4. Seleccione el conjunto de datos que desea utilizar para proporcionar los datos. Para buscar el origen de datos, el tipo de datos, especifique el nombre de tipo de datos y pulse el botón Buscar. Si utiliza un tipo de datos de Netcool/Impact para proporcionar datos para el widget, puede realizar una búsqueda por nombre de origen de datos o de tipo de datos. Si utiliza una política de Netcool/Impact, puede buscar el nombre de política o el nombre del parámetro de salida. Si ha configurado acciones relacionadas con política específicas en una política para utilizarlas como Proveedor de datos de interfaz de usuario , cuando crea widget y pulsa con el botón derecho sobre una acción del widget, se visualizan las acciones relacionadas con la política. El tipo de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. Si utiliza un tipo de datos que acaba de crear, deberá esperar 5 minutos para que el tipo de datos se visualice. 5. Si utiliza el widget de gráfica circular o lineal, debe cambiar el número de elementos por página de Todo a un número. Para ello, pulse Valores. En la lista Lista de elementos por página, cambie el número de elementos por página de Todos por un número. 6. Para guardar el nuevo widget, pulse Aceptar. Resultados Ahora puede utilizar el nuevo widget para visualizar los datos del tipo de datos especificado en la consola. 172 Netcool/Impact: Guía de soluciones Acceso a datos desde políticas de Netcool/Impact Puede utilizar Proveedor de datos de interfaz de usuario para acceder a datos desde políticas de Netcool/Impact. Debe crear parámetros de salida de usuario para cada política que desee utilizar con Proveedor de datos de interfaz de usuario . Además, si utiliza un objeto de Impact, una matriz de objetos de Impact, DirectSQL o la función de políticas GetByFilter, debe tener en cuenta determinados requisitos especiales. Estos casos especiales se describen y, si es necesario, se proporciona un ejemplo. Si la política recupera datos de una base de datos en la que el campo clave contiene comillas ("), la consola no puede dar soporte al widget que se basa en los datos proporcionados por la política. Esto significa que no puede pulsar la fila que se basa en el campo clave, utilícela para enviar un suceso a otro widget o para proporcionar información de visualización previa mediante puntero. Debe utilizar un campo clave que no contenga comillas. Configuración de parámetros de usuario Para utilizar Proveedor de datos de interfaz de usuario o OSLC con políticas de Netcool/Impact, debe configurar parámetros de usuario para que los resultados de política sean compatibles con Proveedor de datos de interfaz de usuario o disponible como recursos OSLC. Acerca de esta tarea Puede crear parámetros de tiempo de ejecución de política o parámetros de salida de política. Los parámetros de tiempo de ejecución de política representan los parámetros de tiempo de ejecución que define en políticas. Por ejemplo, puede utilizar un parámetro de tiempo de ejecución de política para pasar valores desde una política otra en mashup de datos. Los parámetros de salida de política representan los parámetros emitidos por políticas. Por ejemplo, el Proveedor de datos de interfaz de usuario utiliza parámetros de salida de política para visualizar datos de políticas en la consola. Procedimiento 1. Para abrir el editor de parámetros de usuario de política en la barra de herramientas del editor de políticas, pulse el icono Configurar parámetros de usuario. 2. Para crear un parámetro de salida de política, pulse Nuevo parámetro de salida:Nuevo. Para crear un parámetro de tiempo de ejecución de política, pulse Nuevo parámetro de tiempo de ejecución:Nuevo. Los campos obligatorios se indican mediante un asterisco (*). Debe especificar un nombre exclusivo en el campo Nombre. 3. Defina las esquemas personalizados para los parámetros de salida, si es necesario. Si está utilizando la función de políticas DirectSQL con OSLC, debe definir el esquema personalizado para ella. Si está utilizando DirectSQL, Objeto de Impact o Matriz de objeto de Impact con Proveedor de datos de interfaz de usuario o el widget de gráfica, debe definir el esquema personalizado para estos valores. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 173 Para obtener más información, consulte “Creación de valores de esquema personalizado para parámetros de salida” en la página 177 4. Para guardar los cambios en los parámetros y cerrar la ventana, pulse Aceptar. Ejemplo Este ejemplo muestra cómo crear parámetros de salida para una política. En primer lugar, define una política simple, como la siguiente: first_name = “Mark”; zip_code = 12345; Log(“Hello “ + first_name + “ living at “ + zip_code); A continuación, define los parámetros de salida para esta política. En este caso, hay dos parámetros de salida. Especifica la siguiente información: Tabla 32. Parámetro de salida de PolicyDT1 Campo Entrada de usuario Nombre Especifique un nombre exclusivo. Por ejemplo, PolicyDT1. Nombre de variable de política first_name Formato Serie Tabla 33. Parámetro de salida de PolicyDT2 Campo Entrada de usuario Nombre Especifique un nombre exclusivo. Por ejemplo, PolicyDT2 Nombre de variable de política zip_code Formato Entero Acceso a variables de objeto de Netcool/Impact en una política Puede utilizar la función NewObject para crear objetos de Netcool/Impact en una política. Si desea acceder a estos objetos desde Proveedor de datos de interfaz de usuario , debe crear un parámetro de salida de política. Procedimiento 1. Para abrir el editor de parámetros de usuario de política, pulse el icono Configurar parámetros de usuario en la barra de herramientas del editor de políticas. Puede crear parámetros de usuario de política para tiempo de ejecución y salida. Pulse Nuevo para abrir la ventana Crear un parámetro de salida de política nuevo según se requiera. 2. Seleccione Objeto de Impact en la lista Formato. 3. Especifique el nombre de objeto de política en el campo Nombre de variable de política. Ejemplo El ejemplo siguiente muestra cómo hacer que un objeto de Impact esté disponible para Proveedor de datos de interfaz de usuario . En primer lugar, crea la política siguiente, denominada Test_Policy2: 174 Netcool/Impact: Guía de soluciones MyObject = NewObject(); MyObject.fname = ’Sam’; MyObject.age = 25; MyObject.bmi = 24.5; Defina los parámetros de salida para la política, de la forma siguiente: Tabla 34. Parámetro de salida de PolicyObject1 Campo Entrada de usuario Nombre Especifique un nombre exclusivo. Por ejemplo, PolicyObject1. Nombre de variable de política MyObject Formato Objeto de Impact Acceso a tipos de datos generados por la función GetByFilter Si desea acceder a los resultados de la función GetByFilter, debe crear parámetros de salida para Proveedor de datos de interfaz de usuario . Procedimiento 1. Para abrir el editor de parámetros de usuario de política, pulse el icono Configurar parámetros de usuario en la barra de herramientas del editor de políticas. Puede crear parámetros de usuario de política para el tiempo de ejecución y la salida. Para abrir la ventana Crear un nuevo parámetro de salida de política, pulse Nuevo. 2. Seleccione tipo de datos como formato. 3. Especifique el nombre del elemento de datos al que se asigna la salida de la función GetByFilter en el campo Nombre de variable de política. 4. Especifique el nombre del origen de datos en el campo Nombre de origen de datos. 5. Especifique el nombre del tipo de datos en el campo Nombre de tipo de datos. Ejemplo Este ejemplo muestra cómo hacer que la salida de la función GetByFilter esté disponible para Netcool/Impact Proveedor de datos de interfaz de usuario . Ha creado un tipo de datos denominado ALERTS que pertenece al origen de datos defaultobjectserver. Este tipo de datos pertenece a Netcool/OMNIbus y apunta a alerts.status. El campo de clave es Identificador. Se asocian las siguientes cuatro filas de datos al campo de clave: v Event1 v Event2 v Event3 v Event4 Cree la política siguiente, denominada Test_Policy3: MyAlerts = GetByFilter("ALERTS", "Severity > 0", false); Defina los parámetros de salida para la política, de la forma siguiente: Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 175 Tabla 35. Parámetro de salida de PolicyData1 Campo Entrada de usuario Nombre PolicyData1 Nombre de variable de política MyAlerts Formato Datatype Nombre de origen de datos defaultobjectserver Nombre de tipo de datos ALERTS Seleccione el parámetro de salida como el conjunto de datos para el widget que utiliza para visualizar los datos. 1. Abra la consola y una página. 2. Arrastre un widget al área de contenido. 3. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. 4. Seleccione PolicyData1 como el tipo de datos que pertenece al origen de datos defaultobjectserver. 5. Para asegurarse de que la política se ejecuta cuando se visualiza el widget, seleccione el recuadro de selección executePolicy. Pulse Aceptar. Acceso a tipos de datos mediante la función DirectSQL Si desea acceder a los resultados de la función de políticas DirectSQL, debe crear los parámetros de salida de Proveedor de datos de interfaz de usuario . Acerca de esta tarea Los caracteres de coma (,) y ampersand (&) están reservados como caracteres especiales para la interfaz de usuario y el URL. No puede utilizar estos caracteres en políticas a las que accede la función de políticas DirectSQL. Puede utilizar AS en lugar de ampersand (&) en las políticas, según se requiera. Por ejemplo, considere la política siguiente: SELECT "My&Test" AS My_Test FROM test_table Esta política devuelve el nombre de campo My_Test en lugar de My&Test Procedimiento 1. Para abrir el editor de parámetros de usuario de política, pulse el icono Configurar parámetros de usuario en la barra de herramientas del editor de políticas. Puede crear parámetros de usuario de política para el tiempo de ejecución y la salida. Para abrir la ventana Crear un nuevo parámetro de salida de política, pulse Nuevo. 2. Seleccione DirectSQL / UI Provider Datatype como formato. 3. Especifique un nombre para el parámetro de salida. 4. Especifique el nombre de elemento de datos al que se asigna la salida de la función DirectSQL en el campo Nombre de variable de política. 5. Para definir los valores de formato DirectSQL, pulse el icono del editor Abrir el Editor de definiciones de esquema. Para ver información detallada sobre cómo crear valores de esquema personalizados, consulte “Creación de valores de esquema personalizado para parámetros de salida” en la página 177 176 Netcool/Impact: Guía de soluciones Creación de valores de esquema personalizado para parámetros de salida Al definir parámetros de salida que utilicen el formato DirectSQL, Matriz de objetos Impact o Objeto Impact en el editor de parámetros de salida del usuario, debe especificar también un nombre y un formato para cada campo incluido en los objetos DirectSQL, Matriz de objetos Impact u Objeto Impact. Acerca de esta tarea Las definiciones de esquema personalizado las utiliza Netcool/Impact para visualizar los datos en la consola y pasar valores a Proveedor de datos de interfaz de usuario y OSLC. Puede crear los esquemas personalizados y seleccionar el formato basado en los valores de cada campo incluido en el objeto. Por ejemplo, puede crear una política que contenga dos campos en un objeto: O1.city="NY" O1.ZIP=07002 Puede definir los siguientes valores de esquema personalizado para esta política: Tabla 36. Valores de esquema personalizado de City Campo Entrada Nombre Ciudad Formato Serie Tabla 37. Valores de esquema personalizado de ZIP Campo Entrada Nombre ZIP Formato Entero Si utiliza la función de política DirectSQL con Proveedor de datos de interfaz de usuario o OSLC, debe definir un valor de esquema personalizado para cada valor de DirectSQL que utilice. Si desea utilizar el widget de gráfica para visualizar datos de un objeto Impact o una matriz de objetos Impact con Proveedor de datos de interfaz de usuario y la consola, puede definir valores de esquema personalizado para los campos incluidos en los objetos. Los esquemas personalizados le ayudan a crear descriptores para columnas en la gráfica durante la inicialización. Sin embargo, los esquemas personalizados no son necesarios técnicamente. Si no define valores para ninguno de estos dos formatos, el sistema vuelve a descubrir posteriormente cada objeto Impact al crear campos individuales como el campo clave, UIObjectId, o el campo para el widget de árbol, UITreeNodeId. No es necesario definir estos valores para OSLC. Procedimiento 1. En el editor de parámetros de usuario de política, elija DirectSQL, Objeto Impact o Matriz de objetos Impact en el campo Formato. 2. El sistema visualiza el icono Abrir el editor de definiciones de esquema junto al campo Definición de esquema. Para abrir el editor, pulse el icono. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 177 3. Puede editar una entrada existente o puede crear una nueva. Para definir una entrada nueva, pulse Nueva. Especifique un nombre y elija un formato apropiado. Para editar una entrada existente, pulse el icono Editar junto a la entrada que desea editar. 4. Para marcar una entrada como un campo clave, active el recuadro de selección en la columna Campo clave. No debe definir el campo clave para objetos Impact o una matriz de objetos Impact. En su lugar, el sistema utiliza UIObjectId como campo clave. 5. Para suprimir una entrada, seleccione la entrada y pulse Suprimir. Acceso a una matriz de objetos de Impact con Proveedor de datos de interfaz de usuario Para utilizar Proveedor de datos de interfaz de usuario para acceder a una matriz de objetos de Impact, debe crear primero un parámetro de salida que represente la matriz de objetos de Impact. Acerca de esta tarea Netcool/Impact utiliza el campo UIObjectID para indexar los campos de clave. Como resultado, UIObjectID es un nombre de campo reservado. No debe utilizar UIObjectID como campo personalizado en ninguna de sus políticas. Procedimiento 1. Para definir un parámetro de salida para la matriz de objetos de Impact, pulse el icono Configurar parámetros de usuario en la barra de herramientas del editor de políticas. Para abrir la ventana Crear un nuevo parámetro de salida de política, pulse Nuevo. Cree el parámetro de salida tan como se describe en la tabla siguiente: Tabla 38. Parámetro de salida para una política que contiene la matriz Matriz de objetos de Impact Campo Instrucciones Nombre Especifique un nombre para el parámetro de salida. Nombre de variable de política Especifique un nombre que sea idéntico al nombre de la matriz de objetos de Netcool/Impact en la política a la que desea hacer referencia. Formato Seleccione Matriz de objetos de Impact. 2. Una vez que ha creado el parámetro de salida, define los valores de esquema personalizados para la matriz de objetos de Impact. Para obtener más información, consulte “Creación de valores de esquema personalizado para parámetros de salida” en la página 177. 3. Para visualizar todos los campos y valores asociados a la matriz, utilice el URL siguiente: https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/ Impact_NCICLUSTER /datasources/<id_origen_datos>/datasets/ <nombre_parámetro_salida>/items?properties=all donde <nombre_parámetro_salida> es el nombre del parámetro definido en el paso anterior. 178 Netcool/Impact: Guía de soluciones Ejemplo Por ejemplo, considere los siguientes objetos de Netcool/Impact: MyObject1=NewObject(); MyObject1.firstname="first_name"; MyObject1.lastname="last_name"; MyObject2=NewObject(); MyObject2.city="mycity"; MyObject2.state="mystate"; Una política de Impact Policy Language (IPL) hace referencia a la matriz de la forma siguiente: MyArrayOfObjects={MyObject1,MyObject2}; Una política JavaScript hace referencia a la matriz de la forma siguiente: MyArrayOfObjects=[MyObject1,MyObject2]; Para correlacionar MyArrayOfObjects con los parámetros de salida, cree el parámetro de salida para la matriz de objetos, de la forma siguiente: Tabla 39. Parámetros de salida de MyArrayObj1 Campo Entrada de usuario Nombre MyArrayObj1 Nombre de variable de política MyArrayOfObjects Formato Matriz de objeto de Impact Para correlacionar los valores contenidos en la matriz, cree los valores de esquema personalizados de la forma siguiente: Tabla 40. Valores de esquema personalizado de first_name Campo Entrada de usuario Nombre first_name Formato Serie Tabla 41. Valores de esquema personalizado de last_name Campo Entrada de usuario Nombre last_name Formato Serie Tabla 42. Valores de esquema personalizado de mycity Campo Entrada de usuario Nombre mycity Formato Serie Tabla 43. Valores de esquema personalizado de mystate Campo Entrada de usuario Nombre mystate Formato Serie Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 179 Utilice el URL siguiente para ver los campos y valores para MyArrayofObjects: https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/ Impact_NCICLUSTER /datasources/<id_origen_datos>/datasets/ MyArrayObj1/items?properties=all Proveedor de datos de interfaz de usuario e IBM Dashboard Application Services Hub Para crear visualizaciones y mashups de datos de Netcool/Impact de fuentes como políticas de Netcool/Impact y tablas de base de datos en IBM Dashboard Application Services Hub, que denominamos consola en esta sección, puede integrar Netcool/Impact Proveedor de datos de interfaz de usuario con la consola. Filtrado de datos en la consola Puede utilizar la consola para filtrar datos según los parámetros de tiempo de ejecución. Estos datos se pueden derivar de las políticas de Netcool/Impact o de otros tipos de datos. Para filtrar datos en la consola, configura los valores de widget en la consola. Acerca de esta tarea Crea estos valores en la interfaz de usuario del widget Tabla en la consola. Para crear los valores que se describen aquí, abra la interfaz de usuario del widget Tabla y pulse Editar. Procedimiento v Para filtrar los datos proporcionados por las políticas de Netcool/Impact, debe seleccionar el recuadro de selección executePolicy para que se incluya el parámetro booleano executePolicy en la política. El parámetro executePolicy garantiza que la política se ejecuta cuando el usuario abre el widget. A continuación, el sistema llena el widget con los datos necesarios de la política. Si desea especificar valores para los parámetros de tiempo de ejecución de política en la consola, puede especificarlos en Configurar parámetros de conjunto de datos opcionales. El sistema pasa los valores a los parámetros de tiempo de ejecución en la política mientras se está ejecutando la política. Atención: Los parámetros de tiempo de ejecución ya deben estar definidos en la política. Si los parámetros de tiempo de ejecución no están definidos en la política, el sistema no puede pasar los valores para los parámetros de tiempo de ejecución a la política. Para obtener más información sobre cómo crear parámetros de tiempo de ejecución de política, consulte “Configuración de parámetros de usuario” en la página 173. v Para filtrar datos de otras fuentes, como por ejemplo datos derivados de una tabla de base de datos, los usuarios pueden especificar valores para los parámetros de filtro en la sección Configurar parámetros de conjunto de datos opcionales de la consola. Netcool/Impact utiliza los valores especificados aquí para filtrar los resultados que se visualizan en la consola. Ejemplo: filtrado de datos según una tabla de base de datos Por ejemplo, desea configurar un widget de consola para visualizar las filas de una tabla de base de datos que contengan un valor de 192.168.1.119 para el campo Dispositivo. En la consola, en Configurar parámetros de conjunto de datos opcionales, especifique 192.168.1.119 en el campo Dispositivo. El widget devuelve sólo los datos que contienen este valor en el campo Dispositivo. 180 Netcool/Impact: Guía de soluciones Integración del widget de árbol con un objeto de Impact o una matriz de objetos de Impact Para integrar una política que contiene un objeto de Impact o una matriz de objetos de Impact con el widget de árbol que está disponible en la consola, debe especificar determinados campos en la política y crear las definiciones de esquema personalizado necesarias. Procedimiento 1. Si el objeto es un padre con un ID indexado, añada el campo UITreeNodeId para el objeto. Si el objeto es un hijo, añada el campo UITreeNodeParent para el objeto. Si no añade estos valores, el objeto no se visualizará como una jerarquía de árbol. Se aplican también las condiciones siguientes: v El primer objeto de la jerarquía no puede ser un hijo, como es el caso para todas las jerarquías. v Debe especificar el objeto padre antes del hijo. v Un objeto hijo no puede utilizar el mismo ID para sí mismo y para su padre. v El ID padre es un ID indexado y debe empezar por 0. Si desea omitir el ID padre, debe hacerlo en este orden. v El esquema de cada objeto debe ser el mismo, como es el caso para todos los objetos que utilizan el widget de árbol. En otras palabras, un objeto puede utilizar menos elementos de esquema que su objeto padre pero estos elementos se deben definir en el objeto padre. Un objeto hijo no puede utilizar elementos de esquema adicionales que no estén definidos en el objeto padre. Los campos UITreeNodeId y UITreeNodeParent no se visualizan en la consola. 2. Cree un parámetro de salida de política para el objeto de Impact o la matriz de objetos de Impact. Para crear un parámetro de salida de parámetro, pulse el icono Configurar parámetros de usuario en la barra de herramientas del editor de políticas. Para abrir la ventana Crear un nuevo parámetro de salida de política, pulse Nuevo. Cree las entradas siguientes: Tabla 44. Parámetros de salida de usuario para objeto de Impact o matriz de objetos de Impact Campo Instrucciones Nombre Especifique un nombre para el parámetro de salida. Nombre de variable de política Especifique un nombre que sea idéntico al nombre del objeto de Impact o de la matriz de objetos de Impact que se ha especificado en la política a la que desea hacer referencia. Formato Elija Objeto de Impact o Matriz de objetos de Impact. 3. Cree los valores de esquema personalizado para los valores que desea visualizar como columnas en la consola. Debe especificar un valor de esquema personalizado para el objeto de Impact o los objetos contenidos en una matriz de objetos de Impact. Los valores de esquema que define se pueden visualizar como columnas en la consola. Sólo necesita especificar valores de esquema personalizado para los valores que desea visualizar. Los valores como UITreeNodeId se visualizan como propiedades, a menos que los especifique como valores de esquema personalizado. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 181 Para crear un valor de esquema personalizado en el editor de políticas, seleccione Objeto de Impact o Matriz de objetos de Impact en el campo Formato. Para abrir el editor, pulse el icono Abrir el Editor de definiciones de esquema. Defina los valores de esquema personalizado tal como se describen en la tabla siguiente: Tabla 45. Valores de esquema personalizado para objeto de Impact o matriz de objetos de Impact Campo Instrucciones Nombre Especifique el nombre del valor de esquema personalizado. Por ejemplo, podría ser el nombre del objeto de Impact o el nombre de uno de los objetos de la matriz de objetos de Impact. Formato Elija el formato del valor de esquema personalizado. Por ejemplo, si el parámetro es una serie, elija Serie. Ejemplo El ejemplo siguiente muestra cómo integrar un matriz de objetos de Impact y el widget de árbol. 1. Cree una política que contenga una matriz de objetos de Impact y los campos adicionales necesarios para el widget de árbol, UITreeNodeId y UITreeNodeParent. Log("Matriz de objetos con los mismos campos...."); O1=NewObject(); O1.UITreeNodeId=0; O1.fname="o1fname"; O1.lname="o1lname"; O1.dob="o1dob"; O2=NewObject(); O2.UITreeNodeId=1; O2.UITreeNodeParent=0; O2.fname="o2fname"; O2.lname="o2lname"; O2.dob="o2dob"; O3=NewObject(); O3.UITreeNodeId=2; O3.UITreeNodeParent=1; O3.fname="o3fname"; O3.lname="o3lname"; O3.dob="o3odb"; O4=NewObject(); O4.UITreeNodeId=3; O4.UITreeNodeParent=20; O4.fname="o4fname"; O4.lname="o4lname"; O4.dob="o4odb"; O5=NewObject(); O5.UITreeNodeId=4; O5.fname="o5fname"; O5.lname="o5lname"; O5.dob="o5odb"; O6=NewObject(); 182 Netcool/Impact: Guía de soluciones O6.UITreeNodeParent=4; O6.fname="o6fname"; O6.lname="o6lname"; O6.dob="o6odb"; O7=NewObject(); O7.UITreeNodeParent=4; O7.fname="o7fname"; O7.lname="o7lname"; O7.dob="o7odb"; O8=NewObject(); O8.UITreeNodeParent=4; O8.fname="o8fname"; O8.lname="o8lname"; O8.dob="o8odb"; O9=NewObject(); O9.fname="o9fname"; O9.lname="o9lname"; O9.dob="o9odb"; O10=NewObject(); O10.fname="NJ"; O10.lname="Bayonne"; O10.dob="April 1st 2011"; O11=NewObject(); O11.UITreeNodeParent=11; O11.fname="o11fname"; O11.lname="o11lname"; O11.dob="o11odb"; O12=NewObject(); O12.UITreeNodeId=11; O12.UITreeNodeParent=0; O12.fname="o12fname"; O12.lname="o12lname"; O12.dob="o12odb"; Oa=NewObject(); Oa.UITreeNodeId=12; Oa.UITreeNodeParent=2; Oa.fname="oafname"; Oa.lname="oalname"; Oa.dob="oaodb"; Ob=NewObject(); Ob.UITreeNodeId=13; Ob.UITreeNodeParent=12; Ob.fname="obfname"; Ob.lname="oblname"; Ob.dob="obodb"; Oc=NewObject(); Oc.UITreeNodeId=14; Oc.UITreeNodeParent=14; Oc.fname="ocfname"; Oc.lname="oclname"; Oc.dob="ocodb"; Oe=NewObject(); Oe.UITreeNodeParent=14; Oe.fname="oefname"; Oe.lname="oelname"; Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 183 Oe.dob="obedb"; Os={O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O12,O11,Oa,Ob,Oc,Oe}; log("os " + Os); 2. En el editor de políticas, cree el siguiente parámetro de salida de usuario: Tabla 46. Parámetro de salida de usuario de ArrayofNewObject Campo Entrada de usuario Nombre ArrayofNewObject Nombre de variable de política Sistema operativo Formato Matriz de objetos de Impact 3. En el editor de políticas, cree las siguientes definiciones de valores de esquema personalizado para la matriz de objetos de Impact: Tabla 47. Definición de esquema personalizado de fname Campo Entrada de usuario Nombre fname Formato Serie Tabla 48. Definición de esquema personalizado de lname Campo Entrada de usuario Nombre lname Formato Serie Integración de datos de una política con el widget de topología Para utilizar el widget de topología para visualizar datos de una política de Netcool/Impact en la consola, debe especificar primero determinados campos en la política. Acerca de esta tarea El widget de topología está pensado para su uso con el widget de árbol. Utiliza los campos que se describen aquí con los campos que especifica para el widget de árbol. Para obtener más información, consulte “Integración del widget de árbol con un objeto de Impact o una matriz de objetos de Impact” en la página 181 Normalmente, los nodos se conectan en una jerarquía. Sin embargo, esta conexión no es técnicamente necesaria. Si define un nodo que no forma parte de una jerarquía, este se visualiza como un nodo autónomo que no forma parte de ninguna otra jerarquía. Procedimiento v Debe incluir la sentencia siguiente en el primer objeto de la política: ObjectName.UITreeNodeType= <Tipo de nodo>; donde <Tipo de nodo> es GRAPH o TREE. Si no especifica ningún valor, el valor predeterminado es TREE. 184 Netcool/Impact: Guía de soluciones v Debe especificar una etiqueta para cada objeto. Si no lo hace, el sistema visualiza No se ha especificado ninguna etiqueta para la etiqueta y la ayuda contextual. Para especificar una etiqueta, añada la siguiente sentencia para cada objeto: ObjectName.UITreeNodeLabel=<Texto de la ayuda contextual> donde <Texto de la ayuda contextual> es el texto que se utiliza para la etiqueta y la ayuda contextual. v Defina el estado de cada nodo. Este estado no es obligatorio. Si no añade esta sentencia, el estado es desconocido. Si desea visualizar el estado de cada objeto, añada las siguientes sentencias para cada nodo. ObjectName.UITreeNodeStatus=<Estado>; donde <Estado> es el estado. La tabla lista los valores soportados y los números que representan estos valores. Puede utilizar el número o la palabra para representar el estado. Tabla 49. Estado de nodo de árbol Estado Número Crítico 5 Grave 4 Leve 3 Aviso 2 Normal 0 Desconocido Ejemplo Los ejemplos siguientes muestran cómo definir una política que desea utilizar con los widget de árbol y topología. Esta política de ejemplo incluye una topología multinivel y un estado de nodo que representa la gravedad. Log("Prueba Topología"); O0=NewObject(); O0.UITreeNodeType="GRAPH"; O0.UITreeNodeId=0; O0.UITreeNodeLabel="NJ-Bayonne"; O0.UITreeNodeStatus="Warning"; O0.state="NJ"; O0.city="Bayonne"; O1=NewObject(); O1.UITreeNodeId=1; O1.UITreeNodeStatus="Normal"; O1.UITreeNodeParent=0; O1.UITreeNodeLabel="NY-Queens"; O1.state="NY"; O1.city="Queens"; O2=NewObject(); O2.UITreeNodeId=2; O2.UITreeNodeStatus="Critical"; O2.UITreeNodeParent=1; O2.UITreeNodeLabel="NC-Raleigh"; O2.state="NC"; O2.city="Raleigh"; O3=NewObject(); O3.UITreeNodeId=3; Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 185 O3.UITreeNodeParent=0; O3.UITreeNodeStatus="Warning"; O3.UITreeNodeLabel="CA-Los Angeles"; O3.state="CA"; O3.city="Los Angeles"; O4=NewObject(); O4.UITreeNodeId=4; O4.UITreeNodeParent=3; O4.UITreeNodeStatus="Normal"; O4.UITreeNodeLabel="CO-Denver"; O4.state="CO"; O4.city="Denver"; O5=NewObject(); O5.UITreeNodeId=5; O5.UITreeNodeStatus="Critical"; O5.UITreeNodeParent=4; O5.UITreeNodeLabel="MA-Main"; O5.state="MA"; O5.city="Main"; O6=NewObject(); O6.UITreeNodeId=6; O6.UITreeNodeParent=0; O6.UITreeNodeStatus="Warning"; O6.UITreeNodeLabel="NH-New Hampshire"; O6.state="NH"; O6.city="New Hampshire"; O7=NewObject(); O7.UITreeNodeId=7; O7.UITreeNodeParent=6; O7.UITreeNodeStatus="Normal"; O7.UITreeNodeLabel="TX-Hudson"; O7.state="TX"; O7.city="Houston"; O8=NewObject(); O8.UITreeNodeId=8; O8.UITreeNodeParent=7; O8.UITreeNodeStatus="Critical"; O8.UITreeNodeLabel="VA-Virgina Beach"; O8.state="VA"; O8.city="Virigina Beach"; Obs={O0,O1,O2,O3,O4,O5,O6,O7,O8}; Después de implementar la política, debe crear los parámetros de salida y los valores de esquema personalizados. Para obtener más información sobre cómo hacerlo, consulte “Configuración de parámetros de usuario” en la página 173. Visualización del estado y el porcentaje en un widget Puede mostrar el estado y el porcentaje en los widgets de topología, árbol, tabla y lista mediante políticas o tipos de datos. Para mostrar el estado y los porcentajes en widget, debe crear un script en formato JavaScript en el tipo de datos o si la política utiliza la función GetByFilter. Acerca de esta tarea Están soportados los tipos de datos SQL, SNMP e internos. Están soportadas las políticas GetByFilter, DirectSQL y Objeto de Impact y Matriz de objetos de Impact. 1. Cree el tipo de datos. 186 Netcool/Impact: Guía de soluciones 2. En la ventana de configuración de tipo de datos, añada el script al área Definir valores y tipos personalizados (JavaScript). 3. Pulse el botón Comprobar sintaxis y Vista previa de resultado de la muestra para obtener una vista previa de los resultados y comprobar las sintaxis del script. Para DirectSQL, Objeto de Impact y Matriz de objetos de Impact, el Estado y el Porcentaje se pueden especificar al crear la definición de esquema. Para las políticas, puede utilizar IPL o JavaScript para las funciones DirectSQL o GetByFilter. El script utiliza la sintaxis siguiente para los tipos de datos y para las políticas que utilizan la función GetByFilter. ImpactUICustomValues.put("FieldName,Type",VariableName); Donde Type es Percentage o Status. VariableName, puede ser una variable o un valor codificado. Convierta siempre el tipo de nombre de variable a String para evitar cualquier error, incluso aunque el valor sea numérico. Consulte los ejemplos siguientes: ImpactUICustomValues.put("MyField,Percentage",""+VariableName); ImpactUICustomValues.put("MyField,Percentage","120"); ImpactUICustomValues.put("FieldName,Percentage",""+(field1/40)); El campo de estado espera que el valor sea similar a la configuración del widget de topología: Tabla 50. Valores del campo Status Estado Número Crítico 5 Grave 4 Leve 3 Aviso 2 Normal 0 Intermedio (Disponible cuando la conexión con Netcool/Impact utiliza https.) 1 No hay límite de campos para la variable ImpactUICustomValues. La variable debe estar al final del script. Cualquier cosa antes de la variable debe estar en JavaScript y puede ser cualquier cosa si la variable ImpactUICustomValues se llena correctamente. Ejemplo 1: Asigna que el nombre de campo de la tabla sea el estado del porcentaje y asigna el valor de campo. Este ejemplo asigna SHAREUPSHAREDOWN y PROFIT como los porcentajes y STANDING como el estado. ImpactUICustomValues.put("SHAREUP,Percentage",SHAREUP); ImpactUICustomValues.put("SHAREDOWN,Percentage",SHAREDOWN); ImpactUICustomValues.put("PROFIT,Percentage",PROFIT); ImpactUICustomValues.put("STANDING,Status",STANDING); Ejemplo 2: Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 187 Este ejemplo tiene un cálculo adicional para determinar el valor de los campos de porcentaje o estado. El porcentaje presupone que el valor máximo a utilizar es 100. A continuación, se utiliza un valor para escalar los valores basados en el valor máximo y esperados por el usuario. El estado y el porcentaje se escalan en función de un factor. var status = "Normal"; var down = 0; var up = 0; var factor = ( TOTAL / 100); down = (DOWN / factor); up = (UP / factor); var statusFactor = (DOWN / TOTAL) * 100; if ( statusFactor >= 50) { status = "Crítico"; } else if ( statusFactor >= 30 ) { status = "Grave"; } else if (statusFactor >= 20) { status = "Leve"; } else if (statusFactor >= 10 ) { status = "Aviso"; } else { status = "Normal"; } ImpactUICustomValues.put("DownPercentage,Percentage",""+down); ImpactUICustomValues.put("UpPercentage,Percentage",""+up); ImpactUICustomValues.put("NetworkStatus,Status",""+status); Ejemplo 3: Este ejemplo utiliza campos adicionales que no existen en la tabla y que Status y Percentage utilizan. Los valores son los valores exactos que vienen de los campos que existen en la tabla. Se puede utilizar el cálculo par asignar valores diferentes: ImpactUICustomValues.put("CPUPercentUsage,Percentage",CPUUsage); ImpactUICustomValues.put("RAMPercentUsage,Percentage",RAMUsage); ImpactUICustomValues.put("DiskPercentUsage,Percentage",DiskUsage); ImpactUICustomValues.put("NetworkAvailability,Status",NetworkStatus); Consejo: El widget de tabla o de lista muestra entradas duplicadas o tiene datos faltantes cuando compara los datos con los elementos de datos de tipo de datos. Compruebe el origen de datos para asegurarse de que todas las claves sean exclusivas. Consejo: En una instancia en la que utiliza una función de política para crear un filtro dinámico y obtiene un mensaje en el registro de política. Los mensajes indican que la variable de filtro no está definida en la política. No se producen sucesos entre widgets. Compruebe que no está utilizando caracteres especiales en el valor personalizado del tipo de datos, por ejemplo ImpactUICustomValues.put("CPU%,Percentage",""+value). Los widgets no dan soporte a caracteres especiales en nombres de campo. Consejo: Si un campo de tipo de datos está definido incorrectamente, por ejemplo si el campo está definido como un entero, pero contiene valores flotantes, el widget no se carga. El widget muestra un mensaje parecido a este ejemplo: No se ha podido cargar Para resolver el problema, edite el campo de tipo de datos y seleccione el tipo de datos correcto float. 188 Netcool/Impact: Guía de soluciones Visualización de datos del proveedor de datos de interfaz de usuario en la consola Puede utilizar Netcool/Impact Proveedor de datos de interfaz de usuario para visualizar datos en IBM Dashboard Application Services Hub, al cual haremos referencia como consola en toda esta sección. Puede visualizar datos de Netcool/Impact en la consola. Puede utilizar tipos de datos o políticas de Netcool/Impact para proporcionar estos datos. También puede utilizar políticas de Netcool/Impact para crear mashups de datos de varias fuentes. Los escenarios de ejemplo que se proporcionan están pensados para facilitar ejemplos que le ayuden cuando intente visualizar sus propios datos en la consola. Para poder implementar cualquiera de los ejemplos siguiente, debe configurar la conexión remota entre Netcool/Impact y la consola. Para obtener más información, consulte “Configuración de la conexión remota entre Proveedor de datos de interfaz de usuario y la consola” en la página 170. Nota: Si utiliza el widget de gráfica circular o lineal para visualizar datos de un tipo de datos DB2, debe cambiar el número de elementos por página de Todo a un número. Por ejemplo, cámbielo a 50. Descripción general del escenario de ejemplo Lea los siguientes escenarios de ejemplo para obtener una descripción general de las posibles maneras de integrar Proveedor de datos de interfaz de usuario y la consola. Para ver más escenarios y ejemplos visite la página Netcool/Impact developerWorks wiki Escenarios y ejemplos disponible en el URL siguiente: https://www.ibm.com/developerworks/mydeveloperworks/wikis/ home?lang=en#/wiki/Tivoli%20Netcool%20Impact/page/Scenarios%20and %20examples Visualización de datos de una tabla de base de datos DB2 en una gráfica lineal Puede utilizar la consola para visualizar datos recuperados directamente de un tipo de datos en Netcool/Impact. Acerca de esta tarea Este ejemplo utiliza una gráfica lineal para visualizar los datos. Puede utilizar el mismo proceso para visualizar los datos en una gráfica de barras, de columnas o lineal. Procedimiento 1. Cree un origen de datos DB2. a. Especifique NewDataSource en el campo Nombre de origen de datos. b. Especifique el nombre de usuario y la contraseña para la base de datos. c. Complete los otros campos, según se requiera. d. Guarde el origen de datos. 2. Cree un tipo de datos para el origen de datos DB2. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 189 a. Especifique NewUIDPDT como nombre y complete los pasos necesarios. b. Para asegurarse de que el tipo de datos es compatible con Proveedor de datos de interfaz de usuario , seleccione el recuadro de selección Proveedor de datos de interfaz de usuario: habilitado. c. Seleccione los campos de clave para el tipo de datos. d. Guarde el tipo de datos. 3. Cree una página en la consola. a. Abra la consola. b. Para crear una página, pulse Valores > Nueva página. c. Especifique Página para DB2 en el campo Nombre de página. d. Guarde la página. 4. Cree un widget en la consola. a. Abra la página Página para DB2 que ha creado. b. Arrastre el widget Gráfica lineal en el área de contenido. c. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos NewUIDPDT que pertenece al origen de datos NewDataSource. El tipo de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. e. Se visualiza la interfaz de usuario Valores de visualización. Especifique los valores que desea utilizar para el eje y. Puede seleccionar varias líneas. También puede seleccionar un texto para que se visualice como ayuda contextual. Pulse Aceptar. f. Para asegurarse de que la consola puede visualizar todos los elementos, cambie el número de elementos que se permiten por página de todos a un número determinado. Haga clic en Configuración. En la lista Lista de elementos por página, cambie el número de elementos por página de Todos por un número. g. Para guardar el widget, pulse el botón Guardar y salir en la barra de herramientas. Resultados Cuando visualiza el widget, los datos se recuperan directamente del tipo de datos en Netcool/Impact y se visualizan en una gráfica lineal. Visualización de datos de una política de Netcool/Impact en una gráfica circular Puede utilizar el widget de gráfica circular en la consola para visualizar datos de Proveedor de datos de interfaz de usuario . Procedimiento 1. Cree una política para proporcionar los datos para el widget de gráfica circular. La política debe agrupar todos los elementos de una tabla de base de datos en un único objeto de Impact. Por ejemplo, defina la siguiente política, denominada Policyforpiechart, que recopila las filas de la tabla de base de datos en un único objeto de Impact: obj = NewObject (); obj.name = ’Internet Banking’; obj.availabilityduringoperationalhours=99.9; obj.availabilityduringnonoperationalhours=95; 190 Netcool/Impact: Guía de soluciones 2. Cree los parámetros de salida de usuario para la política. a. En el editor de políticas, pulse el icono Configurar parámetros de usuario para crear el parámetro de salida. Tabla 51. Parámetros de salida de MyNewObject Campo Entrada de usuario Nombre MyNewObject Nombre de variable de política Obj Formato Objeto de Impact Debe especificar el nombre del objeto de Impact exactamente tal como está definido en la política en el campo Nombre de variable de política. b. Debe crear los valores de esquema personalizado para los campos en el objeto. En este ejemplo, el objeto de Impact contiene dos campos que son enteros. Tras seleccionar Objeto de Impact en el campo Formato, el sistema junto al visualiza el icono Abrir el Editor de definiciones de esquema campo Definición de esquema. Para abrir el editor, pulse el icono. Puede definir las siguientes definiciones de esquema personalizado para la política. Tabla 52. Esquema personalizado para horas operativas y no operativas Nombre Formato availabilityduringoperationalhours Entero availabilityduringnonoperationalhours Entero 3. Cree una página. a. Abra la consola. b. Para crear una página, pulse Valores > Nueva página. c. Especifique Página para gráfica circular en el campo Nombre de página. d. Guarde la página. 4. Cree un widget de gráfica circular. a. Abra la página Página para gráfica circular que ha creado. b. Arrastre el widget Gráfica circular al área de contenido. c. Para configurar los datos de widget, pulse el icono de flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos MyNewObject perteneciente al origen de datos Policyforpiechart. El conjunto de datos representa el parámetro de salida de usuario que ha definido anteriormente. El conjunto de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. e. Se visualiza la interfaz de usuario Valores de visualización. Para asegurarse de que la política se ejecuta cuando se visualiza el widget, seleccione el recuadro de selección executePolicy. f. Seleccione los valores que desee utilizar para la gráfica circular. En este ejemplo, seleccione obj.availabilityduringoperationalhours y obj.availabilityduringnonoperationalhours. Para guardar su selección, pulse Aceptar g. Para asegurarse de que la consola puede visualizar todos los elementos, cambie el número de elementos que se permiten por página de todos a un Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 191 número determinado. Haga clic en Configuración. En la lista Lista de elementos por página, cambie el número de elementos por página de Todos por un número. h. Para guardar el widget, pulse el botón Guardar y salir en la barra de herramientas. Resultados Los datos de Proveedor de datos de interfaz de usuario se visualizan como una gráfica circular en la consola. Visualización de mashups de datos de dos servicios web en una tabla Puede utilizar políticas de Netcool/Impact para crear mashups de datos de distintos orígenes, como por ejemplo servicios web. También puede utilizar la consola y Proveedor de datos de interfaz de usuario para visualizar los datos de estos mashups. Acerca de esta tarea El ejemplo siguiente utiliza una política creada en Netcool/Impact para recuperar datos de dos servicios web distintos. La política utiliza una matriz para agrupar los resultados. Una vez que se haya creado la política, puede utilizar un widget Tabla para visualizar el mashup de datos. Procedimiento 1. En el editor de políticas, cree una política denominada TestArrayOfObjectsWebService. Por ejemplo, cree la política siguiente. Esta política se basa en el WSDL en http://wsf.cdyne.com/WeatherWS/ Weather.asmx?WSDL. Cree la política de la forma siguiente: a. Defina el paquete que se ha definido al compilar el archivo WSDL en Netcool/Impact. WSSetDefaultPKGName(’weather’); b. Especifique los parámetros. GetCityWeatherByZIPDocument=WSNewObject("com.cdyne.ws.weatherws. GetCityWeatherByZIPDocument"); _GetCityWeatherByZIP=WSNewSubObject(GetCityWeatherByZIPDocument, "GetCityWeatherByZIP"); _ZIP = ’07002’; _GetCityWeatherByZIP[’ZIP’] = _ZIP; WSParams = {GetCityWeatherByZIPDocument}; c. Especifique el nombre de servicio web, punto final y método. WSService = ’Weather’; WSEndPoint = ’http://wsf.cdyne.com/WeatherWS/Weather.asmx’; WSMethod = ’GetCityWeatherByZIP’; d. Utilice la función de políticas GetbyXpath para obtener el valor para el elemento que desea. nsMapping= NewObject(); nsMapping.tns = "http://ws.cdyne.com/WeatherWS/"; nsMapping.xsd="http://www.w3.org/2001/XMLSchema";nsMapping.soap="http://www.w3.org/2003/05/soap-envelope" ; nsMapping.xsi="http://www.w3.org/2001/XMLSchema-instance"; log("Se va a invocar la llamada de servicio web GetCityWeatherByZIP ......"); WSInvokeDLResult = WSInvokeDL(WSService, WSEndPoint, WSMethod, WSParams); 192 Netcool/Impact: Guía de soluciones log("Resultado devuelto de la llamada de servicio web GetCityWeatherByZIP: " +WSInvokeDLResult); Result1=GetByXPath(""+WSInvokeDLResult, nsMapping, xPathExpr); Object1=NewObject(); Object1.City=Result1.Result.City[0]; Object1.State=Result1.Result.State[0]; Object1.Temperature=Result1.Result.Temperature[0]; e. Inicie la llamada WebService. log("Se va a invocar la llamada de servicio web GetCityWeatherByZIP ......"); WSInvokeDLResult = WSInvokeDL(WSService, WSEndPoint, WSMethod, WSParams); log("Resultado devuelto de la llamada de servicio web GetCityWeatherByZIP: " +WSInvokeDLResult); f. Defina otra llamada. _ZIP = ’23455’; _GetCityWeatherByZIP[’ZIP’] = _ZIP; WSParams = {GetCityWeatherByZIPDocument}; log("Se va a invocar la llamada de servicio web GetCityWeatherByZIP ......"); WSInvokeDLResult = WSInvokeDL(WSService, WSEndPoint, WSMethod, WSParams); log("Resultado devuelto de la llamada de servicio web GetCityWeatherByZIP: " +WSInvokeDLResult); //Recuperar los valores de los elementos y asignarlos a un objeto xPathExpr = "//tns:State/text() |//tns:City/text() |//tns:Temperature/text()"; g. Defina y asigne valores a los objetos de Impact. xPathExpr = "//tns:State/text() |//tns:City/text() |//tns:Temperature/text()"; Result2=GetByXPath(""+WSInvokeDLResult, nsMapping, xPathExpr); Object2=NewObject(); Object2.City=Result2.Result.City[0]; Object2.State=Result2.Result.State[0]; Object2.Temperature=Result2.Result.Temperature[0]; CustomObjs= {Object1,Object2}; log(CustomObjs); 2. Defina los parámetros de salida de usuario para la matriz de objetos. Debe crear los siguientes parámetros de salida de usuario para la matriz que contiene la política que ha creado. En el editor de políticas, pulse el icono Configurar parámetros de usuario para crear los parámetros de salida para la matriz de objetos. Tabla 53. Parámetros de salida de MyArrayObj1 Campo Entrada de usuario Nombre MyArrayofCustomObjects Nombre de variable de política CustomObjs Formato Matriz de objeto de Impact Debe especificar el nombre exacto de la matriz, tal como se muestra en la política en el campo Nombre de variable de política. 3. Cree una página. a. Abra la consola. b. Para crear una página, pulse Valores > Nueva página. c. Especifique Página para matriz de objetos en el campo Nombre de página. d. Para guardar la página, pulse Aceptar. 4. Cree un widget Tabla. a. Abra la página Página para matriz de objetos que ha creado. b. Arrastre el widget Tabla al área de contenido. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 193 c. Para configurar los datos de widget, pulse el icono de flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos MyArrayofCustomObjects que pertenece al origen de datos TestArrayOfObjectsWebService. La información del conjunto de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. e. Se visualiza la interfaz de usuario Valores de visualización. De forma predeterminada, el sistema visualiza todas las columnas disponibles. Puede cambiar las columnas visualizadas en la sección Valores de visualización de la interfaz de usuario. También puede seleccionar las opciones de selección de fila y tipo de selección de fila. f. Para asegurarse de que la política se ejecuta cuando se visualiza el widget, seleccione el recuadro de selección executePolicy. Pulse Aceptar. g. Para guardar el widget, pulse el botón Guardar y salir en la barra de herramientas. Resultados Al abrir el widget Tabla, se visualizan en una tabla los datos de dos orígenes distintos. Visualización de mashups de datos con una matriz de objetos de impacto Puede utilizar las políticas de Netcool/Impact para crear mashups de datos de la función de políticas DirectSQL y otros orígenes. Puede utilizar la consola y Proveedor de datos de interfaz de usuario para visualizar los datos de estos mashups en una tabla. Procedimiento 1. En el editor de políticas, cree una política denominada MultipleObjectsPolicy. La política utiliza la función de política DirectSQL para recuperar los datos del origen de datos defaultobjectserver. La política también recupera datos de otro origen. Cree la siguiente política denominada MultipleObjectsPolicy. Log("Política de prueba con varios objetos distintos..."); NodesVarJS=DirectSQL(’defaultobjectserver’,"SELECT Node,Identifier, Severity from alerts.status", null); Log("ClassOf() " + ClassOf(NodesVarJS)); Obj1=NewObject(); Obj1.fname="MyFirstName"; Obj1.lname="MyLastName"; Obj1.city="MyCity"; MyObjsAll={Obj1}; i=0; while(i < length(NodesVarJS) ) { O = newObject(); O.Node=NodesVarJS[i].Node; O.Identifier=NodesVarJS[i].Identifier; O.Severity=NodesVarJS[i].Severity; MyObjsAll = MyObjsAll + {O}; i = i +1; } Log("MyObjs is " + MyObjsAll); 2. Defina los parámetros de salida de usuario para la matriz de objetos en la política. 194 Netcool/Impact: Guía de soluciones En el editor de políticas, pulse el icono Configurar parámetros de usuario para crearlos parámetros de salida para la matriz de objetos. Tabla 54. Parámetro de salida de MyObjsAll Campo Entrada de usuario Nombre MyArrayofObjects Nombre de variable de política MyObjsAll Formato Matriz de objeto de Impact Debe especificar el nombre exacto de la matriz, tal como se muestra en la política en el campo Nombre de variable de política. 3. Cree una página. v Abra la consola. v Para crear una página, pulse Valores > Nueva página. v Especifique Página para tabla en el campo Nombre de página. v Guarde la página. 4. Cree un widget Tabla. a. Abra la página Página para tabla que ha creado. b. Arrastre el widget Tabla al área de contenido. c. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos MyArrayofObjects que pertenece al origen de datos MultipleObjectsPolicy. La información del conjunto de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. e. Se visualiza la interfaz de usuario Valores de visualización. De forma predeterminada, el sistema visualiza todas las columnas disponibles. Puede cambiar las columnas visualizadas en la sección Valores de visualización de la interfaz de usuario. También puede seleccionar las opciones de selección de fila y tipo de selección de fila. f. Para asegurarse de que la política se ejecuta cuando se visualiza el widget, seleccione el recuadro de selección executePolicy. Pulse Aceptar. g. Para guardar el widget, pulse el botón Guardar y salir en la barra de herramientas. Resultados Al visualizar el widget Tabla, los datos de la función de políticas DirectSQL y el otro origen se visualizan en una tabla. Visualización de datos generados por la función de políticas GetByFilter en una lista Puede utilizar el widget de lista para visualizar datos de una política de Netcool/Impact que contiene la función de políticas GetByFilter en la consola. Procedimiento 1. En el editor de políticas de Netcool/Impact, cree una política de Netcool/Impact. Cree una política denominada IPLGetByFilterPolicy que incluya la función de políticas GetByFilter. Desea visualizar los datos generados por la función de políticas. En este ejemplo, el filtro se define estadísticamente en la política. En Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 195 una situación en el mundo real, podría pasar los valores dinámicamente de Proveedor de datos de interfaz de usuario a la función de políticas. Log (“Executing IPL Impact Policy”); filter = "SERVICEREQUESTIDENTIFIER = 1"; GetbyFilter ('dataTypeforDemoUIDP’, filter, false); 2. Defina el parámetro de salida para los elementos de datos. Este parámetro pasa a estar disponible a Proveedor de datos de interfaz de usuario y se visualiza como un tipo de datos en la consola. En el editor de políticas, pulse el icono Configurar parámetros de usuario y el pulsador Parámetro de salida de política:Nuevo para crear los parámetros de salida para los elementos de datos. Tabla 55. Parámetros de salida de usuario para elementos de datos Campo Entrada Nombre DataFromPolicy Nombre de variable de política DataItems Formato Datatype Nombre de origen de datos localDB2UIDPTest Nombre de tipo de datos dataTypeforUIDPdemo 3. Cree una página en la consola. a. Abra la consola. b. Para crear una página, pulse Valores > Nueva página. c. Especifique Página para lista en el campo Nombre de página. d. Para guardar la página, pulse Aceptar. 4. Cree un widget de lista. a. Abra la página Página para lista que ha creado. b. Arrastre el widget Lista al área de contenido. c. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos DataFromPolicy perteneciente al origen de datos IPLGetByFilterPolicy. La información del conjunto de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. e. Se visualiza la interfaz de usuario Valores de visualización. Debe seleccionar valores para la etiqueta, el estado, la descripción y la indicación de fecha y hora. También puede configurar diversos valores opcionales como el tamaño de la página. f. Para asegurarse de que la política se ejecuta cuando se visualiza el widget, seleccione el recuadro de selección executePolicy. Pulse Aceptar. g. Para guardar el widget, pulse el botón Guardar y salir en la barra de herramientas. Resultados Al visualizar el widget se ejecutará la política. La información incluida en los resultados de política se añade al widget y se visualiza como lista. 196 Netcool/Impact: Guía de soluciones Visualización de datos generados por la función de políticas DirectSQL en un indicador analógico Puede utilizar el siguiente widget de indicador analógico para visualizar datos de una política de Netcool/Impact que contiene la función de políticas DirectSQL en la consola. Procedimiento 1. En el editor de políticas en Netcool/Impact, cree una política que utilice la función de políticas DirectSQL. Cree la siguiente política que incluye la función de políticas DirectSQL denominada TestDirectSQL: Log(“TestDirectSQL); query= "select SUM(VALUE) as sumvalue, HISTORYRESOURCENAME, METRICNAME , ( HISTORYRESOURCENAME || METRICNAME ) as key from TBSMHISTORY.HISTORY_VIEW_RESOURCE_METRIC_VALUE; DirectSQL (’directSQLSample’.query.false); Esta política accede a los datos de una tabla de base de datos y suma una columna determinada de la tabla para crear un valor de suma. La política también agrupa diversas columnas. 2. Defina los parámetros de salida para la política. Para definir los parámetros de salida para la política, pulse el icono Configurar parámetros de usuario. Tabla 56. Parámetros de salida para la política IPLDirectSQL Campo Entrada Nombre IPLDirectSQL Nombre de variable de política DataItems Formato DirectSQL Debe crear también nuevos valores de esquema personalizado para representar los valores contenidos en los campos de la función de políticas DirectSQL. Tras seleccionar DirectSQL en el campo Formato, el sistema visualiza el icono Abrir el Editor de definiciones de esquema. Para crear un valor, pulse el icono. Debe especificar un nombre para cada valor y seleccionar un formato. Para este ejemplo, cree los siguientes valores de esquema personalizado: Tabla 57. Valores de esquema personalizado para el parámetro de salida IPLDirectSQL Nombre Valor HISTORYRESOURCENAME Serie METRICNAME Serie sumvalue Flotante 3. Cree una página. a. Abra la consola. b. Para crear una página, pulse Valores > Nueva página. c. Especifique Página para indicador analógico en el campo Nombre de página. d. Para guardar la página, pulse Aceptar. 4. Cree un widget de indicador analógico a. Abra la página Página para indicador analógico que ha creado. b. Arrastre el widget Indicador analógico al área de contenido. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 197 c. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos IPLDirectSQL perteneciente al origen de datos TestDirectSQL. La información del conjunto de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. e. Se visualiza la interfaz de usuario Valores de visualización. Seleccione el valor que desea visualizar en el indicador en el campo Valor. En este ejemplo, especifica SUMVALUE en el campo. También puede seleccionar diversos otros valores opcionales para el indicador como por ejemplo un valor mínimo, un valor máximo y una unidad de medida. f. Para asegurarse de que la política se ejecuta cuando se visualiza el widget, seleccione el recuadro de selección executePolicy. Pulse Aceptar. g. Para guardar el widget, pulse el botón Guardar y salir en la barra de herramientas. Resultados Al visualizar el widget, la política se ejecuta y la información contenida en los resultados de política se visualiza como indicador. Visualización de datos con widgets de árbol y topología Puede utilizar los widgets de topología y árbol con Proveedor de datos de interfaz de usuario para visualizar datos jerárquicos y topológicos de una política de Netcool/Impact en la consola. Acerca de esta tarea El widget de árbol y topología se utiliza para visualizar una jerarquía con datos topológicos en la consola. Este ejemplo muestra cómo hacerlo para una política específica. Para obtener más información sobre los requisitos de utilización de estos widgets, consulte “Integración del widget de árbol con un objeto de Impact o una matriz de objetos de Impact” en la página 181 y “Integración de datos de una política con el widget de topología” en la página 184. Procedimiento 1. En el editor de políticas en Netcool/Impact, cree una política denominada TestTreeTopoPolicy. La política utiliza la función de políticas ArrayofImpactObjects para recuperar información sobre las direcciones. Este información es jerárquica. Las entradas se ordenan por número, ciudad y país. También es recomendable añadir información topográfica sobre el estado de una entrada a la política. MyObject1=NewObject(); MyObject1.country="United States"; MyObject1.city="New York"; MyObject2=NewObject(); MyObject2.country="United States"; MyObject2.city="Philadelphia"; MyObject3=NewObject(); MyObject3.country="England"; MyObject3.city="London"; MyArrayOfObjects={MyObject1,MyObject2,MyObject3}; 198 Netcool/Impact: Guía de soluciones 2. A continuación, debe hacer que la política sea compatible con el widget de árbol. Para hacer que la política sea compatible con el widget de árbol, debe añadir los parámetros UITreeNodeId y UITreeNodeParent a la política. MyObject1=NewObject(); MyObject1.UITreeNodeId=0; MyObject1.country="United States"; MyObject1.city="New York"; MyObject2=NewObject(); MyObject2.UITreeNodeId=1; MyObject2.UITreeNodeParent=0; MyObject2.country="United States"; MyObject2.city="Philadelphia"; MyObject3=NewObject(); MyObject3.UITreeNodeId=2; MyObject3.UITreeNodeParent=1; MyObject3.country="England"; MyObject3.city="London"; MyArrayOfObjects={MyObject1,MyObject2,MyObject3} 3. A continuación, debe hacer que la política sea compatible con el widget de topología. Para hacer que la política sea compatible con el widget de árbol, debe añadir los campos UITreeNodeType, UITreeNodeLabel y UITreeNodeStatus a la política. MyObject1=NewObject(); MyObject1.UITreeNodeId=0; MyObject1.country="United States"; MyObject1.city="New York"; UITreeNodeType="GRAPH"; UITreeNodeLabel="NY"; UITreeNodeStatus="Major"; MyObject2=NewObject(); MyObject2.UITreeNodeId=1; MyObject2.UITreeNodeParent=0; MyObject2.country="United States"; MyObject2.city="Philadelphia"; UITreeNodeLabel="PA"; UITreeNodeStatus="Minor"; MyObject3=NewObject(); MyObject3.UITreeNodeId=2; MyObject3.UITreeNodeParent=1; MyObject3.country="England"; MyObject3.city="London"; UITreeNodeLabel="LN"; UITreeNodeStatus="Warning"; MyArrayOfObjects={MyObject1,MyObject2,MyObject3}; 4. Defina los parámetros de salida de usuario para la matriz de objetos en la política. Tabla 58. Parámetros de salida de usuario para MyObjArray Campo Entrada Nombre MyObjArray Nombre de variable de política MyArrayOfObjects Formato Matriz de objeto de Impact 5. Cree una página en la consola. a. Abra la consola. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 199 b. Para crear una página, pulse Valores > Nueva página. c. Especifique Página para árbol y topología en el campo Nombre de página. d. Para guardar la página, pulse Aceptar. 6. Cree un widget de topología y árbol en la consola. a. Abra la página Página para árbol y topología que ha creado. b. Arrastre el widget Árbol al área de contenido. c. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos MyObjArray que pertenece al origen de datos TestTreeTopoPolicy. La información del conjunto de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. e. Se visualiza la ventana Valores de visualización. Para asegurarse de que la política se ejecuta cuando se visualiza el widget, seleccione el recuadro de selección executePolicy. Pulse Aceptar. f. Para guardar el widget, pulse el botón Guardar y salir de la barra de herramientas. g. Arrastre el widget Topología al área de contenido. h. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. i. Seleccione el conjunto de datos. Seleccione el tipo de datos MyObjArray que pertenece al origen de datos TestTreeTopoPolicy. La información del conjunto de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. j. Se visualiza la ventana Valores de visualización. Para asegurarse de que la política se ejecuta cuando se visualiza el widget, seleccione el recuadro de selección executePolicy. Pulse Aceptar. k. Para guardar el widget, pulse el botón Guardar y salir en la barra de herramientas. Resultados Los datos de Proveedor de datos de interfaz de usuario se visualizan en la consola junto con el estado. Filtrado de la salida de datos por una política en la consola Si visualiza datos de una política que contiene parámetros de tiempo de ejecución, puede utilizar los parámetros de tiempo de ejecución para filtrar los valores que se visualizan en la consola. Procedimiento 1. Cree una política que contenga parámetros de tiempo de ejecución. En este ejemplo, cree una política denominada TestKey que contenga la función de políticas GetByKey. El parámetro de tiempo de ejecución es el parámetro Key. DataType = "Node"; MaxNum = 1; MyCustomers = GetByKey(DataType, Key, MaxNum); 2. Cree el parámetro de tiempo de ejecución del usuario Key. En el editor de políticas, pulse el icono Configurar parámetros de usuario para crear el parámetro de tiempo de ejecución de usuario. 200 Netcool/Impact: Guía de soluciones Tabla 59. Parámetro de tiempo de ejecución de usuario de nodo Campo Entrada Nombre Node Nombre de variable de política Clave Formato Serie 3. Cree una página. v Abra la consola. v Para crear una página, pulse Valores > Nueva página. v Especifique Página para gráfica de barras en el campo Nombre de página. v Guarde la página. 4. Cree un widget de gráfica de barras. a. Abra la página Página para gráfica de barras que ha creado. b. Arrastre el widget Gráfica de barras al área de contenido. c. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos DataFromPolicy perteneciente al origen de datos TestKey. La información del conjunto de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. e. Se visualiza la interfaz de usuario Valores de visualización. f. Los parámetros de tiempo de ejecución disponibles para la política se listan en Configurar conjunto de datos opcional. Puede especificar aquí los valores que desea filtrar. En este ejemplo, el sistema visualiza un campo denominado Clave. Si especifica aquí un valor, por ejemplo, R12345, sólo se visualizan los datos de las filas que contienen el valor de campo de clave R12345. De esta forma, puede filtrar los valores para los parámetros de tiempo de ejecución en la consola. g. Para asegurarse de que la política se ejecuta cuando se visualiza el widget, seleccione el recuadro de selección executePolicy. Pulse Aceptar. h. Para guardar el widget, pulse el botón Guardar y salir en la barra de herramientas. Cómo pasar valores de parámetros de un widget a una política Puede utilizar widgets para pasar valores como parámetros de tiempo de ejecución a políticas en Netcool/Impact. Acerca de esta tarea En este ejemplo, desea poder enviar un correo electrónico que contiene información contextual de un widget Tabla. La información se pasa como un valor de parámetro de tiempo de ejecución del widget en la consola a la política en Netcool/Impact. Este ejemplo utiliza el widget de conexión. Puede experimentar problemas al arrastrar y soltar el widget. Éste es un problema conocido con Tivoli Integrated Portal. Para obtener más información, consulte http://www-01.ibm.com/support/ docview.wss?uid=swg21626092. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 201 Procedimiento 1. Cree una política. Por ejemplo, cree la siguiente política denominada DB2Emailpolicy que recupera valores para algunas filas de una tabla de DB2 y envía estos valores a una dirección de correo electrónico: Address = "[email protected]"; Subject = "Notificación de Netcool/Impact"; Message = EventContainer.Node + " ha indicado la condición de error siguiente: " + EventContainer.Summary; Sender = "impact"; ExecuteOnQueue = false; SendEmail(null, Address, Subject, Message, Sender, ExecuteOnQueue); 2. Cree una página en la consola. a. Abra la consola. b. Pulse Valores > Página. c. Especifique Pageforbutton en el campo Nombre de página. d. Para guardar la página, pulse Aceptar. 3. Cree un widget Tabla que visualice los datos de la base de datos DB2. a. Abra la página Pageforbutton. b. Arrastre el widget Tabla al área de contenido. c. Para configurar los datos de widget, pulse el icono de flecha abajo y pulse Editar. d. Seleccione el conjunto de datos. Utilice el recuadro de búsqueda o el botón Mostrar todo para buscar el conjunto de datos que representa la tabla de base de datos DB2. e. Para guardar el widget, pulse el botón Guardar. 4. Cree un widget Botón. Especifique el nombre del botón y especifique el parámetro que desea visualizar en la interfaz de usuario de la consola. a. Arrastre el widget Botón que ha creado en el área de contenido. b. Especifique un nombre. En este ejemplo, especifique Emailbutton. c. Seleccione el conjunto de datos. En este ejemplo, utilice el recuadro de búsqueda o el botón Mostrar todo para buscar el conjunto de datos que representa la política que ha creado y selecciónelo. d. Para asegurarse de que se ejecute la política cuando el usuario pulse el botón, seleccione el botón de selección executePolicy. e. Para guardar el widget Botón, pulse Guardar. 5. Cree una conexión. a. Pulse el icono Mostrar conexión y pulse el botón Nueva conexión. b. Seleccione el widget Tabla como el suceso de origen de la nueva conexión. Seleccione Tabla > NodeClickOn. c. Seleccione el destino de la conexión. Seleccione el widget Botón que ha creado. d. Seleccione Ninguno para la transformación. e. Para guardar la conexión, pulse Aceptar y pulse el botón Guardar en la barra de herramientas de la página. Resultados Después de completar esta tarea, el botón Enviar se visualiza en la consola. Cuando un usuario pulsa el botón Enviar, la información contenida en la fila de la tabla se envía como un correo electrónico a la dirección especificada por la política. 202 Netcool/Impact: Guía de soluciones Cómo pasar valores de parámetro de una tabla a un indicador Este ejemplo demuestra cómo puede utilizar políticas Netcool/Impact para pasar variables como parámetros de tiempo de ejecución de un widget a una política y a otro widget. Acerca de esta tarea En este ejemplo, los usuarios desean seleccionar filas en una tabla y visualizar el estado para la fila en un widget de indicador. Cree 2 políticas Netcool/Impact para facilitar esto. Una política es la política de publicador y proporciona datos en un parámetro de salida para la segunda política, la política de suscriptor. La política de suscriptor recibe datos de la política de publicador en un parámetro de tiempo de ejecución de política y envía los resultados como parámetros de salida. Los datos contenidos en el parámetro de salida se visualizan a continuación como un indicador en la consola. La política de publicador recupera los datos SiteStatus de ObjectServer. La política de suscriptor recupera datos relacionados de la base de datos DB2. Procedimiento 1. Cree la política de publicador. La política siguiente se denomina PolicyEventingPublisher y utilice la función de política DirectSQL para recuperar datos del origen de datos defaultobjectserver. Debe crear un nuevo campo de entero llamado SiteStatus en el ObjectServer si todavía no lo ha hecho. Log("Policies Eventing From OS..."); DataFromOS=DirectSQL(’defaultobjectserver’, "SELECT SiteStatus,Node,Identifier from alerts.status",false); Cree el parámetro de salida para que el widget pueda visualizar los datos. Tabla 60. Parámetro de salida para DatafromOS Campo Entrada Nombre DatafromOS Nombre de variable de política DatafromOS Formato DirectSQL / Tipo de datos de proveedor de IU Cree los valores de esquema personalizados para los campos que desea visualizar en la consola. Debe crear 3 valores de esquema personalizado. También debe seleccionar la casilla de verificación Campo clave para el valor SiteStatus. Tabla 61. Valor de esquema personalizado para SiteStatus Campo Entrada Nombre SiteStatus Formato Entero Tabla 62. Valor de esquema personalizado para Nodo Campo Entrada Nombre Node Formato Serie Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 203 Tabla 63. Esquema personalizado valor para identificador Campo Entrada Nombre Identifier Formato Serie 2. Cree la política de suscriptor. La política siguiente se denomina PolicyEventingSubscriber y utiliza la función GetByFilter para recuperar el valor de SiteStatus emitido por la política de publicador. La política de publicador recupera los datos SiteStatus de ObjectServer. La política de suscriptor recupera datos relacionados de la base de datos DB2. Log("Demo Policies Eventing From DB2..."); Filter="SiteStatus="+ SiteStatus; DataFromDB2=GetByFilter(’MachineInfo’,Filter,false); Log(DataFromDB2); Cree el parámetro de tiempo de ejecución de política. Tabla 64. Parámetro de tiempo de ejecución SiteStatus Campo Entrada Nombre SiteStatus Nombre de variable de política SiteStatus Formato DirectSQL / Tipo de datos de proveedor de IU Cree el parámetro de tiempo de salida de política. Tabla 65. Parámetro de salida DatafromDB2 Campo Entrada Nombre DatafromDB2 Nombre de variable de política DatafromDB2 Formato Datatype Nombre de origen de datos DB2Source Nombre de tipo de datos MachineInfo 3. Cree una página en la consola. a. Abra la consola. b. Para crear una página, pulse Valores > Nueva página. c. Especifique PageforMachineInfo en el campo Nombre de página. d. Guarde la página. 4. Cree un widget Tabla. a. Abra la página PageforMachineInfo que ha creado. b. Arrastre el widget Tabla al área de contenido. c. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos DatafromOS que pertenece al origen de datos PolicyEventingPublisher. El tipo de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. 204 Netcool/Impact: Guía de soluciones e. Se visualiza la interfaz de usuario Valores de visualización. De forma predeterminada, el sistema visualiza todas las columnas disponibles. Puede cambiar las columnas visualizadas en la sección Valores de visualización de la interfaz de usuario. También puede seleccionar las opciones de selección de fila y tipo de selección de fila. f. Para asegurarse de que la política se ejecuta cuando se visualiza el widget, seleccione el recuadro de selección executePolicy. Pulse Aceptar. g. Para guardar el widget, pulse el botón Guardar y salir en la barra de herramientas. 5. Cree un widget de indicador. a. Abra la página PageforMachineInfo que ha creado. b. Arrastre el widget Indicador analógico al área de contenido. c. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos DatafromDB2 que pertenece al origen de datos PolicyEventingSubscriber. El tipo de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. e. Se visualiza la interfaz de usuario Valores de visualización. Seleccione el valor que desea visualizar en el indicador en el campo Valor. En este ejemplo, seleccione SiteStatus de la lista. También puede seleccionar diversos otros valores opcionales para el indicador como por ejemplo un valor mínimo, un valor máximo y una unidad de medida. f. Para asegurarse de que la política se ejecuta cuando se visualiza el widget, seleccione el recuadro de selección executePolicy. Pulse Aceptar. g. Para guardar el widget, pulse el botón Guardar y salir en la barra de herramientas. Resultados Cuando un usuario selecciona una fila en el widget de tabla, se muestra SiteStatus en el widget de indicador. Visualización de un mashup de datos desde dos orígenes de IBM Tivoli Monitoring Puede utilizar Netcool/Impact para visualizar datos desde dos orígenes diferentes en IBM Tivoli Monitoring. Antes de empezar Encuentre los detalles de configuración de cada Proveedor de datos de interfaz de usuario que desea utilizar. Por ejemplo, si desea conectar con un sistema IBM Tivoli Monitoring, debe recuperar la información siguiente para Tivoli Enterprise Monitoring Server Proveedor de datos de interfaz de usuario : v Usuario v Password v Puerto v URL base Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 205 Acerca de esta tarea Consejo: También puede utilizar este procedimiento para obtener datos de Tivoli Monitoring 6.3 para fines de gestión de sucesos, la única diferencia es que omite el paso que describe cómo crear los parámetros de salida de usuario para las políticas. Procedimiento 1. Utilice DSA del Proveedor de datos de interfaz de usuario para crear dos orígenes de datos. Cada origen de datos se conecta con un sistema IBM Tivoli Monitoring diferente. Por ejemplo, cree los orígenes de datos siguientes: v El origen de datos 1 recupera datos de ITM1 v El origen de datos 2 recupera datos de ITM2 a. Cree el origen de datos que recupera datos de ITM1: 1) Especifique ITM en el campo Nombre de origen de datos. 2) Especifique el nombre de usuario y la contraseña para la base de datos. 3) Complete los otros campos, según se requiera. 4) Guarde el origen de datos. b. Cree el origen de datos que recupera datos de ITM2: 1) Especifique ITM en el campo Nombre de origen de datos. 2) Especifique el nombre de usuario y la contraseña para la base de datos. 3) Complete los otros campos, según se requiera. 4) Guarde el origen de datos. Para obtener más información sobre cómo crear un origen de datos para DSA de Proveedor de datos de interfaz de usuario , consulte la sección sobre la creación de un origen de datos de Proveedor de datos de interfaz de usuario en la Guía de DSA de Netcool/Impact. 2. Cree dos tipos de datos para cada origen de datos que ha creado en el paso anterior. Más adelante, combine los datos de dos tipos de datos que pertenecen al mismo origen de datos en un solo objeto. A continuación, combine los datos de dos objetos de modo que los datos de diferentes sistemas se fusionen. Por ejemplo, cree los tipos de datos siguientes: v Datatype1A - seleccione Tivoli Enterprise Monitoring Agent v Datatype1B - seleccione Tivoli Enterprise Monitoring Agent v Datatype2A - seleccione Tivoli Enterprise Monitoring Agent v Datatype2B - seleccione Tivoli Enterprise Monitoring Agent a. Cree los tipos de datos de la forma siguiente, cambiando el nombre de cada tipo de datos: 1) Especifique Datatype1A como nombre y complete los campos necesarios. 2) Para habilitar el tipo de datos, seleccione la casilla de verificación Habilitado. 3) Seleccione los campos de clave para el tipo de datos. 4) Guarde el tipo de datos. Para obtener más información sobre cómo crear un tipo de datos para DSA de Proveedor de datos de interfaz de usuario , consulte la sección sobre la creación de un tipo de datos de Proveedor de datos de interfaz de usuario en la Guía de DSA de Netcool/Impact. 206 Netcool/Impact: Guía de soluciones 3. Para combinar los datos de diferentes orígenes, cree una política en Netcool/Impact que utilice la función GetByFilter. Para este ejemplo, debe crear las matrices siguientes para combinar los datos de diferentes orígenes: v Array1A = GetByFilter() v Array1B = GetByFilter() v Array2A = GetByFilter() v Array2B = GetByFilter() Por ejemplo, la política siguiente utiliza la función GetByFilter para combinar los datos del origen de datos ITM_DS1 en un solo objeto. a. El parámetro de salida de la política es cpuLinuxITM={};. b. Datatype1A recupera datos de Tivoli Enterprise Monitoring Agent y también recupera los datos de dirección IP de cada nodo: ipaddress01=""; DataType="datatype1A"; Filter="&param_SourceToken=paramValue"; iparray=GetByFilter(DataType, Filter, false); count=0; while(count<Length(iparray)){ if( (iparray[count].IPVERSION != "IPv6")&&(iparray[count]. IPADDRESS!="127.0.0.1")){ ipaddress01= iparray[count].IPADDRESS; } count = count +1; } c. Datatype1B recupera datos de un Tivoli Enterprise Monitoring Agent y también proporciona datos de consumo de procesador para cada nodo. La política crea una matriz de métricas para cada nodo supervisado. También mejora esta información con la dirección IP: DataType="datatype1B"; Filter="&param_SourceToken=paramValue&sort=BUSYCPU"; MyFilteredItems = GetByFilter( DataType, Filter, false ); index = 0; if(Num > index){ while(index<Num){ cpu=NewObject(); cpu.TIMESTAMP= MyFilteredItems[index].TIMESTAMP; cpu.ORIGINNODE= MyFilteredItems[index].ORIGINNODE; cpu.BUSYCPU= MyFilteredItems[index].BUSYCPU; cpu.IPADDRESS=ipaddress01; cpuLinuxITM = cpuLinuxITM+{cpu}; index=index+1; } } Log(" Finished collecting cpu usage from Metrics Agant :" + DataType ); Para obtener más información sobre la utilización de la función GetByFilter con el Proveedor de datos de interfaz de usuario , consulte el tema sobre cómo acceder a salida de tipos de datos mediante la función GetByFilter en Netcool/Impact Solutions Guide. 4. Cree los parámetros de salida de usuario para las políticas. En este ejemplo, cpuLinuxITM es el parámetro de salida que se define en la política. Debe crear un parámetro de salida para cpuLinuxITM tal como se describe en la tabla. Para crear un parámetro de salida de usuario, abra el editor de políticas y pulse el icono Configurar parámetros de usuario y el botón Parámetro de salida de política:Nuevo. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 207 Tabla 66. Parámetro de salida ITM1 Campo Entrada Nombre ITM1 Nombre de variable de política cpuLinuxITM Formato Matriz de objetos de Impact Este parámetro garantiza que la política se expone como parte de Netcool/Impact Proveedor de datos de interfaz de usuario . Para obtener información sobre cómo configurar parámetros de usuario, consulte el tema sobre cómo configurar parámetros de usuarios en Netcool/Impact Solutions Guide. 5. Cree un origen de datos y un tipo de datos que se basen en la política. En este ejemplo, cree el origen de datos como sigue: a. Seleccione ITM_mashup_policy en la lista del campo Nombre de origen de datos. b. Especifique el nombre de usuario y la contraseña para la base de datos. c. Seleccione Netcool/Impact Proveedor de datos de interfaz de usuario , Impact_NCICLUSTER, como proveedor. d. Complete los otros campos, según se requiera. e. Guarde el origen de datos. Cree el tipo de datos de la forma siguiente: a. Especifique ITM_mashup_dt como nombre y complete los pasos necesarios. b. Para garantizar que el tipo de datos es compatible con el proveedor de datos de interfaz de usuario, seleccione la casilla de verificación Proveedor de datos de IU: habilitado. c. Seleccione los campos de clave para el tipo de datos. d. Guarde el tipo de datos. 6. Para confirmar que la política devuelve los datos correctos cuando se ejecuta, pulse con el botón derecho del ratón el tipo de datos y seleccione Ver elementos de datos. Especifique &executePolicy=true en el filtro y actualice. 7. Cree una página en la consola. a. Abra la consola. b. Para crear una página, pulse Valores > Nueva página. c. Especifique Página para mashup ITM en el campo Nombre de página. d. Guarde la página. 8. Cree un widget Tabla que visualice los datos del tipo de datos de la política. a. Abra la página Página para mashup de ITM que ha creado. b. Arrastre el widget Tabla al área de contenido. c. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos ITM_mashup_dt que pertenece al origen de datos ITM_mashup_policy. El tipo de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. e. Se visualiza la interfaz de usuario Valores de visualización. Especifique los valores que desea utilizar. Puede seleccionar varias líneas. También puede seleccionar un texto para que se visualice como ayuda contextual. Pulse Aceptar. 208 Netcool/Impact: Guía de soluciones f. Para guardar el widget, pulse el botón Guardar y salir en la barra de herramientas. Resultados Después de crear el widget de tabla, los mismos datos que se han visualizado en el paso 6 de Netcool/Impact se visualizan en la consola. Visualización de datos de los paneles de instrumentos de autoservicio de Netcool/Impact El widget de paneles de instrumentos de autoservicio de Netcool/Impact está diseñado para permitir a los usuarios o administradores crear paneles de instrumentos. Los paneles de instrumentos de autoservicio pueden aceptar entrada del usuario mediante un widget Formulario de entrada personalizable y pueden controlar las acciones del usuario mediante un widget Botón. Estos dos widgets interactúan con Netcool/Impact mediante la interfaz de la API Rest de Netcool. Netcool/Impact 6.1.1.1 tiene un proveedor de datos de interfaz de usuario que hace que los datos de Netcool/Impact estén disponibles para que los consuman los widgets de panel de instrumentos de IBM Dashboard Applications Services Hub. El proveedor de datos de interfaz de usuario funciona bien para paneles de instrumentos que estén pensados para uso de sólo lectura pero que no pueden interactuar dinámicamente con políticas de Netcool/Impact. Por ejemplo, puede crear un panel de instrumentos con un widget Tabla que visualice todos los tickets de problema gestionados por Netcool/Impact. Sin embargo, no puede interactuar con los tickets de problema para crear un ticket. Cuando los widgets de paneles de instrumentos de autoservicio de Netcool/Impact se instalan en la consola, tiene la opción de añadir a las visualizaciones existentes. Puede actualizar los datos mediante la ejecución de políticas de Netcool/Impact y realizar determinadas acciones en un conjunto de datos. Instalación de widgets de paneles de instrumentos de autoservicio de Netcool/Impact Para crear paneles de instrumentos personalizados para Netcool/Impact para ver en Jazz for Service Management, puede añadir widgets específicos de Netcool/Impact para ampliar las prestaciones de los paneles de instrumentos que cree. Antes de empezar Para instalar el archivo Impact_SSD_Dashlet.war de Netcool/Impact en Dashboard Application Services Hub Server, debe tener el entorno siguiente. v Un servidor con Netcool/Impact 6.1.1.1 instalado. v Un servidor con IBM Dashboard Applications Services Hub instalado y configurado con una conexión de datos al servidor Netcool/Impact 6.1.1.1. Para obtener información sobre cómo configurar una conexión entre el servidor Impact y Jazz for Service Management, consulte “Configuración de la conexión remota entre Proveedor de datos de interfaz de usuario y la consola” en la página 170. Para obtener más información sobre Jazz for Service Management, consulte el centro de información de Jazz for Service Management disponible en el siguiente Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 209 URL: http://pic.dhe.ibm.com/infocenter/tivihelp/v3r1/index.jsp?topic= %2Fcom.ibm.psc.doc_1.1.0%2Fpsc_ic-homepage.html. Procedimiento 1. Inicie la sesión en el servidor Impact. 2. Vaya al directorio add-ons, %IMPACT%/add-ons/ssd. 3. Copie el archivo Impact_SSD_Dashlet.war en Dashboard Application Services Hub Server. Anote la ubicación donde descarga el archivo. Por ejemplo, C:\build\Impact_SSD_Dashlet.war. 4. En Dashboard Application Services Hub Server, ejecute la herramienta wsadmin mediante uno de los mandatos siguientes: v UNIX: %INSTALL%/JazzSM/profile/bin/wsadmin.sh v Windows: %INSTALL%/JazzSM/profile/bin/wsadmin.bat Donde %INSTALL% es la ubicación de instalación de Jazz for Service Management. 5. Ejecute el mandato siguiente todo en una misma línea para instalar el archivo Impact_SSD_Dashlet.war. $AdminApp update isc modulefile {-operation addupdate -contents "<ImpactSSDWar>" -custom paavalidation=true -contenturi Impact_SSD_Dashlet.war -usedefaultbindings -contextroot /Impact_SSD_Dashlet -MapWebModToVH {{.* .* default_host}}} Donde <ImpactSSDWar> es la ubicación del archivo war copiado. Por ejemplo, C:\build\Impact_SSD_Dashlet.war. 6. Si el mandato wsadmin se ejecuta correctamente sin errores, utilice el mandato siguiente para guardar los cambios: $AdminConfig save 7. Utilice uno de los mandatos siguientes para reiniciar Dashboard Application Services Hub Server: v UNIX: %INSTALL%/JazzSM/profile/bin/stopServer.sh server1 %INSTALL%/JazzSM/profile/bin/startServer.sh server1 v Windows: %INSTALL%/JazzSM/profile/bin/stopServer.bat server1 %INSTALL%/JazzSM/profile/bin/startServer.bat server1 Desinstalación de los widgets de paneles de instrumentos de autoservicio de Netcool/Impact Cómo desinstalar la característica de widgets de paneles de instrumentos de autoservicio de Jazz for Service Management. Antes de empezar Debe eliminar las dependencias de los widgets de paneles de instrumentos de autoservicio de Netcool/Impact de las páginas o portlets existentes en Jazz for Service Management. A continuación, suprima las instancias de los widgets de paneles de instrumentos de Netcool/Impact de la página o los portlets de Jazz for Service Management. Para obtener información sobre cómo suprimir páginas o portlets, consulte la Ayuda en línea de IBM® Dashboard Application Services Hub. 210 Netcool/Impact: Guía de soluciones Procedimiento 1. En Dashboard Application Services Hub Server, utilice uno de los mandatos siguientes para ejecutar la herramienta wsadmin: v UNIX: %INSTALL%/JazzSM/profile/bin/wsadmin.sh v Windows: %INSTALL%/JazzSM/profile/bin/wsadmin.bat 2. Ejecute el mandato siguiente para desinstalar el archivo Impact_SSD_Dashlet.war. $AdminApp update isc modulefile {-operation delete -contenturi Impact_SSD_Dashlet.war } 3. Si el mandato wsadmin se ejecuta satisfactoriamente sin errores, ejecute el mandato siguiente para guardar los cambios: $AdminConfig save 4. Utilice unos de los mandatos siguientes para reiniciar Dashboard Application Services Hub Server. v UNIX: %INSTALL%/JazzSM/profile/bin/stopServer.sh server1 %INSTALL%/JazzSM/profile/bin/startServer.sh server1 v Windows: %INSTALL%/JazzSM/profile/bin/stopServer.bat server1 %INSTALL%/JazzSM/profile/bin/startServer.bat server1 Edición de un widget Formulario de entrada El widget Formulario de entrada es un control de formulario que puede ejecutar políticas de Netcool/Impact con parámetros de tiempo de ejecución definidos por el usuario. El widget Formulario de entrada genera dinámicamente un formulario con un conjunto de campos de entrada que corresponden a los parámetros de tiempo de ejecución de la política. Al enviar el formulario, se ejecuta la política asociada con los parámetros de tiempo de ejecución de los campos de entrada del formulario. y seleccione Editar. 1. En la barra del título, pulse el icono Editar opciones 2. Elija la política de Netcool/Impact que desea ejecutar. Puede buscar la política completando el campo de búsqueda con un nombre completo o parcial y pulsando Buscar. También puede visualizar la lista completa de conjuntos de datos disponibles pulsando el botón Mostrar todo en el centro del panel de resultados. 3. Seleccione ese conjunto de datos y pulse la flecha derecha para mostrar la página Valores de visualización. En la página Valores de visualización, puede configurar el título del botón y los parámetros de política de Netcool/Impact. 4. En la sección Valores necesarios, seleccione la opción executePolicy. 5. Opcional. Seleccione Valores opcionales y añada el nombre del formulario al campo Título. El título también se utiliza para la etiqueta del botón de envío de formulario. 6. Opcional. Configurar parámetros de conjunto de datos opcionales: también puede establecer valores predeterminados para los parámetros de tiempo de ejecución conectados a la política de Netcool/Impact. El widget Formulario de entrada llena el formulario de parámetros de tiempo de ejecución con los valores predeterminados que se establezcan aquí. 7. Pulse Aceptar para implementar los cambios o en Cancelar para desecharlos. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 211 8. En el panel de instrumentos, pulse el botón en el widget para ejecutar la política. Los parámetros de tiempo de ejecución se pasan a la política como parámetros de ejecución de política. Los resultados se visualizan en el widget. Consejo: En el formulario de entrada, puede cambiar manualmente los valores de los campos del formulario, pulsar en los botones y ejecutar de nuevo la política y mostrar los resultados en el panel de instrumentos. Edición de un widget Botón El widget Botón se puede utilizar en una vista de operador para ejecutar una política. Puede editar el widget Botón para utilizar los parámetros de tiempo de ejecución establecidos por la política conectada al botón. y seleccione Editar. 1. En la barra del título, pulse el icono Editar opciones 2. Elija la política de Netcool/Impact que desea ejecutar. Puede buscar la política completando el campo de búsqueda con un nombre completo o parcial y pulsando Buscar. También puede visualizar la lista completa de conjuntos de datos disponibles pulsando el botón Mostrar todo en el centro del panel de resultados. 3. Seleccione ese conjunto de datos y pulse la flecha derecha para mostrar la página Valores de visualización. En la página Valores de visualización, puede configurar el título del botón y los parámetros de política de Netcool/Impact. 4. En la sección Valores necesarios, seleccione la opción executePolicy. 5. Opcional. Seleccione Valores opcionales y añada el nombre del botón al campo Título. El título también se utiliza para la etiqueta del botón de envío de formulario. 6. Opcional.Configurar parámetros de conjunto de datos opcionales: también puede establecer valores predeterminados para los parámetros de tiempo de ejecución conectados a la política de Netcool/Impact. 7. Pulse Aceptar para implementar los cambios o en Cancelar para desecharlos. 8. En el panel de instrumentos, pulse el botón en el widget para ejecutar la política. Los parámetros de tiempo de ejecución se pasan a la política como parámetros de ejecución de política. Los resultados se visualizan en el widget. Consejo: Para cambiar los valores de los parámetros de tiempo de ejecución, debe editar el widget Botón y cambiar los parámetros de la página Valores de visualización antes de ejecutar de nuevo la política desde el panel de instrumentos. Configuración del widget Botón para recibir datos de otros widgets El widget Botón puede recibir datos de otros widgets. Por ejemplo, en la consola puede crear una conexión entre el widget Botón y un widget Tabla. Estas conexiones entre widgets comparten información y abren páginas en contexto. Al pulsar una fila en el widget Tabla, el widge Botón procesa los datos. Al pulsar el botón en el widget Botón, estos datos de la fila de tabla se procesan. A continuación, los datos se envían a la política como parámetros de tiempo de ejecución. Acerca de esta tarea Este ejemplo utiliza un widget Botón y un widget Tabla. Puede utilizar el mismo proceso con un widget Botón y cualquier otro widget. 212 Netcool/Impact: Guía de soluciones Procedimiento 1. En a. b. c. Netcool/Impact, cree un origen de datos DB2. Especifique NewDataSource en el campo Nombre de origen de datos. Especifique el nombre de usuario y la contraseña para la base de datos. Complete los otros campos, según se requiera. d. Guarde el origen de datos. 2. Cree un tipo de datos para el origen de datos DB2. a. Especifique NewDataType como nombre y complete los campos necesarios. b. Para asegurarse de que el tipo de datos es compatible con Proveedor de datos de interfaz de usuario , seleccione el recuadro de selección Proveedor de datos de interfaz de usuario: habilitado. c. Seleccione los campos de clave para el tipo de datos. d. Guarde el tipo de datos. 3. Cree la política de destino. a. En el editor de políticas de Netcool/Impact, cree una política de Netcool/Impact. b. Defina la política siguiente: Log (“Executing IPL Impact Policy”); filter = “SERVICEREQUESTIDENTIFIER = ” + inputParamID; GetbyFilter (’NewDataType’, filter, false); c. Guarde la política y dele el nombre PolicyForButtonWidget. 4. Cree el parámetro de tiempo de ejecución para la política. a. En el editor de políticas, pulse el icono Configurar parámetros de usuario para crear el parámetro de tiempo de ejecución. b. Nombre el parámetro de tiempo de ejecución inputParamID. c. Especifique Long para el campo Formato. d. Pulse Aceptar. e. Guarde la política. 5. Cree una página en la consola. a. Abra la consola. b. Para crear una página, pulse Valores>Nueva página. c. Especifique un nombre para la página en el campo Nombre de página. d. Guarde la página. 6. Cree un widget Botón en la consola. a. Abra la nueva página que ha creado. b. Abra la carpeta de widgets de Impact y arrastre el widget Botón al área de contenido. c. Para configurar los datos de widget, pulse el icono de flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione la política PolicyForButtonWidget que ha creado anteriormente. e. Se visualiza la interfaz de usuario Valores de visualización. Pulse Aceptar. f. Para guardar el widget Botón, pulse el botón Guardar en la barra de herramientas de la página. 7. Cree un widget Tabla en la consola. a. Abra la nueva página que ha creado. b. Arrastre el widget Tabla al área de contenido. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 213 c. Para configurar los datos del widget, púlselo. Pulse el icono flecha abajo y pulse Editar. Se visualiza la ventana Seleccionar un conjunto de datos. d. Seleccione el conjunto de datos. Seleccione el tipo de datos NewDataType que pertenece al origen de datos NewDataSource. El tipo de datos sólo se visualiza tras el intervalo de renovación definido. El valor predeterminado es de 5 minutos. e. Se visualiza la interfaz de usuario Valores de visualización. Pulse Aceptar. f. Para guardar el widget Tabla, pulse Guardar en la barra de herramientas de la página. 8. Cree una conexión entre los widgets Botón y Tabla. a. Para abrir el asistente de conexiones, pulse el botón Mostrar conexiones en la barra de herramientas de la página. b. Pulse el botón Nueva conexión. c. En la página Seleccionar suceso de origen para nueva conexión, identifique el widget Tabla en la lista de Sucesos de origen disponibles y seleccione el suceso NodeClickedOn. d. Pulse Aceptar. e. En la página Seleccionar destino para nueva conexión, seleccione el widget Botón en la lista de Destinos disponibles. f. Pulse Aceptar en las dos páginas siguientes para crear una conexión entre los widgets Botón y Tabla. Resultados Al pulsar una fila en el widget Tabla, se genera un suceso NodeClickedOn. El widget Botón procesa el suceso extrayendo los datos de la fila de tabla pulsada. Al pulsar el botón en el widget Botón, ejecuta la política configurada en el widget. Los datos pasan de la fila de tabla a la política como valores de tiempo de ejecución de política. La función GetByFilter se ejecuta y utiliza el parámetro de tiempo de ejecución proporcionado por la fila de tabla. Temas de referencia Puede utilizar URL personalizados y Proveedor de datos de interfaz de usuario para acceder directamente a los datos. También puede personalizar Proveedor de datos de interfaz de usuario y habilitar el soporte de modelos de datos grandes. Soporte de modelos de datos grandes para Proveedor de datos de interfaz de usuario Puede utilizar Proveedor de datos de interfaz de usuario con modelos de datos grandes basados en las bases de datos soportadas. El soporte de modelos de datos grandes se utiliza para facilitar la integración de Proveedor de datos de interfaz de usuario con tablas de base de datos que utilizan filtrado y paginación para limitar el número de filas. Se da soporte a las siguientes bases de datos y tipos de datos asociados y la integración de modelos de datos grandes está habilitada de forma predeterminada: v DB2 v Derby v HSQLDB v Informix 214 Netcool/Impact: Guía de soluciones v v v v MySQL MS-SQLServer Oracle PostgreSQL Para obtener información sobre cómo habilitar e inhabilitar modelos de datos grandes, consulte “Inhabilitación y habilitación de modelos de datos grandes”. Restricciones v No se da soporte a bases de datos Sybase y sus tipos de datos asociados. Puede limitar los datos utilizando los filtros de entrada en el tipo de datos o en el widget. Importante: Si accede a un tipo de datos Netcool/OMNIbus o Sybase que tiene un gran número de filas, por ejemplo más de 10.000, puede llegar a quedarse sin memoria. Se pueden producir problemas de falta de memoria porque todas las filas de datos que se capturan de la base de datos utilicen la memoria de almacenamiento dinámico disponible asignada por la máquina virtual Java. Si tiene la intención de acceder a grandes cantidades de datos para un tipo de datos Netcool/OMNIbus o Sybase, considere incrementar los valores de la memoria de almacenamiento dinámico para TIPProfile e ImpactProfile a partir de sus valores predeterminados. Para obtener información sobre el cambio de los valores de la memoria de almacenamiento dinámico, consulte la sección Supervisión del estado de la memoria de la Guía de administración. v Si desea integrar Proveedor de datos de interfaz de usuario con modelos de datos grandes, no debe utilizar UIDPROWNUM como un nombre de campo en la base de datos Oracle o DB2. El campo AS UIDPROWNUM se añade a la consulta para bases de datos Oracle y DB2. Como resultado, este campo se reserva para que lo utilice la consulta que está asociada con estos tipos de bases de datos. v La base de datos MS-SQLServer utiliza el primer campo del tipo de datos en la consulta. No hay campos reservados para este tipo de base de datos. v Si la paginación está habilitada en Tivoli Integrated Portal o en el URL, Netcool/Impact no almacena esta información en la memoria. En lugar de ello, Netcool/Impact recupera las filas directamente de la base de datos para evitar efectos adversos en el rendimiento y la memoria. Inhabilitación y habilitación de modelos de datos grandes Puede habilitar e inhabilitar Proveedor de datos de interfaz de usuario de forma que no sea compatible con modelos de datos grandes. Acerca de esta tarea De forma predeterminada la integración de modelos de datos grandes está habilitada para las siguientes bases de datos. v DB2 v Derby v HSQLDB v Informix v MySQL v MS-SQLServer v Oracle v PostgreSQL Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 215 Procedimiento 1. Para inhabilitar la integración de Proveedor de datos de interfaz de usuario y los modelos de datos grandes, cambie impact.uidataprovider.largetablemodel=true por impact.uidataprovider.largetablemodel=false en el archivo server.props. Consejo: Si este parámetro no existe, puede añadirlo al archivo server.props. 2. Reinicie el Servidor GUI. Habilitación e inhabilitación del modelo de datos grandes para Objectserver: La integración del modelo de datos grandes está inhabilitada de forma predeterminada para ObjectServer y no está soportada a menos que utilice Netcool/OMNIbus versión 7.4.0, fixpack 1. Este fixpack tiene funciones que se pueden utilizar para la paginación en ObjectServer. Antes de empezar Antes de iniciar esta tarea, debe detener Servidor GUI. En sistemas operativos UNIX, especifique el mandato siguiente en el indicador de mandatos: $IMPACT_HOME/bin/ewasGUIStartStop.sh stop [-username adminuser -password adminpassword] En sistemas operativos Windows, utilice Ampliación de servicios en Microsoft Management Console. En la ventana Ampliación de servicios, pulse con el botón derecho sobre Tivoli Integrated Portal y seleccione Propiedades. En el recuadro de diálogo Propiedades, pulse Detener y, a continuación, pulse Aceptar. Acerca de esta tarea Para obtener información sobre Netcool/OMNIbus versión 7.4.0. fixpack 1, consulte http://publib.boulder.ibm.com/infocenter/tivihelp/v8r1/topic/ com.ibm.netcool_OMNIbus.doc_7.4.0/omnibus/wip/welcome.htm. Procedimiento 1. Para habilitar la integración de Proveedor de datos de interfaz de usuario y modelos de datos grandes para ObjectServer, cambie la propiedad impact.uidataprovider.largetablemodel.objectserver=false a impact.uidataprovider.largetablemodel.objectserver=true en el archivo server.props. Si la propiedad no existe, puede crearla. 2. Reinicie el Servidor GUI. v En sistemas UNIX, especifique el mandato siguiente en el indicador de mandatos: $IMPACT_HOME/bin/ewasGUIStartStop.sh start [-username adminuser -password adminpassword] v En sistemas Windows, utilice Ampliación de servicios en Microsoft Management Console. En la ventana Ampliación de servicios, pulse con el botón derecho sobre Tivoli Integrated Portal y seleccione Propiedades. En el recuadro de diálogo Propiedades, pulse Iniciar y, a continuación, pulse Aceptar. 216 Netcool/Impact: Guía de soluciones Consejo: También puede utilizar el script startServer.sh en el directorio $TIP_HOME/profiles/TIPProfile/bin. Personalización de Proveedor de datos de interfaz de usuario Tras habilitar Proveedor de datos de interfaz de usuario , puede personalizarlo cambiando la velocidad de renovación, inicializando todos los elementos de datos SQL y habilitando varios clústeres de Netcool/Impact que acceden al mismo proveedor de Tivoli Integrated Portal. Velocidad de renovación Puede configurar la frecuencia con la que se renueva Proveedor de datos de interfaz de usuario . Este intervalo se establece en cada 5 minutos. Para cambiar este valor, añada la sentencia siguiente al archivo server.props que se encuentra en la carpeta IMPACT_HOME/etc/: impact.uidataprovider.refreshrate=<velocidad_renovación_en_milisegundos> Por ejemplo, añada la sentencia siguiente para cambiar el intervalo de renovación a 3 minutos: impact.uidataprovider.refreshrate=180000 Inicialización de elementos de datos SQL Puede configurar Netcool/Impact de manera que de forma predeterminada los elementos de datos SQL se inicialicen durante el inicio. Para ello, añada lo siguiente al archivo server.props: impact.uidataprovider.sql.initializenodes=true Restricción: Este valor puede tener un efecto negativo en el rendimiento y el uso de memoria. Esta restricción depende de la cantidad de datos que contiene el tipo de datos. Por este motivo, de forma predeterminada este valor está inhabilitado. Habilitar varios servidores El despliegue puede incluir varios servidores Proveedor de datos de interfaz de usuario en un clúster de servidores que acceden al mismo proveedor de Tivoli Integrated Portal. Para integrar Proveedor de datos de interfaz de usuario con este tipo de despliegue, debe configurar la carga del modelo de navegación de forma que renueve periódicamente los datos de cada servidor Proveedor de datos de interfaz de usuario . Para ello, añada la sentencia siguiente al archivo server.props: impact.uidataprovider.refreshclusters=true Codificación de caracteres De forma predeterminada, Netcool/Impact utilice codificación de caracteres UTF-8 para analizar los valores de parámetros y enviar estos valores a Proveedor de datos de interfaz de usuario . Cambie este valor si, por ejemplo, desea utilizar caracteres chinos junto con Proveedor de datos de interfaz de usuario . Para cambiar este valor, concluya el servidor Tivoli Integrated Portal y añada la sentencia siguiente al archivo server.props que se encuentra en la carpeta IMPACT_HOME/etc: impact.uidataprovider.encoding=<juego_caracteres> Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 217 Inicie el servidor Tivoli Integrated Portal. Netcool/Impact utiliza la codificación definida en la variable juego_caracteres para analizar los valores de los parámetros. Inhabilitación de Proveedor de datos de interfaz de usuario De forma predeterminada, Proveedor de datos de interfaz de usuario está habilitado en el perfil de Tivoli Integrated Portal. Para inhabilitar Proveedor de datos de interfaz de usuario , añada la sentencia siguiente al archivo server.props en la carpeta IMPACT_HOME/etc. Para añadir la sentencia, primero debe concluir el Servidor GUI. impact.uidataprovider.enable=false Nota: En una instalación dividida, añada la sentencia al archivo server.props en el servidor Tivoli Integrated Portal. Para completar el cambio, reinicie el Servidor GUI. Conversión de filtros de fecha para bases de datos conectadas Netcool/Impact debe convertir los valores de filtro de la consola a un formato que sea compatible con las consultas utilizadas para las distintas bases de datos. Se requiere la conversión porque la consola utiliza milisegundos como formato genérico para enviar las fechas. Esta conversión la controla la propiedad impact.uidataprovider.dateformat del archivo server.props en la carpeta IMPACT_HOME/etc. El patrón predeterminado es aaaa-MM-dd HH:mm:ss.SSS. Por ejemplo, si filtra para el 1 de enero de 2012, Netcool/Impact convierte el valor de filtro a 2012-01-01 00:00:00.000. Para cambiar el patrón predeterminado, modifique la propiedad impact.uidataprovider.dateformat del archivo server.props en la carpeta IMPACT_HOME/etc. Acceso a Netcool/Impact Proveedor de datos de interfaz de usuario Puede utilizar un URL para acceder a los datos de Proveedor de datos de interfaz de usuario proporcionados por Netcool/Impact. Procedimiento Utilice el siguiente URL para acceder a Netcool/ImpactProveedor de datos de interfaz de usuario https:/<nombre_host>:<puerto>/ibm/tivoli/rest/providers/ nombre_proveedor nombre_host es la máquina donde se está ejecutando Tivoli Integrated Portal. puerto es el puerto https de Tivoli Integrated Portal, el valor predeterminado es 16311 Nota: De forma predeterminada, Netcool/ImpactProveedor de datos de interfaz de usuario registra el nombre Impact_NCICLUSTER. Si ha registrado otro nombre de clúster durante la instalación, Proveedor de datos de interfaz de usuario registra este nombre como Impact_<nombre_clúster>. 218 Netcool/Impact: Guía de soluciones Ejemplo Por ejemplo, puede utilizar el URL siguiente para acceder a Proveedor de datos de interfaz de usuario : https://example.com:16311/ibm/tivoli/rest/providers/Impact_NCICLUSTER Acceso a orígenes de datos desde un Proveedor de datos de interfaz de usuario Puede utilizar un URL para acceder a los orígenes de datos que proporciona Netcool/Impact cuando funciona como un Proveedor de datos de interfaz de usuario . Procedimiento Utilice el siguiente URL para acceder a los orígenes de datos: https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/Impact_NCICLUSTER/ datasources/<nombre_origen_datos> Ejemplo Si configura el origen de datos defaultobjectserver en Netcool/Impact para que apunte a una instalación de Netcool/OMNIbus, utiliza el siguiente URL para acceder a él: https://example.com:16311/ibm/tivoli/rest/providers/Impact_NCICLUSTER/ datasources/defaultobjectserver Acceso a conjuntos de datos desde un Proveedor de datos de interfaz de usuario Se utiliza un URL para acceder a los conjuntos de datos proporcionados por un Proveedor de datos de interfaz de usuario . Los conjuntos de datos proporcionados por Proveedor de datos de interfaz de usuario se pueden basar en tipos de datos SQL, internos o SNMP. Procedimiento Utilice el siguiente URL para acceder a conjuntos de datos proporcionados por Proveedor de datos de interfaz de usuario : https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/Impact_NCICLUSTER /datasources/<ID_origen_datos>/datasets Este URL devuelve los conjuntos de datos pertenecientes a un origen de datos. Utilice el siguiente URL para acceder a un conjunto de datos específico: https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/Impact_NCICLUSTER /datasources/<ID_origen_datos>/datasets/<ID_conjunto_datos> Utilice el URL siguiente para acceder a las filas de las tablas: https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/Impact_NCICLUSTER /datasources/<ID_origen_datos>/datasets/<ID_conjunto_datos>/items Nota: Si el campo de clave de la tabla es un identificador exclusivo, este URL devuelve todas las filas. Si la tabla contiene campos de clave que no son identificadores exclusivos, estas filas no se devuelven. Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 219 Ejemplo Se utiliza el URL siguiente para acceder a conjuntos de datos del origen de datos defaultobjectserver: https://example.com:16311/ibm/tivoli/rest/providers/Impact_NCICLUSTER/ datasources/defaultobjectserver/datasets Puede crear los siguientes conjuntos de datos para el origen de datos defaultobjectserver: v El tipo de datos ALERTS apunta a alerts.status v El tipo de datos JOURNALS apunta a alerts.journals Se utiliza el siguiente URL para acceder al conjunto de datos ALERTS: https://example.com:16311/ibm/tivoli/rest/providers/Impact_NCICLUSTER/ datasources/defaultobjectserver/datasets/ALERTS Se utiliza el siguiente URL para acceder al ID de elemento para el conjunto de datos ALERTS: https://example.com:16311/ibm/tivoli/rest/providers/Impact_NCICLUSTER/ datasources/defaultobjectserver/datasets/ALERTS/items Al crear un tipo de datos en Netcool/Impact, designa como mínimo un campo como el campo de clave. En este ejemplo, elige Identificador como el campo de clave para el conjunto de datos ALERTS. Se utiliza el siguiente URL para acceder a los datos donde el identificador es Impact123: https://example.com:16311/ibm/tivoli/rest/providers/Impact_NCICLUSTER/ datasources/defaultobjectserver/datasets/ALERTS/items/Impact123 Se utiliza el siguiente URL para acceder a las propiedades Serial y Severity de este suceso: https://example.com:16311/ibm/tivoli/rest/providers/Impact_NCICLUSTER/ datasources/defaultobjectserver/datasets/ALERTS/items/ Impact123?properties=Serial,Severity Se utiliza el siguiente URL para acceder a los datos de todas las columnas de la fila donde el identificador es Impact123: https://example.com:16311/ibm/tivoli/rest/providers/Impact_NCICLUSTER/ datasources/defaultobjectserver/datasets/ALERTS/items/Impact123?properties=all Problemas conocidos con JavaScript y Proveedor de datos de interfaz de usuario Cómo resolver problemas conocidos con parámetros de salida de usuario en una política JavaScript y Proveedor de datos de interfaz de usuario . Cuando expone un parámetro de salida de usuario dentro de una política de JavaScript, los datos de parámetro de salida de usuario estarán en blanco cuando los consulte Proveedor de datos de interfaz de usuario . Para resolver este problema, es necesario suprimir algunos objetos dentro de la política de JavaScript, incluyendo funciones de JavaScript y objetos Java, normalmente al final de la función o la política. Por ejemplo, es necesario suprimir la función de JavaScript siguiente para que los parámetros de salida de usuario se devuelvan satisfactoriamente de Proveedor de datos de interfaz de usuario . 220 Netcool/Impact: Guía de soluciones function myFunction() { //..... } delete myFunction; Además, también es necesario suprimir cualesquiera objetos Java creados dentro de la política de JavaScript. Por ejemplo: var myString = NewJavaObject("java.lang.String", ["myString"]); //..... delete myString; Si el objeto Java contiene la información que se debe utilizar en un parámetro de salida de usuario. Es necesario almacenar el valor del objeto Java mediante una función de política Netcool/Impact para convertir el objeto Java en el tipo de variable correcto. var myString = NewJavaObject("java.lang.String", ["myString"]); //..... var outputString = String(myString); delete myString; Si la variable se devuelve de una invocación de una función o una llamada, también debe suprimir ese objeto. Ejecución de políticas y acceso a parámetros de salida Puede utilizar un URL para ejecutar una política y hacer que los parámetros de salida de esa política, como variables, objetos o variables generadas por la función GetByFilter estén disponibles para Proveedor de datos de interfaz de usuario . Procedimiento Para ejecutar una política y hacer que los parámetros de salida estén disponibles para Proveedor de datos de interfaz de usuario , añada executePolicy=true al URL siguiente: https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/Impact_NCICLUSTER/ datasources/IMPACT_POLICY_<nombre_política>/datasets/ <nombre_política>_policy_variables/items?executePolicy=true Ejemplo Puede utilizar un URL para ejecutar una política y hacer que el parámetro de salida esté disponible para Proveedor de datos de interfaz de usuario . Crea una política denominada Test_Policy. Añade executePolicy=true al URL siguiente para ejecutar la política Test_Policy y hacer que los parámetros de salida estén disponibles para Proveedor de datos de interfaz de usuario : https://example.com:16311/ibm/tivoli/rest/providers/ Impact_NCICLUSTER/datasources/IMPACT_POLICY_Test_Policy/ datasets/Test_Policy_policy_variables/items?executePolicy=true URL de Proveedor de datos de interfaz de usuario Utilice los URL siguientes para acceder a datos de Netcool/Impact disponibles para Proveedor de datos de interfaz de usuario . Acceda a Proveedor de datos de interfaz de usuario : https:/<nombre_host>:<puerto>/ibm/tivoli/rest/providers/ <nombre_proveedor> Capítulo 14. Utilización de Netcool/Impact Proveedor de datos de interfaz de usuario 221 Acceda a un origen de datos: https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/ Impact_NCICLUSTER/datasources/<nombre_origen_datos> Acceda a todos los tipos de datos que pertenecen a un origen de datos determinado: https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/ Impact_NCICLUSTER/datasources/<ID_origen_datos>/datasets Acceda a un conjunto de datos específico: https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/ Impact_NCICLUSTER/datasources/<ID_origen_datos>/datasets/ <ID_conjunto_datos> Acceda a las filas de una tabla de base de datos https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/ Impact_NCICLUSTER/datasources/<ID_origen_datos>/datasets/ <ID_conjunto_datos>/items Ejecute una política y haga que los parámetros de salida estén disponibles para Proveedor de datos de interfaz de usuario : https://<nombre_host>:<puerto>/ibm/tivoli/rest/providers/ Impact_NCICLUSTER/ datasources/IMPACT_POLICY_<nombre_política>/ datasets/ <nombre_política>_policy_variables/ items?executePolicy=true 222 Netcool/Impact: Guía de soluciones Capítulo 15. Utilización de OSLC para Netcool/Impact Puede utilizar Open Services for Lifecycle Collaboration (OSLC) para Netcool/Impact para integrar Netcool/Impact con otros proveedores y clientes OSLC. Netcool/Impact también funciona como un cliente de datos OSLC. Puede utilizar estas prestaciones para integrar Netcool/Impact con productos y datos compatibles. Netcool/Impact 6.1.1.1 contiene una implementación de Open Services for Lifecycle Collaboration (OSLC) Core Specification versión 2.0. Para obtener más información sobre OSLC, consulte OSLC Core Specification (http://openservices.net/bin/view/Main/OslcCoreSpecification). Netcool/Impact no da soporte a diálogos de interfaz de usuario delegados o a fábricas de creación. Netcool/Impact da soporte sólo a la representación RDF/XML de OSLC y a los siguientes aspectos de OSLC Core Specification v2: v Proveedor de servicios OSLC v Prestación de consulta OSLC v Forma de recurso OSLC v Recurso OSLC Escenarios de uso Netcool/Impact puede actuar como un proveedor OSLC y un cliente OSLC. Puede utilizar Netcool/Impact como un adaptador OSLC genérico para otros proveedores de servicios OSLC y que no sean OSLC. Formatos de respuesta Netcool/Impact utiliza el formato RDF/XML para todas las respuestas OSLC, tal como requiere OSLC Core Specification v2. Importante: Cuando se visualiza en algunos navegadores web, como Mozilla Firefox, el RDF/XML en bruto se convierte automáticamente al formato RDF/XML abreviado, que omite los nodos en blanco. Para obtener más información, consulte RDF/XML Syntax Specification (http://www.w3.org/TR/REC-rdf-syntax/#sectionSyntax-blank-nodes) El RDF/XML en bruto y la versión abreviada son semánticamente idénticos. Puede utilizar Internet Explorer, Mozilla Firefox, la función GetHTTP de Netcool/Impact o el programa de utilidad curl de Linux para recuperar el XML/RDF en bruto. Nota: Si trabaja con la GUI de Netcool/Impact en el navegador Mozilla Firefox y abre simultáneamente una segunda instancia para ver un URL de OSLC, el sistema le cierra la sesión en la primera instancia. Para evitar este problema, debe crear un segundo perfil en Mozilla Firefox para ver los URL de OSLC. Para obtener más información sobre cómo hacerlo, consulte la sección de la ayuda sobre perfiles en el sitio web de Mozilla (http://support.mozilla.org/en-US/kb/profile-managercreate-and-remove-firefox-profiles). © Copyright IBM Corp. 2006, 2014 223 Jazz for Service Management OSLC requiere Netcool/Impact 6.1.1 o superior. OSLC también requiere Jazz for Service Management, que se empaqueta con Netcool/Impact 6.1.1. Puede utilizar el instalador proporcionado con Jazz for Service Management para instalarlo por separado. Para utilizar OSLC, primero debe instalar el componente Servicios de registro de Jazz for Service Management. Para obtener más información, consulte http://pic.dhe.ibm.com/infocenter/tivihelp/v3r1/topic/com.ibm.psc.doc_1.1.0/ psc_ic-homepage.html Introducción a OSLC Antes de utilizar OSLC para Netcool/Impact, lea esta información sobre los detalles de esta implementación. El gráfico siguiente describe un ejemplo de una arquitectura típica de sistema para OSLC: La instalación que se ilustra en el gráfico muestra cómo Netcool/Impact utiliza los servicios de registro de Jazz for Service Management para proporcionar soporte de vista previa contextual a TBSM. TBSM recupera la lista de proveedores de servicios de un recurso del servidor donde el componente de Servicios de registro de Jazz 224 Netcool/Impact: Guía de soluciones de la gestión de servicios se encuentra. TBSM se conecta a un proveedor de servicios especificado en el sistema de fondo de Netcool/Impact donde se ha creado el proveedor de servicios. El sistema de fondo se conecta a los orígenes de datos y políticas que proporcionan datos y generan la información de ventana de vista previa contextual, incluido el URL que se utiliza para recuperar el contenido de vista previa contextual. El URL puede ser el frontend de Netcool/Impact que utiliza las vistas de operador para representar el propio contenido de la ventana de vista previa contextual. Recursos e identificadores OSLC OSLC para Netcool/Impact sigue las especificaciones OSLC respecto a los recursos e identificadores OSLC. Sin embargo, hay algunos aspectos importantes que se deben tener en cuenta antes de empezar a utilizar OSLC para Netcool/Impact. Siguiendo la especificación OSLC, los URI generados por Netcool/Impact en documentos OSLC son opacos. Los únicos URI válidos son los URI que se descubren mediante un registro de proveedor de servicios OSLC o desde un documento OSLC anterior. Por ejemplo, si el URI para un recurso denominado Person es http://<servidor>/person, no se puede asumir que http://<servidor>/dog es el URI correcto para un recurso denominado Dog. Este documento proporciona URI como ejemplos pero estos no implican URI que funcionen en ningún sistema determinado. Todos los URI de Netcool/Impact utilizan el esquema http:// o https://. Como los URI son opacos, el recurso http://<servidor>/ y el recurso https://<servidor>/ son dos recursos distintos. Aunque todos los URI pueden utilizar el esquema http o https, no todos los URI se pueden resolver como un recurso HTTP. Si es posible, el término URI se utiliza para indicar identificadores, que se pueden o no resolver en un documento determinado, y el término URL para hacer referencia a recursos que se resuelven en un documento. Puede utilizar autenticación HTTP o HTTPS por seguridad. Si utiliza autenticación básica HTTP, las credenciales de seguridad están disponible en la red como texto simple. HTTPS es el método preferido dado que las credenciales de seguridad no están disponibles como texto simple. Roles de OSLC Puede utilizar los roles bsmAdministrator e impactOSLCDataProviderUser para regular el acceso al proveedor de servicios OSLC. Se asigna el rol bsmAdministrator al administrador de Netcool/Impact, quien, en la mayoría de los casos, es el administrador de Tivoli Integrated Portal. Para añadir usuarios a los roles, utilice el script $IMPACT_HOME/bin/jython/ mapRole.py. Para añadir usuarios o grupos al rol impactOSLCDataProviderUser, utilice el mandato siguiente: wsadmin -lang jython -f mapRole.py -A NCI -r impactOSLCDataProviderUser -g “group1|group2|group3” -u "user1|user2|user3" Capítulo 15. Utilización de OSLC para Netcool/Impact 225 Nota: Debe utuilizar un único script para añadir el usuario al rol y añadir el rol al grupo. Si utiliza distintos scripts, la segunda correlación se sobrescribe a primera. Si utiliza autenticación basada en archivo para los usuarios y grupos, los usuarios y grupos que se asignan al rol OSLC no se replican automáticamente en el Servidor Impact. Debe añadir estos roles manualmente. Para añadir los usuarios y grupos al Servidor Impact, utilice la consola de administración de WebSphere Application Server disponible en el URL siguiente: https://<host_servidor_Impact>:9086/ibm/console/logon.jsp Si utiliza el servidor de objetos o Lightweight Directory Access Protocol (LDAP) para la autenticación de sus usuarios y grupos, los usuarios y grupos que se asignan al rol OSLC se replican automáticamente en el Servidor Impact. Si cambia el registro de usuarios actual, debe reiniciar el servidor WebSphere de perfiles de Netcool/Impact. Ejemplo Puede utilizar el mandato siguiente para añadir el usuario oslcuser al rol impactOSLCDataProviderUser para un sistema operativo Linux: /opt/IBM/tivoli/tipv2/profiles/ImpactProfile/bin/wsadmin.sh -lang jython -f /opt/IBM/tivoli/impact/bin/jython/mapRole.py -A NCI -r impactOSLCDataProviderUser -u "tipadmin|oslcuser" Utilización de tipos de datos y OSLC Puede utilizar la siguiente información para integrar el proveedor OSLC de Netcool/Impact y tipos de datos. No puede utilizar un nombre de visualización que contenga caracteres especiales con OSLC. Debe especificar un nombre de visualización que no contenga caracteres especiales. Para editar el nombre de visualización: 1. Abra Netcool/Impact y seleccione Configuración del sistema > Automatización de sucesos > Modelo de datos. 2. Pulse en el origen de datos al que pertenece el tipo de datos. 3. Seleccione la fila que contiene el nombre de visualización que utiliza caracteres especiales y pulse Editar fila actual. 4. Sustituya los caracteres especiales en el nombre de visualización y guarde los cambios. Acceso a tipos de datos de Netcool/Impact como recursos OSLC Para permitir que Netcool/Impact acceda a un tipo de datos como un recurso OSLC, debe añadir el tipo de datos al archivo NCI_oslc.props en <DIR_INICIO_IMPACT>/etc/. Acerca de esta tarea En este escenario, los recursos OSLC que devuelve la consulta son elementos de datos de Netcool/Impact, que son filas de la base de datos subyacente. 226 Netcool/Impact: Guía de soluciones Procedimiento 1. Añada una propiedad para cada tipo de datos de Netcool/Impact que desee que esté disponible como recursos OSLC al archivo NCI_oslc.props en <DIR_INICIO_IMPACT>/etc/. NCI es el nombre predeterminado del Servidor Impact. Añada la propiedad con el formato siguiente: oslc.data.<componente_vía_acceso>=<nombre_tipo_datos> donde <componente_vía_acceso> es el componente de vía de acceso del URI que desea utilizar, y <nombre_tipo_datos> es el nombre del tipo de datos que desea utilizar. Por ejemplo, si añade oslc.data.staff=Employees al archivo de propiedades, puede utilizar el URL siguiente para acceder al tipo de datos Employees: http://example.com:9080/NCI_NCICLUSTER_oslc/data/staff donde NCI es el nombre de Servidor Impact predeterminado y NCICLUSTER es el nombre de clúster de Netcool/Impact. 2. Reinicie el Servidor Impact. Ejemplo El ejemplo siguiente muestra cómo crear un tipo de datos para una tabla de DB2 y cómo añadir la información al archivo NCI_oslc.props. En este ejemplo, la tabla de DB2 tiene información para una tabla denominada People: db2 => describe table People Nombre columna ------------------------------ID FIRST_NAME LAST_NAME COMPANY BIRTHDAY Esq. tipo datos --------SYSIBM SYSIBM SYSIBM SYSIBM SYSIBM Longitud Nombre tipo datos columna Esc. ------------------- ---------- ----INTEGER 4 0 VARCHAR 255 0 VARCHAR 255 0 VARCHAR 255 0 DATE 4 0 Nulos -----Sí Sí Sí Sí Sí 1. Cree un tipo de datos de Netcool/Impact que represente la información en la tabla de DB2 y añada la información como campos al tipo de datos: a. En el árbol de navegación, expanda Configuración del sistema > Automatización de sucesos > Modelo de datos, para abrir el separador Modelo de datos. b. Seleccione el origen de datos para el que desea crear un tipo de datos, pulse con el botón derecho en el origen de datos y pulse Nuevo tipo de datos. c. En el campo Nombre de tipo de datos, proporcione un nombre al tipo de datos, por ejemplo, Employees. d. Seleccione el Nombre de origen de datos del menú de lista, en este ejemplo DB2. e. Seleccione el recuadro de selección Habilitado para activar el tipo de datos de forma que esté disponible para su uso en políticas. f. Seleccione el nombre de Tabla base en el menú de lista. g. Pulse Renovar para añadir los campos de la tabla de ejemplo de DB2 al tipo de datos. h. Seleccione como mínimo un Campo de clave. Los campos de clave son campos cuyo valor o combinación de valores se puede utilizar para identificar elementos de datos exclusivos en un tipo de datos. i. Pulse Guardar. Capítulo 15. Utilización de OSLC para Netcool/Impact 227 2. Especifique el tipo de datos en el archivo NCI_oslc.props, por ejemplo, oslc.staff=Employees. 3. Reinicie el Servidor Impact. Recuperación de recursos OSLC que representan elementos de datos de Netcool/Impact Las colecciones de recursos OSLC se utilizan para representar elementos de datos de Netcool/Impact. Se utiliza un URL para recuperar estas colecciones de recursos. Antes de empezar Utilice sólo tipos de datos compatibles con métodos recomendados de base de datos estándar. Los campos de clave deben ser exclusivos, no nulos y no deben cambiar con el tiempo. Si los valores de clave cambian, el URI de OSLC también cambia. Procedimiento Utilice un URL como el siguiente para recuperar las colecciones de recursos OSLC que representan los elementos de datos: http://<servidor>:<puerto>/NCICLUSTER_NCI_oslc/data/<tipo_datos> donde <tipo_datos> está definido en el archivo NCI_oslc.props. Resultados Netcool/Impact correlaciona las filas de la base de datos con recursos OSLC y correlaciona las columnas con propiedades de recursos OSLC. El URL para cada elemento de datos utiliza los valores de clave en forma de parámetros de matriz HTTP para identificar de forma exclusiva el elemento de datos. Los valores de clave se definen en la configuración de tipo de datos de Netcool/Impact. Por ejemplo, un elemento de datos con varias claves resultaría en un URI como el siguiente: http://<servidor>:<puerto>/NCICLUSTER_NCI_oslc/data/people/item; <clave1=valor1>;<clave2=valor2> Cada valor no nulo de la base de datos se representa como un triple RDF que consta del elemento de datos, el valor y la propiedad derivada del nombre de columna. Los valores nulos se representan en OSLC mediante la ausencia de la propiedad derivada del nombre de columna. Ejemplo Por ejemplo, puede utilizar el siguiente URL para acceder al tipo de datos employee configurado para utilizar el componente de vía de acceso people: http://example.com:9080/NCICLUSTER_NCI_oslc/data/people/ El URL devuelve una colección de recursos OSLC que se basan en las filas de la tabla de base de datos. El ejemplo siguiente muestra los resultados de dos elementos de datos que pertenecen al tipo de datos employee: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:people="http://jazz.net/ns/ism/event/impact#data/people/" 228 Netcool/Impact: Guía de soluciones xmlns:impact="http://jazz.net/ns/ism/event/impact#/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:oslc="http://open-services.net/ns/core#"> <oslc:ResponseInfo rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/people"> <rdfs:member> <people:people rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc /data/people/item;ID=2"> <people:ID>2</people:ID> <people:FIRST_NAME>George</people:FIRST_NAME> <people:LAST_NAME>Friend</people:LAST_NAME> </people:people> </rdfs:member> <rdfs:member> <people:people rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc /data/people/item;ID=1"> <people:FIRST_NAME>Michael</people:FIRST_NAME> <people:LAST_NAME>Ryan</people:LAST_NAME> <people:ID>1</people:ID> </people:people> </rdfs:member> <oslc:totalCount>2</oslc:totalCount> </oslc:ResponseInfo> </rdf:RDF> Visualización de resultados para identificador de clave exclusiva A cada recurso que se devuelve se asigna una clave exclusiva que identifica el recurso en los resultados y que tiene determinada información asociada. Puede utilizar un URL para visualizar la información asociada a un identificador específico. Ejemplo Utiliza el URL siguiente para visualizar la información asociada a una clave de recurso determinada, en este caso 1010: http://example.com:9080/NCICLUSTER_NCI_oslc/policy/example/ myGetFilter/item;ID=1010 Este URL devuelve los resultados siguientes: <rdf:RDF> <examplePolicy:myGetFilter rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/ policy/example/myGetFilter/item;ID=1010"> <myGetFilter:NAME>Brian Doe</myGetFilter:NAME> <myGetFilter:STARTED>1980-08-11</myGetFilter:STARTED> <myGetFilter:MANAGER>1001</myGetFilter:MANAGER> <myGetFilter:ID>1010</myGetFilter:ID> <myGetFilter:DEPT>Documentation</myGetFilter:DEPT> </examplePolicy:myGetFilter> </rdf:RDF> Formas de recursos OSLC para tipos de datos La forma de recurso OSLC representa la estructura del esquema SQL que está utilizando el tipo de datos Netcool/Impact. Netcool/Impact produce automáticamente una forma de recurso OSLC para los tipos de datos especificados, extrayendo los datos de la tabla de base de datos subyacente. Tabla 67. Correlación con propiedades de forma de recurso OSLC Parámetros de forma de recurso OSLC Se correlaciona con Netcool/Impact dcterms:title Nombre de tipo de datos Capítulo 15. Utilización de OSLC para Netcool/Impact 229 Tabla 67. Correlación con propiedades de forma de recurso OSLC (continuación) Parámetros de forma de recurso OSLC Se correlaciona con Netcool/Impact oslc:describes http://jazz.net/ns/ism/events/impact/ data/<componente_vía_acceso> Tabla 68. Propiedades de OSLC generadas por los parámetros de tipo de datos de Netcool/Impact Propiedad OSLC Tipo de datos de Netcool/Impact oslc:readOnly Siempre 'true' oslc:valueType Para obtener más información, consulte la publicación Tabla 69. dcterms:title Nombre de visualización de la columna oslc:propertyDefinition http://jazz.net/ns/ism/events/impact/ data/ <componente_vía_acceso>#<nombre_columna> oslc:occurs oslc:ZeroOrOne oslc:name Nombre de columna dcterms:description Descripción de la columna Tabla 69. Correlación de tipos de datos OSLC: Tipos de columna de Netcool/Impact Tipos de valores de OSLC Serie http://www.w3.org/2001/XMLSchema#string Entero, largo http://www.w3.org/2001/XMLSchema#integer Indicación de fecha y hora http://www.w3.org/2001/ XMLSchema#dateTime Flotante http://www.w3.org/2001/XMLSchema#float Doble http://www.w3.org/2001/XMLSchema#double Booleano http://www.w3.org/2001/XMLSchema#boolean Cualquier otro http://www.w3.org/2001/XMLSchema#string Visualización de la forma del recurso OSLC para el tipo de datos La forma del recurso OSLC para un tipo de datos se visualiza en la propiedad oslc:ResourceShape. Ejemplo El ejemplo siguiente contiene la forma del recurso OSLC para el tipo de datos Employees que se ha creado para una tabla de DB2 denominada People en el formato RDF abreviado. El URI de recurso es: http://<host>:9080/NCICLUSTER_NCI_oslc/data/resouceShapes/staff El URI devuelve el RDF siguiente: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 230 Netcool/Impact: Guía de soluciones xmlns:oslc="http://open-services.net/ns/core#"> <oslc:ResourceShape rdf:about= "http://<host>:9080/NCICLUSTER_NCI_oslc/data/resourceShapes/staff"> <dcterms:title>Employees/dcterms:title> <oslc:property> <oslc:Property> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource= "http://www.w3.org/2001/XMLSchema#string"/> <dcterms:title>LAST_NAME</dcterms:title> <oslc:propertyDefinition rdf:resource= "http://jazz.net/ns/ism/events/impact/data/staff/LAST_NAME"/> <oslc:occurs rdf:resource= "http://open-services.net/ns/core#Exactly-one"/> <oslc:name>LAST_NAME</oslc:name> <dcterms:description>LAST_NAME</dcterms:description> </oslc:Property> </oslc:property> <oslc:property> <oslc:Property> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource= "http://www.w3.org/2001/XMLSchema#integer"/> <dcterms:title>ID</dcterms:title> <oslc:propertyDefinition rdf:resource= "http://jazz.net/ns/ism/events/impact/data/staff/ID"/> <oslc:occurs rdf:resource= "http://open-services.net/ns/core#Exactly-one"/> <oslc:name>ID</oslc:name> <dcterms:description>ID</dcterms:description> </oslc:Property> </oslc:property> <oslc:property> <oslc:Property> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource= "http://www.w3.org/2001/XMLSchema#string"/> <dcterms:title>FIRST_NAME</dcterms:title> <oslc:propertyDefinition rdf:resource= "http://jazz.net/ns/ism/events/impact/data/staff/FIRST_NAME"/> <oslc:occurs rdf:resource= "http://open-services.net/ns/core#Exactly-one"/> <oslc:name>FIRST_NAME</oslc:name> <dcterms:description>FIRST_NAME</dcterms:description> </oslc:Property> </oslc:property> <oslc:property> <oslc:Property> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource= "http://www.w3.org/2001/XMLSchema#string"/> <dcterms:title>COMPANY</dcterms:title> <oslc:propertyDefinition rdf:resource= "http://jazz.net/ns/ism/events/impact/data/staff/COMPANY"/> <oslc:occurs rdf:resource= "http://open-services.net/ns/core#Exactly-one"/> <oslc:name>COMPANY</oslc:name> <dcterms:description>COMPANY</dcterms:description> </oslc:Property> </oslc:property> <oslc:property> Capítulo 15. Utilización de OSLC para Netcool/Impact 231 <oslc:Property> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource= "http://www.w3.org/2001/XMLSchema#dateTime"/> <dcterms:title>BIRTHDAY</dcterms:title> <oslc:propertyDefinition rdf:resource= "http://jazz.net/ns/ism/events/impact/data/staff/BIRTHDAY"/> <oslc:occurs rdf:resource= "http://open-services.net/ns/core#Exactly-one"/> <oslc:name>BIRTHDAY</oslc:name> <dcterms:description>BIRTHDAY</dcterms:description> </oslc:Property> </oslc:property> <oslc:describes rdf:resource= "http://jazz.net/ns/ism/events/impact/data/staff"/> </oslc:ResourceShape> </rdf:RDF> Configuración de URI personalizados para tipos de datos y parámetros de salida de usuario Netcool/Impact puede actuar como proxy a sistemas que no sean OSLC. Para facilitar esta función, puede utilizar Netcool/Impact para representar datos de una base de datos como recursos OSLC. Acerca de esta tarea Utilice los URI personalizados para representar las columnas de tipo de datos. Debe añadir estos URI personalizados al archivo de configuración OSLC para facilitar la correlación. Restricción: Todos los URI de espacio de nombres que especifique deben incluir http. No puede utilizar https. Procedimiento Añada la sentencia siguiente al archivo NCI_oslc.props para especificar un URI de tipo determinado para un tipo de datos: oslc.data.<vía_acceso>.uri=<uri> Opcionalmente, puede añadir la sentencia siguiente para especificar un nombre de columna: oslc.data.<vía_acceso>.<nombre_columna>.uri=<uri> También puede añadir la sentencia siguiente para especificar un prefijo determinado a un espacio de nombres: oslc.data.<vía_acceso>.namespaces.<prefijo>=<uri> Si no especifica un prefijo, el RDF que se devuelve automáticamente muestra el prefijo generado para el espacio de nombres. Ejemplo El siguiente ejemplo de código muestra cómo se puede representar una tabla de empleados en una especificación de amigo de un amigo (FOAF) añadiendo las siguientes sentencias al archivo NCI_oslc.props: 232 Netcool/Impact: Guía de soluciones oslc.data.staff=Employees oslc.data.staff.uri=http://xmlns.com/foaf/0.1/Person oslc.data.staff.NAME.uri=http://xmlns.com/foaf/0.1/name oslc.data.staff.BIRTHDAY.uri=http://xmlns.com/foaf/0.1/birthday oslc.data.staff.PHOTO.uri=http://xmlns.com/foaf/0.1/img oslc.data.staff.STAFFPAGE.uri=http://xmlns.com/foaf/0.1/homepage oslc.data.staff.EMAIL.uri=http://xmlns.com/foaf/0.1/mbox Cuando el usuario consulta el recurso OSLC http://example.com:9080/ NCICLUSTER_NCI_oslc/data/staff/jdoe, se devuelve el RDF siguiente. Nota: El RDF de ejemplo es una aproximación. Además, como el usuario no ha especificado el prefijo y el espacio de nombres, el RDF muestra automáticamente el prefijo generado para el espacio de nombres. En este ejemplo, el espacio de nombres es j.0 y el prefijo es http://xmlns.com/foaf/0.1/. <?xml version="1.0"?> <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:j.0="http://xmlns.com/foaf/0.1/" xmlns:impact="http://jazz.net/ns/ism/events/impact#/" xmlns:oslc="http://open-services.net/ns/core#""> <j.0:Person rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/data/staff/jdoe" xmlns:foaf="http://xmlns.com/foaf/0.1/"> <j.0:name>John Doe</foaf:name> <j.0:homepage rdf:resource="http://example.com" /> <j.0:mbox rdf:resource="[email protected]" /> <j.0:img rdf:resource="http://example.com/images/jdoe.jpg"/> <j.0:birthday>19770801</foaf:birthday> </foaf:Person> </rdf:RDF> El siguiente ejemplo de código muestra cómo especificar un prefijo determinado para un espacio de nombres. En primer lugar, debe especificar el prefijo y el espacio de nombres: oslc.data.staff.namespaces.foaf=http://xmlns.com/foaf/0.1/ Cuando el usuario consulta el recurso OSLC http://example.com:9080/ NCICLUSTER_NCI_oslc/data/staff/jdoe, se devuelve el RDF siguiente. Nota: El RDF de ejemplo es una aproximación. <?xml version="1.0"?> <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:impact="http://jazz.net/ns/ism/events/impact#/" xmlns:oslc="http://open-services.net/ns/core#""> <foaf:Person rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/data/staff/jdoe" xmlns:foaf="http://xmlns.com/foaf/0.1/"> <foaf:name>John Doe</foaf:name> <foaf:homepage rdf:resource="http://example.com" /> <foaf:mbox rdf:resource="[email protected]" /> <foaf:img rdf:resource="/images/jdoe.jpg" /> <foaf:birthday>19770801</foaf:birthday> </foaf:Person> </rdf:RDF> Capítulo 15. Utilización de OSLC para Netcool/Impact 233 Utilización del proveedor de servicios OSLC Para permitir que otras aplicaciones que sean consumidoras de OSLC utilicen datos OSLC de Netcool/Impact, debe crear el proveedor de servicios OSLC, registrar el proveedor de servicios con el Servicio de registro proporcionado por Jazz for Service Management y registrar los recursos OSLC en el proveedor de servicios OSLC. Para permitir que otras aplicaciones que sean consumidoras de OSLC utilicen datos OSLC de Netcool/Impact, debe completar las tareas siguientes: 1. Cree el proveedor de servicios OSLC. Consulte “Creación de proveedores de servicios OSLC en Netcool/Impact”. 2. Registre el proveedor de servicios OSLC en el Servicio de registro proporcionado por Jazz for Service Management. Consulte “Registro de proveedores de servicios OSLC en Netcool/Impact” en la página 236. 3. Registre los recursos OSLC en el proveedor de servicios OSLC. Consulte “Registro de recursos OSLC” en la página 238. El Servicio de registro es un servicio de integración que forma parte del producto Jazz for Service Management. El Servicio de registro contiene dos directorios, el registro de proveedor y el registro de recurso. Como parte de la implementación de OSLC para Netcool/Impact, debe registrar el proveedor de servicios y los recursos OSLC en el registro del recurso. Para obtener más información sobre el Servicio de registro y Jazz para la gestión de servicios, consultehttp://pic.dhe.ibm.com/infocenter/tivihelp/v3r1/topic/ com.ibm.psc.doc_1.1.0/psc_ic-homepage.html. Si está registrando los recursos OSLC en el Servicio de registro proporcionado por Jazz for Service Management, debe utilizar recursos y modelos RDF que coincidan con las especificaciones definidas en el vocabulario de tipo de recurso común (CRTV). Para obtener más información, consulte la sección sobre el vocabulario de tipo de recurso común en la guía de Servicios de registro (https://www.ibm.com/ developerworks/mydeveloperworks/wikis/home?lang=en#/wiki/ W8b1151be2b42_4819_998e_f7de7db7bfa2/page/Milestone%20documentation). Los ejemplos de esta documentación utilizan el espacio de nombres crtv. Para integrar el proveedor de servicios OSLC de Netcool/Impact con el Servicio de registro proporcionado por Jazz for Service Management, debe utilizar el espacio de nombres crtv. Si no desea integrar el proveedor de servicios OSLC con el Servicio de registro proporcionado por Jazz for Service Management, debe cambiar el espacio de nombres. Para obtener más información sobre cómo definir un espacio de nombres personalizado, consulte “Configuración de URI personalizados para tipos de datos y parámetros de salida de usuario” en la página 232. Creación de proveedores de servicios OSLC en Netcool/Impact Para utilizar Netcool/Impact para registrar recursos OSLC en el servicio de registro proporcionado por Jazz for Service Management, debe crear un proveedor de servicios OSLC en Netcool/Impact. Para crear un proveedor de servicios OSLC, actualice el archivo de configuración NCI_oslc.props. 234 Netcool/Impact: Guía de soluciones Acerca de esta tarea La definición de proveedor de servicios se basa en la colección de recursos OSLC con la que está asociada. Una colección de recursos OSLC puede compartir un único proveedor o puede utilizar varios proveedores. Aunque puede utilizar funciones de políticas RDF para crear manualmente el proveedor de servicios, normalmente utiliza Netcool/Impact para generar automáticamente un proveedor de servicios. Procedimiento 1. Para definir un proveedor de servicios, añada la sentencia siguiente al archivo de configuración NCI_oslc.props: oslc.<tipo>.<vía_acceso>.provider=<nombre_proveedor> oslc.provider.<nombre_proveedor>.title=<título> oslc.provider.<nombre_proveedor>.description=<descripción> Por ejemplo: oslc.data.computer=RESERVATION oslc.data.computer.provider=provider01 ... oslc.provider.provider01.title=Customer-x Product-y OSLC Service Provider oslc.provider.provider01.description=Customer-x Product-y OSLC Service Provider 2. Los recursos OSLC pueden compartir un servicio OSLC o pueden utilizar distintos servicios OSLC. Esto lo controla el nombre de dominio especificado. Para especificar un dominio y un título para un recurso, añada la sentencia siguiente al archivo de configuración NCI_oslc.props: oslc.<tipo>.<vía_acceso>.provider.domain=<URI_dominio> oslc.<tipo>.<vía_acceso>.provider.title=<título> Por ejemplo: oslc.data.computer=RESERVATION ... oslc.data.computer.provider=provider01 oslc.data.computer.provider.domain=http://domainx/ oslc.data.computer.provider.title=Computer Title Si especifica el mismo proveedor de servicios y nombre de dominio para dos recursos OSLC, ambos recursos comparten un único servicio OSLC. Si dos recursos utilizan el mismo proveedor de servicios pero tiene dominios distintos, los recursos utilizan distintos servicios OSLC. Si no se especifica ningún dominio, el sistema utiliza el URI de espacio de nombres predeterminado de Netcool/Impact para esta vía de acceso. 3. Utilice este URL para ver los proveedores de servicios: https://<servidor>:9081/NCICLUSTER_NCI_oslc/provider Los resultados se devuelven como un RDF. Por ejemplo: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:oslc="http://open-services.net/ns/core#"> <rdf:Description rdf:about="https://<servidor>:9081/NCICLUSTER_NCI_oslc/ provider"> <rdfs:member> <oslc:ServiceProvider rdf:about="https://<ip del servidor>:9081/ NCICLUSTER_NCI_oslc/provider/provider02"> <oslc:service> Capítulo 15. Utilización de OSLC para Netcool/Impact 235 <oslc:Service> <oslc:queryCapability> <oslc:QueryCapability> <dcterms:title>Query Capability - http://policy.js/xmlns/ directSQL</dcterms:title> <oslc:resourceType rdf:resource="http://policy.js/xmlns/ directSQL"/> <oslc:resourceShape rdf:resource="https://<ip del servidor>:9081/ NCICLUSTER_NCI_oslc/policy/resourceShapes/testBry/myDirectSQL1"/> <oslc:queryBase rdf:resource="https://<ip del servidor>:9081/ NCICLUSTER_NCI_oslc/policy/testBry/myDirectSQL1"/> </oslc:QueryCapability> </oslc:queryCapability> <oslc:domain rdf:resource="http://domainy/"/> </oslc:Service> </oslc:service> </oslc:ServiceProvider> </rdfs:member> <rdfs:member> <oslc:ServiceProvider rdf:about="https://<ip del servidor>:9081/ NCICLUSTER_NCI_oslc/provider/provider01"> <dcterms:title>Customer-x Product-y OSLC Service Provider </dcterms:title> <dcterms:description>Customer-x Product-y OSLC Service Provider </dcterms:description> <oslc:service> <oslc:Service> <oslc:queryCapability> <oslc:QueryCapability> <dcterms:title>Query Capability - http://jazz.net/ns/ism/events/ impact/data/managers</dcterms:title> <oslc:resourceType rdf:resource="http://jazz.net/ns/ism/ event/impact/data/managers"/> <oslc:resourceShape rdf:resource="https://<ip del servidor>:9081/ NCICLUSTER_NCI_oslc/data/resourceShapes/managers"/> <oslc:queryBase rdf:resource="https://<ip del servidor>:9081/ NCICLUSTER_NCI_oslc/data/managers"/> </oslc:QueryCapability> </oslc:queryCapability> <oslc:queryCapability> <oslc:QueryCapability> <dcterms:title>Managers Title</dcterms:title> <oslc:resourceType rdf:resource="http://open-services.net/ns/ crtv#ComputerSystem"/> <oslc:resourceShape rdf:resource="https://<ip del servidor>:9081/ NCICLUSTER_NCI_oslc/data/resourceShapes/computer"/> <oslc:queryBase rdf:resource="https://<ip del servidor>:9081/ NCICLUSTER_NCI_oslc/data/computer"/> </oslc:QueryCapability> </oslc:queryCapability> <oslc:domain rdf:resource="http://domainx/"/> </oslc:Service> </oslc:service> </oslc:ServiceProvider> </rdfs:member> </rdf:Description> </rdf:RDF> Registro de proveedores de servicios OSLC en Netcool/Impact Para especificar la información de servidor de registro en el archivo NCI_oslc.props, añada la propiedad de servidor de registro OSLC al archivo NCI_oslc.props. 236 Netcool/Impact: Guía de soluciones Antes de empezar Para especificar la información de servidor de registro en el archivo NCI_oslc.props, primero debe crear un proveedor de servicios. Consulte “Creación de proveedores de servicios OSLC en Netcool/Impact” en la página 234. Procedimiento 1. Especifique el servidor de registro, nombre de usuario y contraseña. Si el servidor de registro no requiere un nombre de usuario y contraseña, no necesita especificarlos. Para especificar el servidor de registro, añada la sentencia siguiente al archivo NCI_oslc.props: impact.oslc.registry.server=<RegistryserverproviderregistryURL> donde <URL_registro_proveedor_servidor_registro> es el URL de registro del proveedor de servidor de registro. Para especificar el usuario de servidor de registro, añada la sentencia siguiente al archivo NCI_oslc.props: impact.oslc.registry.username=<OSLCproviderregistryserver username> Para especificar la contraseña del servidor de registro, añada la sentencia siguiente al archivo NCI_oslc.props: impact.oslc.registry.password=<OSLCproviderregistryserver password> donde <contraseña_servidor_registro_proveedor_OSLC> es la contraseña del servidor de registro de proveedor OSLC en formato cifrado. Para localizar el formato cifrado de la contraseña, ejecute el programa nci_crypt en el directorio impact/bin. Por ejemplo: nci_crypt password {aes}DE865CEE122E844A2823266AB339E91D En este ejemplo, el parámetro de contraseña utiliza la serie completa, {aes}DE865CEE122E844A2823266AB339E91D, como contraseña. 2. Reinicie Netcool/Impact para registrar los proveedores de servicios. Tras el reinicio, Netcool/Impact registra los proveedores de servicios en el registro de servicio. Si el proveedor de servicios se ha registrado satisfactoriamente, los recursos pertenecientes al proveedor de servicios contienen una nueva propiedad, oslc:serviceProvider. Se visualiza la propiedad oslc:serviceProvider al ir al URI que contiene los recursos asociados con el proveedor. <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:RESERVATION="http://jazz.net/ns/ism/events/impact/data/computer/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:crtv="http://open-services.net/ns/crtv#" xmlns:oslc="http://open-services.net/ns/core#" xmlns:impact="http://jazz.net/ns/ism/events/impact/"> <crtv:ComputerSystem rdf:about="http://<servidor_impact>:9080/NCICLUSTER_NCI_oslc/ data/computer/item;ID=4"> <crtv:serialNumber>IBM00003SN</crtv:serialNumber> <crtv:model>IBM Model01</crtv:model> <crtv:manufacturer>IBM Manufacturer01</crtv:manufacturer> <oslc:serviceProvider rdf:resource="http://<servidor-registro>:9080/oslc/ providers/6015"/> <RESERVATION:RESERVED_DATE>2012-07-16</RESERVATION:RESERVED_DATE> <RESERVATION:RESERVED_BY>Michael Morton</RESERVATION:RESERVED_BY> Capítulo 15. Utilización de OSLC para Netcool/Impact 237 <RESERVATION:RELEASE_DATE>2013-03-06</RESERVATION:RELEASE_DATE> <RESERVATION:ID>4</RESERVATION:ID> </crtv:ComputerSystem> </rdf:RDF> 3. Registre el recurso en el servidor de registro. Netcool/Impact no registra automáticamente recursos. Consulte “Registro de recursos OSLC”. Registro de recursos OSLC Netcool/Impact no registra automáticamente recursos OSLC en el registro de servicios. Acerca de esta tarea Si está registrando recursos OSLC en el Servicio de registro proporcionado por Jazz for Service Management, debe utilizar recursos y modelos RDF que coincidan con las especificaciones del vocabulario de tipo de recurso común (CRTV). Para obtener más información, consulte la sección sobre el vocabulario de tipo de recurso común en la guía de Servicios de registro (http://pic.dhe.ibm.com/infocenter/tivihelp/ v3r1/topic/com.ibm.psc.doc_1.1.0/psc_ic-homepage.html). Si desea ver el registro de recurso para recursos OSLC que registra en el Servicio de registro proporcionado por Jazz for Service Management, debe incluir el espacio de nombres crtv en el URL. Procedimiento Para registrar recursos OSLC, puede utilizar uno de los dos métodos siguientes: v Utilice la función de políticas RDFRegister en una política para registrar el recurso. Para obtener más información, consulte “RDFRegister” en la página 243. v Utilice la función de políticas GetHTTP para realizar una función HTTP POST en el recurso o lista de miembros de recurso. Debe definir el parámetro Method como POST. También puede utilizar la sintaxis de consulta de OSLC para limitar las propiedades registradas como parte del recurso. Resultados Tras ejecutar la política que contiene la función de políticas, Netcool/Impact intenta registrar los miembros de lista de recursos o recurso en la función de políticas. Netcool/Impact devuelve también el estado de respuesta, la cabecera de ubicación y el texto del cuerpo del servidor de registro al cliente. La cabecera de ubicación visualiza la ubicación del registro de recursos para cada recurso que se ha registrado. El contenido del cuerpo incluido en la respuesta especifica la ubicación de cada registro para cada recurso que se ha registrado. Si se registra correctamente un único recurso, el sistema visualiza un mensaje Código de estado 201 (Creado). Si se registran varios recursos correctamente, el sistema visualiza un mensaje Código de estado 200 (Correcto). Cuando registra varios recursos, Netcool/Impact también devuelve las cabeceras siguientes y el texto del cuerpo de la respuesta del servidor de registro al cliente: 238 Netcool/Impact: Guía de soluciones v NextPage: si existe una página siguiente de recursos, la cabecera contiene el URI de ubicación del siguiente conjunto de recursos. Si no existe ninguna página siguiente, la respuesta no contiene esta cabecera. v TotalCount: número total de recursos en todas las páginas. Esta cabecera se devuelve cuando registra varios recursos. El registro correcto de un recurso OSLC genera dos registros. Se crea un registro en el registro de recurso. También se crea un registro de recurso y este registro está disponible mediante el URI de recurso. Para ver los registros del registro de recurso utilizados por el Servicio de registro, añada /rr/registration/collection al URI. Por ejemplo: http://example.com:9080/oslc/rr/registration/collection Para ver los recursos registrados para un proveedor de servicios, como el Servicio de registro, añada /rr/collection al URL del Servicio de registro. Por ejemplo: http://example.com:9080/oslc/rr/collection?oslc.select=* Si se registra el mismo recurso en dos instancias distintas porque pertenecen a dos proveedores de servicios distintos, se crean dos registros pero sólo un único registro de recurso y está disponible mediante un único URI de recurso. Si está integrando OSLC con el Servicio de registro y los recursos OSLC no se visualizan en esta colección, compruebe que los recursos utilizados coincidan con las directrices de modelado y utilicen el vocabulario de tipo de recurso común (CRTV). Compruebe también que el URL del recurso contenga el espacio de nombres crtv. Ejemplo de un único recurso Por ejemplo, considere el recurso que se encuentra en el URL siguiente: http://<servidor_Impact>:9080/NCICLUSTER_NCI_oslc/data/ computer/item;ID=4 Esto devuelve el siguiente RDF: <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:RESERVATION="http://jazz.net/ns/ism/event/impact/ data/computer/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:crtv="http://open-services.net/ns/crtv#" xmlns:oslc="http://open-services.net/ns/core#" xmlns:impact="http://jazz.net/ns/ism/event/impact#"> <crtv:ComputerSystem rdf:about="http://<servidor_Impact>:9080/ NCICLUSTER_NCI_oslc/data/computer/item;ID=4"> <crtv:serialNumber>IBM00003SN</crtv:serialNumber> <crtv:model>IBM Model01</crtv:model> <crtv:manufacturer>IBM Manufacturer01</crtv:manufacturer> <oslc:serviceProvider rdf:resource="http:// <servidor_registro>:9080/oslc/providers/6015"/> <RESERVATION:RESERVED_DATE>2012-07-16</RESERVATION:RESERVED_DATE> <RESERVATION:RESERVED_BY>Michael Morton</RESERVATION:RESERVED_BY> <RESERVATION:RELEASE_DATE>2013-03-06</RESERVATION:RELEASE_DATE> <RESERVATION:ID>4</RESERVATION:ID> </crtv:ComputerSystem> </rdf:RDF> Utilice la sintaxis de consulta en el URL para limitar las propiedades a crtv:serialNumber, crtv:model, crtv:manufacturer y oslc:serviceProvider: Capítulo 15. Utilización de OSLC para Netcool/Impact 239 http://<servidor_Impact>:9080/NCICLUSTER_NCI_oslc/data/computer/ item;ID=4?oslc.properties=crtv:serialNumber,oslc:serviceProvider, crtv:manufacturer,crtv:model Este URL devuelve el siguiente RDF: <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:RESERVATION="http://jazz.net/ns/ism/event/impact/data/ computer/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:crtv="http://open-services.net/ns/crtv#" xmlns:oslc="http://open-services.net/ns/core#" xmlns:impact="http://jazz.net/ns/ism/event/impact#"> <crtv:ComputerSystem rdf:about="http://<servidor_Impact>:9080/ NCICLUSTER_NCI_oslc/data/computer/item;ID=4"> <crtv:serialNumber>IBM00003SN</crtv:serialNumber> <crtv:model>IBM Model01</crtv:model> <crtv:manufacturer>IBM Manufacturer01</crtv:manufacturer> <oslc:serviceProvider rdf:resource="http://<servidor_registro>:9080/ oslc/providers/6015"/> </crtv:ComputerSystem> </rdf:RDF> Utilice la política siguiente para llevar a cabo una función POST en el URI del recurso. La función POST registra el recurso con el registro de recurso asociado con la propiedad serviceProvider que se define en el recurso. Log("SCR_RegisterSystems: Entering policy"); HTTPHost="impactserver"; HTTPPort=9080; Protocol="http"; Path="/NCICLUSTER_NCI_oslc/data/computer/item;ID=4?oslc.properties =crtv:serialNumber, oslc:serviceProvider,crtv:manufacturer,crtv:model"; ChannelKey="tom"; //Method="GET"; //Retrieves the Systems Method="POST"; //Registers the Systems AuthHandlerActionTreeName=""; FilesToSend=newobject(); HeadersToSend=newobject(); HttpProperties=newobject(); HttpProperties.UserId="tipadmin"; HttpProperties.Password="password"; x=GetHTTP(HTTPHost, HTTPPort, Protocol, Path, ChannelKey, Method, AuthHandlerActionTreeName, null, FilesToSend, HeadersToSend, HttpProperties); Log(CurrentContext());Log("SCR_RegisterSystems: HTTP Response: " + x); Una vez que se haya ejecutado la política y que se haya registrado el recurso, la ubicación del registro de inscripción en el servidor de Servicios de registro se detalla en la cabecera Location. Registro de varios recursos Puede utilizar también Netcool/Impact para registrar varios recursos en el registro de recursos. Ejemplo El URL siguiente contiene un conjunto de miembros de recurso para registrar: http://<servidor_Impact>:9080/NCICLUSTER_NCI_oslc/data/computer/ Este URL devuelve el siguiente RDF: 240 Netcool/Impact: Guía de soluciones <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:RESERVATION="http://jazz.net/ns/ism/event/impact/data/computer/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:crtv="http://open-services.net/ns/crtv#" xmlns:oslc="http://open-services.net/ns/core#" xmlns:impact="http://jazz.net/ns/ism/event/impact#"> <rdf:Description rdf:about="http://<servidor_impact>:9080/ NCICLUSTER_NCI_oslc/data/computer/"> <rdfs:member> <crtv:ComputerSystem rdf:about="http://<servidor_Impact>: 9080/NCICLUSTER_NCI_oslc/data/computer/item;ID=4"> <crtv:serialNumber>IBM00003SN</crtv:serialNumber> <crtv:model>IBM Model01</crtv:model> <crtv:manufacturer>IBM Manufacturer01</crtv:manufacturer> <oslc:serviceProvider rdf:resource="http://<registry-server>:9080/ oslc/providers/6015"/> <RESERVATION:RESERVED_DATE>2012-07-16</RESERVATION:RESERVED_DATE> <RESERVATION:RESERVED_BY>Michael Morton</RESERVATION:RESERVED_BY> <RESERVATION:RELEASE_DATE>2013-03-06</RESERVATION:RELEASE_DATE> <RESERVATION:ID>4</RESERVATION:ID> </crtv:ComputerSystem> </rdfs:member> <rdfs:member> <crtv:ComputerSystem rdf:about="http://<servidor_Impact> :9080/NCICLUSTER_NCI_oslc/data/computer/item;ID=3"> <crtv:serialNumber>IBM00002SN</crtv:serialNumber> <crtv:model>IBM Model01</crtv:model> <crtv:manufacturer>IBM Manufacturer01</crtv:manufacturer> <oslc:serviceProvider rdf:resource="http:// <servidor_registro>:9080/oslc/providers/6015"/> <RESERVATION:RESERVED_DATE>2011-02-20</RESERVATION:RESERVED_DATE> <RESERVATION:RESERVED_BY>Sandra Burton</RESERVATION:RESERVED_BY> <RESERVATION:RELEASE_DATE>2013-01-30</RESERVATION:RELEASE_DATE> <RESERVATION:ID>3</RESERVATION:ID> </crtv:ComputerSystem> </rdfs:member> <rdfs:member> <crtv:ComputerSystem rdf:about="http://<servidor_impact>:9080/ NCICLUSTER_NCI_oslc/data/computer/item;ID=0"> <crtv:serialNumber>IBM00001SN</crtv:serialNumber> <crtv:model>IBM Model01</crtv:model> <crtv:manufacturer>IBM Manufacturer01</crtv:manufacturer> <oslc:serviceProvider rdf:resource="http:// <servidor_registro>:9080/oslc/providers/6015"/> <RESERVATION:RESERVED_DATE>2012-08-11</RESERVATION:RESERVED_DATE> <RESERVATION:RESERVED_BY>John Lewis</RESERVATION:RESERVED_BY> <RESERVATION:RELEASE_DATE>2013-04-12</RESERVATION:RELEASE_DATE> <RESERVATION:ID>0</RESERVATION:ID> </crtv:ComputerSystem> </rdfs:member> </rdf:Description> <oslc:ResponseInfo rdf:about="http://<servidor_impact>9080/ NCICLUSTER_NCI_oslc/data/computer/?oslc.paging=true&amp;oslc.pageSize=100"> <oslc:totalCount>3</oslc:totalCount> </oslc:ResponseInfo> </rdf:RDF> Dado que esta lista contiene una lista de miembros de recurso, puede utilizar el parámetro de consulta oslc.select para limitar las propiedades de cada miembro de recurso: http://<servidor_Impact>:9080/NCICLUSTER_NCI_oslc/data/ computer?oslc.select=crtv:serialNumber,crtv:manufacturer,crtv:model, oslc:serviceProvider El URL devuelve el siguiente RDF: Capítulo 15. Utilización de OSLC para Netcool/Impact 241 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:RESERVATION="http://jazz.net/ns/ism/event/impact/data/computer/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:crtv="http://open-services.net/ns/crtv#" xmlns:oslc="http://open-services.net/ns/core#" xmlns:impact="http://jazz.net/ns/ism/event/impact#"> <oslc:ResponseInfo rdf:about="http://<servidor_Impact>:9080/ NCICLUSTER_NCI_oslc/data/computer?oslc.select=crtv:serialNumber, crtv:manufacturer,crtv:model,oslc:serviceProvider&amp; oslc.paging=true&amp;oslc.pageSize=100"> <oslc:totalCount>3</oslc:totalCount> </oslc:ResponseInfo> <rdf:Description rdf:about="http://<servidor_Impact>:9080/ NCICLUSTER_NCI_oslc/data/computer?oslc.select=crtv:serialNumber, crtv:manufacturer,crtv:model,oslc:serviceProvider"> <rdfs:member> <crtv:ComputerSystem rdf:about="http://<servidor_Impact>: 9080/NCICLUSTER_NCI_oslc/data/computer/item;ID=4"> <crtv:serialNumber>IBM00003SN</crtv:serialNumber> <crtv:model>IBM Model01</crtv:model> <crtv:manufacturer>IBM Manufacturer01</crtv:manufacturer> <oslc:serviceProvider rdf:resource="http://<registry-server>: 9080/oslc/providers/6015"/> </crtv:ComputerSystem> </rdfs:member> <rdfs:member> <crtv:ComputerSystem rdf:about="http://<servidor_Impact>: 9080/NCICLUSTER_NCI_oslc/data/computer/item;ID=3"> <crtv:serialNumber>IBM00002SN</crtv:serialNumber> <crtv:model>IBM Model01</crtv:model> <crtv:manufacturer>IBM Manufacturer01</crtv:manufacturer> <oslc:serviceProvider rdf:resource="http://<servidor_registro>: 9080/oslc/providers/6015"/> </crtv:ComputerSystem> </rdfs:member> <rdfs:member> <crtv:ComputerSystem rdf:about="http://<servidor_Impact>: 9080/NCICLUSTER_NCI_oslc/data/computer/item;ID=0"> <crtv:serialNumber>IBM00001SN</crtv:serialNumber> <crtv:model>IBM Model01</crtv:model> <crtv:manufacturer>IBM Manufacturer01</crtv:manufacturer> <oslc:serviceProvider rdf:resource="http://<registry-server>: 9080/oslc/providers/6015"/> </crtv:ComputerSystem> </rdfs:member> </rdf:Description> </rdf:RDF> Utilice la política siguiente para llevar a cabo una función POST en el URI de los recursos. La función POST registra los registros con el registro de recurso asociado con la propiedad serviceProvider que se define en el recurso. Log("SCR_RegisterSystems: Entering policy"); HTTPHost="impactserver"; HTTPPort=9080; Protocol="http"; Path="/NCICLUSTER_NCI_oslc/data/computer?oslc.paging =true&oslc.pageSize=100"; ChannelKey="tom"; //Method="GET"; //Retreives the Systems Method="POST"; //Registers the Systems AuthHandlerActionTreeName=""; FilesToSend=newobject(); HeadersToSend=newobject(); HttpProperties=newobject(); HttpProperties.UserId="tipadmin"; HttpProperties.Password="password"; x=GetHTTP(HTTPHost, HTTPPort, Protocol, Path, ChannelKey, Method, 242 Netcool/Impact: Guía de soluciones AuthHandlerActionTreeName, null, FilesToSend, HeadersToSend, HttpProperties); Log(CurrentContext()); Log("SCR_RegisterSystems: HTTP Response: " + x); Si es correcto, el sistema visualiza un mensaje de confirmación. Netcool/Impact también devuelve al cliente la cabecera, el texto del cuerpo y otra información contenida en la respuesta desde el servidor de registro. La cabecera y el texto del cuerpo especifican la ubicación de cada uno de los registros para cada uno de los recursos que se ha registrado. RDFRegister Puede utilizar la función RDFRegister para ayudarle a registrar los proveedores de servicios o los recursos OSLC con el servidor de registro. Antes de poder registrar un proveedor de servicios o un recurso, debe utilizar las otras funciones de política RDF para crear un modelo RDF que cumpla los requisitos de OSLC y de servicios de registro. Después de haber creado el modelo RDF, utilice la función RDFRegister para registrar el RDF con el registro de recursos incluido en el servicio de integración de servicios de registro. Si el proveedor de servicios o el recurso OSLC se ha registrado correctamente, la función RDFRegister devuelve la ubicación del recurso del registro de registro. Las variables siguientes y sus valores de retorno también se devuelven para proporcionar información adicional: v ResultCode contiene el código de resultado para la respuesta. v HeadersReceived contiene las cabeceras recibidas en la respuesta. v HeadersSent contiene las cabeceras enviadas en la respuesta. v ResponseBody contiene el texto del cuerpo de respuesta. Si los parámetros de consulta se establecen en el URL y utiliza la función de la política RDFRegister para registrar un proveedor de servicios, debe añadir manualmente la ubicación del proveedor de servicios a la política. Por ejemplo: RDFStatement(newModel, manu[0].subject, "http://open-services.net/ns/ core#serviceProvider", serviceProviderURL, true); Si utiliza la serie de consulta dentro de la ruta, también debe asegurarse de que el parámetro FormParameters está establecido en nulo. Por ejemplo: FormParameters=null; Finalmente, debe asegurarse de que la política contiene información de paginación. Por ejemplo: Path="/NCICLUSTER_NCI_oslc/data/mysql1?oslc.paging=true&oslc.pageSize=100"; Si no se realiza correctamente, el valor de retorno del registro de la ubicación de recurso es nulo. Se devuelve la información del código de error en las variables ErrorReason y ResultCode. Sintaxis La función RDFRegister tiene la función siguiente: [ Serie =] RDFRegister(URI, Username , Password, Model) Capítulo 15. Utilización de OSLC para Netcool/Impact 243 donde Username puede ser una serie nula o vacía para especificar que no es necesaria la autenticación. Parámetros La función RDFRegister tiene los parámetros siguientes: Tabla 70. Parámetros de la función RDFRegister Parámetro Tipo Descripción URI Serie El URI de la fábrica de creación del servidor de servicios de registro Username Serie Nombre de usuario para el servidor de servicios de registro Password Serie Contraseña para el servidor de servicios de registro Model Modelo Modelo que contiene el RDF Ejemplo El ejemplo siguiente registra manualmente un proveedor de servicios y un conjunto de recursos que ha expuesto el proveedor de servidores OSLC en Netcool/Impact. La información del servidor de servicios de registro es: RegistryServerProviderCFUri="http://<servidor_servicios_registro>: 9080/oslc/pr/collection"; RegistryServerResourceCFUri="http://<servidor_servicios_registro>: 9080/oslc/rr/registration/collection"; RegistryServerUsername="system"; RegistryServerPassword="manager"; La información del servidor Netcool/Impact es: HTTPHost="<servidor_impact>"; HTTPPort=9080; Protocol="http"; Path1="/NCICLUSTER_NCI_oslc/provider/provider01"; Path2="/NCICLUSTER_NCI_oslc/data/computer"; ChannelKey=""; Method="GET"; AuthHandlerActionTreeName=""; FormParameters=NewObject(); FilesToSend=NewObject(); HeadersToSend=NewObject(); HttpProperties = NewObject(); HttpProperties.UserId="tipadmin"; HttpProperties.Password="passw0rd"; HttpProperties.AuthenticationScheme="basic"; Obtener el RDF del proveedor de servicios desde Netcool/Impact: serviceProviderResponse=GetHTTP(HTTPHost,HTTPPort, Protocol, Path1, ChannelKey,Method, AuthHandlerActionTreeName, null, FilesToSend, HeadersToSend, HttpProperties); Crear un modelo RDF basándose en la respuesta del proveedor de servicios: serviceProviderModel=RDFParse(serviceProviderResponse) 244 Netcool/Impact: Guía de soluciones Registrar el proveedor de servicios en el registro del proveedor: serviceProviderURL = RDFRegister(RegistryServerProviderCFUri, RegistryServerUsername, RegistryServerPassword,serviceProviderModel); log("Provider Registry-Service Provider URL: " + serviceProviderURL); Obtener todos los recursos del sistema del ordenador desde Netcool/Impact: allResources=GetHTTP(HTTPHost,HTTPPort, Protocol, Path2, ChannelKey, Method,AuthHandlerActionTreeName, null, FilesToSend, HeadersToSend, HttpProperties); Crear un modelo RDF basándose en la respuesta del proveedor de servicios: allResourceModel=RDFParse(allResources); Registrar cada sistema del ordenador y un conjunto de propiedades con el registro de recurso: statements=RDFSelect(allResourceModel, null, "http://jazz.net/ns/ism/ events/impact/data/computer/ID", null); size=Length(statements); count=0; while(count<size) { Path3=statements[count].subject; //Obtener el recurso del sistema del ordenador individual resourceResponse=GetHTTP(HTTPHost,HTTPPort, Protocol, Path3, ChannelKey, Method,AuthHandlerActionTreeName, null, FilesToSend, HeadersToSend, HttpProperties); resourceModel=RDFParse(resourceResponse); Crear un modelo que contenga las propiedades y los datos que desea registrar: newModel=RDFModel(); manu=RDFSelect(resourceModel, null, "http://open-services.net/ns/ crtv#manufacturer",null); model=RDFSelect(resourceModel, null, "http://open-services.net/ns/ crtv#model", null); serial=RDFSelect(resourceModel, null, "http://open-services.net/ns/ crtv#serialNumber", null); RDFModelUpdateNS(newModel, "crtv", "http://open-services.net/ns/crtv#"); RDFModelUpdateNS(newModel, "oslc","http://open-services.net/ns/core#"); RDFStatement(newModel, manu[0].subject, "http://www.w3.org/1999/02/ 22-rdf-syntax-ns#type", "http://open-services.net/ns/crtv#ComputerSystem", true); RDFStatement(newModel, manu[0].subject, manu[0].predicate, manu[0].object, RDFNodeIsResource(manu[0].object)); RDFStatement(newModel, manu[0].subject, model[0].predicate, model[0].object, RDFNodeIsResource(manu[0].object)); RDFStatement(newModel, manu[0].subject, serial[0].predicate, serial[0].object, RDFNodeIsResource(manu[0].object)); Actualizar el modelo con la ubicación del proveedor de servicios: RDFStatement(newModel, manu[0].subject, "http://open-services.net/ns/ core#serviceProvider", serviceProviderURL, true); Registrar el recurso en el registro de recursos: resourceURL = RDFRegister(RegistryServerResourceCFUri, RegistryServerUsername, RegistryServerPassword, newModel); log("Resource Registry-Resource URL: " +resourceURL); count=count+1; } Capítulo 15. Utilización de OSLC para Netcool/Impact 245 RDFUnRegister Para eliminar el registro del registro de un proveedor de servicios o recurso del servidor de registro, utilice la función RDFUnRegister para proporcionar la ubicación del registro del registro, el nombre de usuario y la contraseña del servidor de servicios de registro y el registro de registro que desea eliminar. Antes de poder eliminar el registro de registro de un proveedor de servicios, debe eliminar todos los registros de registro para los recursos de OSLC asociados. Si se realiza correctamente, la función RDFUnRegister devuelve el código de mensaje 204 y el valor true (verdadero). Las variables siguientes y sus valores de retorno también se devuelven para proporcionar información adicional: v ResultCode contiene el código de resultado para la respuesta. v HeadersReceived contiene las cabeceras recibidas en la respuesta. v HeadersSent contiene las cabeceras enviadas en la respuesta. v ResponseBody contiene el texto del cuerpo de respuesta. Si no se realiza correctamente, el valor de retorno del registro de registro de la ubicación de recurso es false (falso). La información del código de error se devuelve en las variables ErrorReason y ResultCode. Sintaxis La función RDFUnRegister tiene los parámetros siguientes: [ Serie =] RDFUnRegister(URI, Username , Password) donde Username puede ser una serie nula o vacía para especificar que no es necesaria la autenticación. Parámetros Tabla 71. Parámetros de parámetro de la función RDFUnRegister Parámetro Tipo Descripción URI Serie Ubicación que contiene el registro de registro para el recurso o el proveedor de servicios Username Serie Nombre de usuario para el servidor de servicios de registro Password Serie Contraseña para el servidor de servicios de registro Ejemplo de cómo eliminar el registro de un proveedor de servicios El ejemplo siguiente demuestra cómo eliminar el registro del proveedor de servicios. La ubicación del proveedor de servicios es: http://<servidor_registro>:9080/oslc/providers/6577 Utilice la función RDFUnRegister para eliminar el registro. Por ejemplo: 246 Netcool/Impact: Guía de soluciones //Información del servidor de registro ServiceProviderUri="http://<servidor_registro>:9080/oslc/ providers/6577"; RegistryServerUsername="system"; RegistryServerPassword="manager";result = RDFUnRegister(ServiceProviderUri, RegistryServerUsername, RegistryServerPassword); Ejemplo de cómo eliminar el registro de un recurso OSLC El ejemplo siguiente demuestra cómo utilizar la función de la política para eliminar el registro de un recurso OSLC. registrationURL = "http://nc004075.romelab.it.ibm.com:16310/oslc/registration/ 1351071987349"; providerURL = "http://nc004075.romelab.it.ibm.com:16310/oslc/providers/ 1351071987343"; RegistryServerUsername="smadmin"; RegistryServerPassword="tbsm01bm"; returnString = RDFUnRegister (registrationURL, RegistryServerUsername, RegistryServerPassword); Utilización de políticas de Netcool/Impact y OSLC Puede integrar el proveedor OSLC de Netcool/Impact y políticas de Netcool/Impact. Acceso a parámetros de usuario de salida como recursos OSLC Para utilizar el proveedor OSLC de Netcool/Impact para ejecutar políticas de Netcool/Impact y acceder a los resultados, debe editar el archivo NCI_oslc.props que se encuentra en el directorio IMPACT_HOME/etc. Acerca de esta tarea Netcool/Impact devuelve dos tipos de objetos RDF, literales y recursos. Los literales RDF contiene un valor real. Los recursos RDF se devuelven como URL a los que puede acceder para encontrar información sobre un objeto. Procedimiento 1. Para acceder a los resultados de política de Netcool/Impact, edite el archivo NCI_oslc.props que se encuentra en el directorio IMPACT_HOME/etc, donde NCI es el nombre de su Servidor Impact. Añada la sentencia siguiente para cada política a la que desee acceder: oslc.policy.<componente_vía_acceso>=<nombre_política> 2. Reinicie el Servidor Impact. Ejemplo Por ejemplo, añade lo siguiente al archivo NCI_oslc.props para acceder a la política SNMPTableTest: oslc.policy.tabletest=SNMPTableTest Utilice el siguiente URL para ejecutar la política y que se devuelvan los resultados: http://example.com:9080/NCI_NCICLUSTER_oslc/policy/tabletest Capítulo 15. Utilización de OSLC para Netcool/Impact 247 donde NCI es el nombre del Servidor Impact y NCICLSUTER es el nombre del clúster de Netcool/Impact. Al acceder al URL, la política se ejecuta y los parámetros de usuario de salida están disponibles como recursos RDF. OSLC y salida de variables por resultados de política Las variables simples, como serie, entero, doble, flotante, booleano e indicación de fecha y hora están disponibles como literales RDF. Las variables más complejas como por ejemplo objetos de Impact, matrices y resultados de funciones se visualizan como recursos RDF con un enlace de RDF que contiene detalles internos de la variable. Este ejemplo muestra los parámetros de salida de usuario de la política Example. Los resultados de esta política contienen tanto literales como recursos RDF. El siguiente URL desencadena la ejecución de política y hace que los resultados estén disponibles como recursos OSLC: http://example.com:9080/NCICLUSTER_NCI_oslc/policy/example/ La información se devuelve como: <rdf:RDF <examplePolicy:example rdf:about="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example"> <example:myArrayStr rdf:resource="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example/myArrayStr"/> <example:myObject rdf:resource="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example/myObject"/> <example:myObjArray rdf:resource="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example/myObjArray"/> <example:myGetFilter rdf:resource="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example/myGetFilter"/> <example:MyAlerts rdf:resource="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example/MyAlerts"/> <example:myString>Brian</example:myString> <example:myDouble>22.5</example:myDouble> <example:myFloat>100.55</example:myFloat> <example:myInteger>32</example:myInteger> <example:myBoolean>true</example:myBoolean> </examplePolicy:example> </rdf:RDF> Las variables más complejas de este ejemplo, como myObject, myArrayStr, myObjArray y myGetFilter, se visualizan como enlaces a recursos. Las otras variables son variables simples, como myString, myDouble, myFloat, myInteger y myBoolean, que se visualizan como literales junto con sus valores. El URL siguiente se utiliza para acceder al URL de recurso de objetos de Netcool/Impact, representados por la variable myObject: http://example.com:9080/NCICLUSTER_NCI_oslc/policy/example/myObject El URL de recurso devuelve los resultados como: <rdf:RDF> <examplePolicy:myObject rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/ policy/example/myObject"> <myObject:bmi>24.5</myObject:bmi> <myObject:lname>Doe</myObject:lname> <myObject:fname>John</myObject:fname> <myObject:age>25</myObject:age> 248 Netcool/Impact: Guía de soluciones <oslc:totalCount>1</oslc:totalCount> <rdf:type rdf:resource="http://open-services.net/ns/core#ResponseInfo"/> </examplePolicy:myObject> </rdf:RDF> Acceso a matrices de variables desde resultados de política Para acceder a una matriz de variables contenidas en un resultado de política en un contexto de OSLC, utiliza un URL que contiene el nombre de variable. Antes de empezar El prefijo de matriz predeterminado es oslc_pos. Para cambiar este valor, añada la siguiente definición al archivo NCI_oslc.props: oslc.policy.<componente_vía_acceso>.arrayprefix=<prefijo>. Por ejemplo, añada la siguiente definición al archivo NCI_oslc.props para cambiar el prefijo a pos para el componente de vía de acceso de example: oslc.properties.example.arrayprefix=pos Procedimiento Para acceder al URL del recurso utilizado para una matriz de objetos, representada en este ejemplo por la variable myArrayStr, utilice el URL siguiente: http://<servidor>:<puerto>/NCICLUSTER_NCI_oslc/policy/ example/myArrayStr Resultados Este URL devuelve los resultados siguientes: <rdf:RDF> <examplePolicy:myArrayStr rdf:about="http://<servidor>:<puerto>/ NCICLUSTER_NCI_oslc/policy/example/myArrayStr"> <myArrayStr:oslc_pos_2>Hi</myArrayStr:oslc_pos_2> <myArrayStr:oslc_pos_1>Hey</myArrayStr:oslc_pos_1> <myArrayStr:oslc_pos_0>Hello</myArrayStr:oslc_pos_0> <oslc:totalCount>1</oslc:totalCount> <rdf:type rdf:resource="http://open-services.net/ns/core#ResponseInfo"/> </examplePolicy:myArrayStr> </rdf:RDF> Si una variable de matriz contiene varios objetos de Netcool/Impact, se creará un recurso que contiene un enlace a varios recursos. Cada uno de estos recursos contiene un enlace al propio objeto de Netcool/Impact de la matriz. Ejemplo Utilice el URL siguiente para acceder a la matriz de variables representada por la variable myObjArray: http://example.com:9080/NCICLUSTER_NCI_oslc/policy/example/myObjArray/ Dado que esta matriz contiene varios objetos, el URL devuelve los resultados siguientes: <rdf:RDF> <oslc:ResponseInfo rdf:about="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example/myObjArray/"> <rdfs:member> <examplePolicy:myObjArray rdf:about="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example/myObjArray"> Capítulo 15. Utilización de OSLC para Netcool/Impact 249 <myObjArray:oslc_pos_2 rdf:resource="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example/myObjArray/oslc_pos_2"/> <myObjArray:oslc_pos_1 rdf:resource="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example/myObjArray/oslc_pos_1"/> <myObjArray:oslc_pos_0 rdf:resource="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example/myObjArray/oslc_pos_0"/> </examplePolicy:myObjArray> </rdfs:member> <oslc:totalCount>1</oslc:totalCount> </oslc:ResponseInfo> </rdf:RDF> Si accede al URL asociado a uno de los objetos de Netcool/Impact, se devuelven los resultados siguientes: <rdf:RDF> <myObjArray:oslc_pos_1 rdf:about="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/example/myObjArray/oslc_pos_1"> <oslc_pos_1:fname>Garrett</oslc_pos_1:fname> <oslc_pos_1:bmi>33.1</oslc_pos_1:bmi> <oslc_pos_1:age>30</oslc_pos_1:age> </myObjArray:oslc_pos_1> </rdf:RDF> Visualización de las formas de recurso para resultados de política Las formas de recurso están disponibles para cualquier recurso OSLC generado por el proveedor OSLC de Netcool/Impact. La forma de recurso define el conjunto de propiedades de OSLC para una operación específica. Procedimiento Para visualizar la forma de recurso para cualquier objeto OSLC, añada resourceShapes al URL. Ejemplo Por ejemplo, utiliza el URL siguiente para visualizar la definición de forma de recurso para el recurso especificado: http://example.com:9080/NCICLUSTER_NCI_oslc/policy/resourceShapes/ example/myGetFilter/item;ID=1010 Este URL devuelve los resultados siguientes que incluyen la definición de forma de recurso: <rdf:RDF <oslc:ResourceShape rdf:about="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/resourceShapes/example/myGetFilter"> <dcterms:title>examplePolicy</dcterms:title> <oslc:property> <oslc:Property rdf:about="http://xmlns.com/foaf/0.1/givenName"> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <dcterms:title>NAME</dcterms:title> <oslc:propertyDefinition rdf:resource="http://jazz.net/ns/ism/events/ impact/policy/example/myGetFilter/NAME"/> <oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/> <oslc:name>NAME</oslc:name> <dcterms:description>NAME</dcterms:description> </oslc:Property> </oslc:property> <oslc:property> <oslc:Property rdf:about="http://jazz.net/ns/ism/events/impact/policy/ example/myGetFilter/STARTED"> 250 Netcool/Impact: Guía de soluciones <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/> <dcterms:title>STARTED</dcterms:title> <oslc:propertyDefinition rdf:resource="http://jazz.net/ns/ism/events/ impact/policy/example/myGetFilter/STARTED"/> <oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/> <oslc:name>STARTED</oslc:name> <dcterms:description>STARTED</dcterms:description> </oslc:Property> </oslc:property> <oslc:property> <oslc:Property rdf:about="http://jazz.net/ns/ism/events/impact/policy/ example/myGetFilter/MANAGER"> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/> <dcterms:title>MANAGER</dcterms:title> <oslc:propertyDefinition rdf:resource="http://jazz.net/ns/ism/events/ impact/policy/example/myGetFilter/MANAGER"/> <oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/> <oslc:name>MANAGER</oslc:name> <dcterms:description>MANAGER</dcterms:description> </oslc:Property> </oslc:property> <oslc:property> <oslc:Property rdf:about="http://jazz.net/ns/ism/events/impact/policy/ example/myGetFilter/ID"> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/> <dcterms:title>ID</dcterms:title> <oslc:propertyDefinition rdf:resource="http://jazz.net/ns/ism/events/ impact/policy/example/myGetFilter/ID"/> <oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/> <oslc:name>ID</oslc:name> <dcterms:description>ID</dcterms:description> </oslc:Property> </oslc:property> <oslc:property> <oslc:Property rdf:about="http://jazz.net/ns/ism/events/impact/policy/ example/myGetFilter/DEPT"> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <dcterms:title>DEPT</dcterms:title> <oslc:propertyDefinition rdf:resource="http://jazz.net/ns/ism/events/ impact/policy/example/myGetFilter/DEPT"/> <oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/> <oslc:name>DEPT</oslc:name> <dcterms:description>DEPT</dcterms:description> </oslc:Property> </oslc:property> <oslc:property> <oslc:Property rdf:about="http://jazz.net/ns/ism/events/impact/policy/ example/myGetFilter/CEASED"> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/> <dcterms:title>CEASED</dcterms:title> <oslc:propertyDefinition rdf:resource="http://jazz.net/ns/ism/events/ impact/policy/example/myGetFilter/CEASED"/> <oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/> <oslc:name>CEASED</oslc:name> <dcterms:description>CEASED</dcterms:description> </oslc:Property> </oslc:property> <oslc:describes rdf:resource="http://xmlns.com/foaf/0.1/Group"/> </oslc:ResourceShape> </rdf:RDF> Capítulo 15. Utilización de OSLC para Netcool/Impact 251 Variables compatibles de OSLC y Proveedor de datos de interfaz de usuario para resultados de política El proveedor OSLC de Netcool/Impact y Proveedor de datos de interfaz de usuario pueden ejecutar una política y hacer que los resultados estén disponibles como un recurso compatible de OSLC o Proveedor de datos de interfaz de usuario con valores de propiedades que contienen los parámetros de salida de usuario. Se da soporte a los siguientes tipos de variables: v v v v v v v Serie Entero Doble Flotante Booleano Indicación de fecha y hora Objeto de Impact v Largo (representado como un entero en OSLC) También se da soporte a matrices de variables para cada una de estas variables. Estas matrices deben ser del mismo tipo. También se da soporte a las variables devueltas por las funciones GetByFilter y DirectSQL. Configuración de parámetros de usuario Para utilizar Proveedor de datos de interfaz de usuario o OSLC con políticas de Netcool/Impact, debe configurar parámetros de usuario para que los resultados de política sean compatibles con Proveedor de datos de interfaz de usuario o disponible como recursos OSLC. Acerca de esta tarea Puede crear parámetros de tiempo de ejecución de política o parámetros de salida de política. Los parámetros de tiempo de ejecución de política representan los parámetros de tiempo de ejecución que define en políticas. Por ejemplo, puede utilizar un parámetro de tiempo de ejecución de política para pasar valores desde una política otra en mashup de datos. Los parámetros de salida de política representan los parámetros emitidos por políticas. Por ejemplo, el Proveedor de datos de interfaz de usuario utiliza parámetros de salida de política para visualizar datos de políticas en la consola. Procedimiento Para abrir el editor de parámetros de usuario de política en la barra de herramientas del editor de políticas, pulse el icono Configurar parámetros de usuario. 2. Para crear un parámetro de salida de política, pulse Nuevo parámetro de salida:Nuevo. Para crear un parámetro de tiempo de ejecución de política, pulse Nuevo parámetro de tiempo de ejecución:Nuevo. Los campos obligatorios se indican mediante un asterisco (*). Debe especificar un nombre exclusivo en el campo Nombre. 3. Defina las esquemas personalizados para los parámetros de salida, si es necesario. 1. 252 Netcool/Impact: Guía de soluciones Si está utilizando la función de políticas DirectSQL con OSLC, debe definir el esquema personalizado para ella. Si está utilizando DirectSQL, Objeto de Impact o Matriz de objeto de Impact con Proveedor de datos de interfaz de usuario o el widget de gráfica, debe definir el esquema personalizado para estos valores. Para obtener más información, consulte “Creación de valores de esquema personalizado para parámetros de salida” en la página 177 4. Para guardar los cambios en los parámetros y cerrar la ventana, pulse Aceptar. Ejemplo Este ejemplo muestra cómo crear parámetros de salida para una política. En primer lugar, define una política simple, como la siguiente: first_name = “Mark”; zip_code = 12345; Log(“Hello “ + first_name + “ living at “ + zip_code); A continuación, define los parámetros de salida para esta política. En este caso, hay dos parámetros de salida. Especifica la siguiente información: Tabla 72. Parámetro de salida de PolicyDT1 Campo Entrada de usuario Nombre Especifique un nombre exclusivo. Por ejemplo, PolicyDT1. Nombre de variable de política first_name Formato Serie Tabla 73. Parámetro de salida de PolicyDT2 Campo Entrada de usuario Nombre Especifique un nombre exclusivo. Por ejemplo, PolicyDT2 Nombre de variable de política zip_code Formato Entero Acceso a tipos de datos generados por la función GetByFilter Si desea acceder a los resultados de la función GetByFilter, debe crear parámetros de salida para el proveedor OSLC. Procedimiento 1. Para abrir el editor de parámetros de usuario de política, pulse el icono Configurar parámetros de usuario en la barra de herramientas del editor de políticas. Puede crear parámetros de usuario de política para tiempo de ejecución y salida. Para abrir la ventana Crear un nuevo parámetro de salida de política, pulse Nuevo. 2. Seleccione tipo de datos como formato. 3. Especifique el nombre del elemento de datos al que se asigna la salida de la función GetByFilter en el campo Nombre de variable de política. 4. Especifique el nombre del origen de datos en el campo Nombre de origen de datos. 5. Especifique el nombre del tipo de datos en el campo Nombre de tipo de datos. Capítulo 15. Utilización de OSLC para Netcool/Impact 253 Ejemplo Este ejemplo muestra cómo hacer que la salida de la función GetByFilter esté disponible para el proveedor OSLC de Netcool/Impact. Crea un tipo de datos denominado ALERTS que pertenece al origen de datos defaultobjectserver. Este tipo de datos pertenece a Netcool/OMNIbus y apunta a alerts.status. El campo de clave es Identificador. Se asocian las siguientes cuatro filas de datos al campo de clave: v Event1 v Event2 v Event3 v Event4 Crea la política siguiente, denominada Test_Policy3: MyAlerts = GetByFilter("ALERTS", "Severity > 0", false); A continuación, define los parámetros de salida para la política, de la forma siguiente: Tabla 74. Parámetro de salida de PolicyData1 Campo Entrada de usuario Nombre PolicyData1 Nombre de variable de política MyAlerts Formato Datatype Nombre de origen de datos defaultobjectserver Nombre de tipo de datos ALERTS Acceso a variables generadas por la función DirectSQL Para acceder a variables generadas por la función de políticas DirectSQL, debe crear parámetros de salida y valores de formato DirectSQL. Acerca de esta tarea Si la función de políticas DirectSQL genera una variable, Netcool/Impact crea un recurso RDF. Este recurso contiene varias propiedades para cada parámetro de salida definido. Sólo se da soporte a las siguientes variables simples: v Serie v Doble v Entero v Largo v Indicación de fecha y hora v Booleano Si los nombres de columna contienen caracteres especiales, deberá añadir una sentencia que liste estos caracteres especiales al archivo NCI_server.props. Para obtener más información, consulte el tema sobre la utilización de caracteres especiales en nombres de columna en la sección sobre la resolución de problemas de cuestiones generales de Netcool/Impact en la Guía de resolución de problemas. 254 Netcool/Impact: Guía de soluciones Si las políticas que utiliza para proporcionar datos a OSLC contienen caracteres especiales, deberá omitirlos. Para obtener más información, consulte el tema sobre la utilización de caracteres especiales en políticas OSLC y Proveedor de datos de interfaz de usuario en la sección sobre la resolución de problemas de OSLC en la Guía de resolución de problemas. Procedimiento Para acceder a variables generadas por la función de políticas DirectSQL, cree un parámetro de salida DirectSQL y defina los valores DirectSQL para este parámetro. Para ver una descripción detallada de estos pasos, consulte “Creación de valores de esquema personalizado para parámetros de salida” en la página 177. Ejemplo Este ejemplo muestra cómo acceder a variables generadas por la función de políticas DirectSQL. Puede definir la siguiente política que utiliza la función DirectSQL: MyAlerts=DirectSQL(’Omnibus’,’select min(Serial) as min_serial, max(Serial) as max_serial,count(<) as num_events from alerts.status’, false); A continuación, defina el parámetro de salida DirectSQL tal como se describe en la tabla. No necesita especificar un nombre de origen de datos o tipo de datos. Tabla 75. Parámetro de salida DirectSQL Campo Entrada de usuario Nombre DirectSQL_OP1 Nombre de variable de política DirectSQL_1 Formato DirectSQL Para crear los valores de formato DirectSQL, pulse el icono del editor DirectSQL. Defina los valores de formato de la forma siguiente: Tabla 76. Valores de formato DirectSQL Nombre Formato Clave min_serial Doble True max_serial Flotante True num_events Entero True Utilice el URI siguiente para ejecutar la política y que se devuelvan los resultados: http://example.com:9080/NCICLUSTER_NCI_oslc/ policy/examplePolicy/MyAlerts Los resultados son: <rdf:RDF <oslc:ResponseInfo rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/ policy/examplePolicy/MyAlerts"> <rdfs:member> <examplePolicy:MyAlerts rdf:about="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/examplePolicy/MyAlerts/ item;min_serial=133;num_events=12;max_serial=521"> <MyAlerts:num_events>12</MyAlerts:num_events> <MyAlerts:min_serial>133</MyAlerts:min_serial> <MyAlerts:max_serial>521</MyAlerts:max_serial> Capítulo 15. Utilización de OSLC para Netcool/Impact 255 </examplePolicy:MyAlerts> </rdfs:member> <oslc:totalCount>1</oslc:totalCount> </oslc:ResponseInfo> </rdf:RDF> Los resultados contienen también la forma de recurso: <rdf:RDF <oslc:ResourceShape rdf:about="http://example.com:9080/ NCICLUSTER_NCI_oslc/policy/resourceShapes/example/MyAlerts"> <dcterms:title>examplePolicy</dcterms:title> <oslc:property> <oslc:Property rdf:about="http://jazz.net/ns/ism/events/impact/policy/ example/myDirectSQL/num_events"> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/> <dcterms:title>num_events</dcterms:title> <oslc:propertyDefinition rdf:resource="http://jazz.net/ns/ism/events/ impact/policy/example/myDirectSQL/num_events"/> <oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/> <oslc:name>num_events</oslc:name> <dcterms:description>num_events</dcterms:description> </oslc:Property> </oslc:property> <oslc:property> <oslc:Property rdf:about="http://jazz.net/ns/ism/events/impact/policy/ example/myDirectSQL/min_serial"> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#double"/> <dcterms:title>min_serial</dcterms:title> <oslc:propertyDefinition rdf:resource="http://jazz.net/ns/ism/events/ impact/policy/example/myDirectSQL/min_serial"/> <oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/> <oslc:name>min_serial</oslc:name> <dcterms:description>min_serial</dcterms:description> </oslc:Property> </oslc:property> <oslc:property> <oslc:Property rdf:about="http://jazz.net/ns/ism/events/impact/policy/ example/myDirectSQL/max_serial"> <oslc:readOnly>true</oslc:readOnly> <oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#float"/> <dcterms:title>max_serial</dcterms:title> <oslc:propertyDefinition rdf:resource="http://jazz.net/ns/ism/events/ impact/policy/example/myDirectSQL/max_serial"/> <oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/> <oslc:name>max_serial</oslc:name> <dcterms:description>max_serial</dcterms:description> </oslc:Property> </oslc:property> <oslc:describes rdf:resource="http://jazz.net/ns/ism/events/impact/ policy/example/"/> </oslc:ResourceShape> </rdf:RDF> Creación de valores de esquema personalizado para parámetros de salida: Al definir parámetros de salida que utilicen el formato DirectSQL, Matriz de objetos Impact o Objeto Impact en el editor de parámetros de salida del usuario, debe especificar también un nombre y un formato para cada campo incluido en los objetos DirectSQL, Matriz de objetos Impact u Objeto Impact. 256 Netcool/Impact: Guía de soluciones Acerca de esta tarea Las definiciones de esquema personalizado las utiliza Netcool/Impact para visualizar los datos en la consola y pasar valores a Proveedor de datos de interfaz de usuario y OSLC. Puede crear los esquemas personalizados y seleccionar el formato basado en los valores de cada campo incluido en el objeto. Por ejemplo, puede crear una política que contenga dos campos en un objeto: O1.city="NY" O1.ZIP=07002 Puede definir los siguientes valores de esquema personalizado para esta política: Tabla 77. Valores de esquema personalizado de City Campo Entrada Nombre Ciudad Formato Serie Tabla 78. Valores de esquema personalizado de ZIP Campo Entrada Nombre ZIP Formato Entero Si utiliza la función de política DirectSQL con Proveedor de datos de interfaz de usuario o OSLC, debe definir un valor de esquema personalizado para cada valor de DirectSQL que utilice. Si desea utilizar el widget de gráfica para visualizar datos de un objeto Impact o una matriz de objetos Impact con Proveedor de datos de interfaz de usuario y la consola, puede definir valores de esquema personalizado para los campos incluidos en los objetos. Los esquemas personalizados le ayudan a crear descriptores para columnas en la gráfica durante la inicialización. Sin embargo, los esquemas personalizados no son necesarios técnicamente. Si no define valores para ninguno de estos dos formatos, el sistema vuelve a descubrir posteriormente cada objeto Impact al crear campos individuales como el campo clave, UIObjectId, o el campo para el widget de árbol, UITreeNodeId. No es necesario definir estos valores para OSLC. Procedimiento 1. En el editor de parámetros de usuario de política, elija DirectSQL, Objeto Impact o Matriz de objetos Impact en el campo Formato. 2. El sistema visualiza el icono Abrir el editor de definiciones de esquema junto al campo Definición de esquema. Para abrir el editor, pulse el icono. 3. Puede editar una entrada existente o puede crear una nueva. Para definir una entrada nueva, pulse Nueva. Especifique un nombre y elija un formato apropiado. Para editar una entrada existente, pulse el icono Editar junto a la entrada que desea editar. 4. Para marcar una entrada como un campo clave, active el recuadro de selección en la columna Campo clave. No debe definir el campo clave para objetos Impact o una matriz de objetos Impact. En su lugar, el sistema utiliza UIObjectId como campo clave. Capítulo 15. Utilización de OSLC para Netcool/Impact 257 5. Para suprimir una entrada, seleccione la entrada y pulse Suprimir. Configuración de URI personalizados para variables y resultados de política Puede asignar URI personalizados a parámetros de salida de usuario y política o a variables para crear una correlación personalizada. Puede utilizar esta correlación para representar un recurso en cualquier dominio. Acerca de esta tarea Netcool/Impact sólo da soporte a la correlación unívoca de parámetros de salida de usuario a propiedades de OSLC. Procedimiento 1. Para añadir un URI personalizado a un recurso de política, añada la siguiente definición al archivo NCI_oslc.prop: oslc.policy.<componente_vía_acceso>.uri=<uri> 2. Para añadir un URI personalizado a una variable, especifique la variable y el componente de vía de acceso. Dado que hay varias capas de variables, debe especificar cada variable hasta que llegue a la que desea: oslc.policy.<componente_vía_acceso>.<nombre_variable>.uri=<uri> oslc.policy.<componente_vía_acceso>.<nombre_variable>.<nombre_variable> ....<nombre_variable>.uri=uri Ejemplo El ejemplo siguiente muestra cómo se puede representar la política example en una especificación de amigo de amigo (FOAF). Debe empezar añadiendo sentencias al archivo NCI_oslc.props: oslc.policy.example=examplePolicy oslc.policy.example.namespaces.foaf=http://xmlns.com/foaf/0.1/ oslc.policy.example.uri=http://xmlns.com/foaf/0.1/Person oslc.policy.example.myGetFilter.NAME.uri=http://xmlns.com/foaf/0.1/givenName Utiliza este URL para consultar el recurso OSLC: http://example.com:9080/NCICLUSTER_NCI_oslc/policy/example/myGetFilter Este URL devuelve el RDF: Nota: Este ejemplo es una aproximación con fines de muestra. <rdf:RDF <oslc:ResponseInfo rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/policy/ example/myGetFilter"> <rdfs:member> <j.0:Person rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/policy/ example/myGetFilter/item;ID=1012"> <j.0:givenName>Kevin Doe</j.0:givenName> <myGetFilter:STARTED>1976-07-06</myGetFilter:STARTED> <myGetFilter:MANAGER>1001</myGetFilter:MANAGER> <myGetFilter:ID>1012</myGetFilter:ID> <myGetFilter:DEPT>Documentation</myGetFilter:DEPT> </j.0:Person> </rdfs:member> <rdfs:member> <j.0:Person rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/policy/ example/myGetFilter/item;ID=1010"> <j.0:givenName>Brian Doe</j.0:givenName> 258 Netcool/Impact: Guía de soluciones <myGetFilter:STARTED>1980-08-11</myGetFilter:STARTED> <myGetFilter:MANAGER>1001</myGetFilter:MANAGER> <myGetFilter:ID>1010</myGetFilter:ID> <myGetFilter:DEPT>Documentation</myGetFilter:DEPT> </j.0:Person> </rdfs:member> <oslc:totalCount>2</oslc:totalCount> </oslc:ResponseInfo> </rdf:RDF> En este ejemplo el usuario no ha definido el prefijo y el espacio de nombres. En este caso, el RDF muestra el prefijo generado automáticamente para el espacio de nombres j.0 para http://xmlns.com/foaf/0.1/. Especifica un prefijo para un espacio de nombres con este formato: oslc.policy.<vía_acceso>.namespaces.<prefijo>=<uri> Para este ejemplo, añade esta sentencia: oslc.policy.example.namespaces.foaf=http://xmlns.com/foaf/0.1/ Cuando utiliza el URL siguiente para consultar el recurso OSLC, el RDF se genera con el prefijo que ha especificado: http://example.com:9080/NCICLUSTER_NCI_oslc/policy/example/myGetFilter Este URL se devuelve como: <rdf:RDF <oslc:ResponseInfo rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/policy/ example/myGetFilter"> <rdfs:member> <foaf:Person rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/policy/ example/myGetFilter/item;ID=1012"> <foaf:givenName>Kevin Doe</foaf:givenName> <myGetFilter:STARTED>1976-07-06</myGetFilter:STARTED> <myGetFilter:MANAGER>1001</myGetFilter:MANAGER> <myGetFilter:ID>1012</myGetFilter:ID> <myGetFilter:DEPT>Documentation</myGetFilter:DEPT> </foaf:Person> </rdfs:member> <rdfs:member> <foaf:Person rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/policy/ example/myGetFilter/item;ID=1010"> <foaf:givenName>Brian Doe</foaf:givenName> <myGetFilter:STARTED>1980-08-11</myGetFilter:STARTED> <myGetFilter:MANAGER>1001</myGetFilter:MANAGER> <myGetFilter:ID>1010</myGetFilter:ID> <myGetFilter:DEPT>Documentation</myGetFilter:DEPT> </foaf:Person> </rdfs:member> <oslc:totalCount>2</oslc:totalCount> </oslc:ResponseInfo> </rdf:RDF> Cómo pasar valores de argumentos a una política Puede utilizar series de consulta de URL para pasar valores de argumentos en forma de una serie a una política. Puede acceder a estos valores creando un parámetro de salida de usuario para cada uno de los argumentos. Procedimiento Utilice el URL siguiente para pasar valores de argumentos a una política: Capítulo 15. Utilización de OSLC para Netcool/Impact 259 http://<host>:<puerto>/NCI_NCICLUSTER_oslc/política/ <nombre_vía_acceso>?arg1=<valor>&arg2=<valor> Restricción: Los URL inusualmente largos pueden causar problemas. Esto depende del navegador y de los valores de Websphere Application Server. Para evitar estos problemas, limite el tamaño de los valores de las variables que se pasan mediante la serie de consulta. Resultados Después de acceder a este URL, la política se ejecuta. Si no define parámetros de usuario de salida, los parámetros de usuario están disponibles como propiedades en un recurso OSLC. Ejemplo Por ejemplo, puede utilizar el URL siguiente para pasar la variable arg1 con el valor de serie table1 a la política definida en la vía de acceso tableset: http://example.com:9080/NCI_NCICLUSTER_oslc/policy/tableset?arg1=table1 Configuración de vistas previas contextuales para recursos OSLC Puede habilitar las vistas previas contextuales para recursos OSLC. Puede configurar un título y otros aspectos de la vista previa contextual, como por ejemplo el tamaño de la ventana. Acerca de esta tarea Para obtener más información sobre cómo utilizar vistas previas contextuales para OSLC, abra Open Services for Lifecycle Collaboration Core Specification Version 2.0 UI Preview (http://open-services.net/bin/view/Main/OslcCoreUiPreview) Procedimiento Para configurar las vistas previas contextuales, añada un conjunto de propiedades para cada recurso OSLC al archivo NCI_oslc.props. Puede utilizar cualquier combinación de estas propiedades. Algunas de estas propiedades sólo se visualizan si existe el parámetro de icono o documento en el recurso OSLC. Para ver una descripción detallada de estas propiedades, consulte “Propiedades de vista previa contextual para recursos OSLC” en la página 262. Resultados Cada conjunto de propiedades que define para un recurso OSLC genera una representación XML compacta de la vista previa contextual. Este XML compacto se utiliza para ayudar a generar el contenido de la ventana de vista previa contextual en otras aplicaciones. Cada conjunto de propiedades puede contener variables. Cuando se genera el XML, las variables se sustituyen con los valores de propiedades del recurso OSLC con el formato siguiente: $<prefijo_espacio_nombres>:<nombre_propiedad> Por ejemplo: $RESERVATION:HOSTNAME $RESERVATION:ID 260 Netcool/Impact: Guía de soluciones Para ver todas las posibles variables para un recurso OSLC, utilice el URI de recurso OSLC para ver la representación del XML completo. Si un recurso no existe o se produce un error, el sistema visualiza un código de error 400 y un mensaje que explica el problema. Si el recurso no da soporte a vistas previas contextuales, por ejemplo, si el recurso contiene listas rdfs:member, el sistema visualiza un código de error 406 No aceptable. Si no se han definido parámetros de vista previa contextual para el recurso, el sistema visualiza un XML compacto que no contiene parámetros que no sean los del URI. Si utiliza la vista previa contextual con un producto de terceros como TBSM, puede añadir application/x-oslc-compact+xml al URL como una cabecera HTTP Accept para visualizar el documento XML compacto de vista previa contextual en la respuesta. Ejemplo El ejemplo siguiente muestra cómo configurar la vista previa contextual para un recurso OSLC basado en una tabla de base de datos denominada RESERVATION. Los siguientes valores de vista previa contextual se definen en el archivo NCI_oslc.props: oslc.data.computer=RESERVATION oslc.data.computer.uri=http://open-services.net/ns/crtv#ComputerSystem oslc.data.computer.MODEL.uri=http://open-services.net/ns/crtv#model oslc.data.computer.MANUFACTURER.uri=http://open-services.net/ns/crtv#manufacturer oslc.data.computer.SERIALNUMBER.uri=http://open-services.net/ns/crtv#serialNumber oslc.data.computer.namespaces.crtv=http://open-services.net/ns/crtv# oslc.data.computer.provider=provider01 oslc.data.computer.provider.domain=http://domainx/ oslc.data.computer.preview.title=Computer Reservation System - $RESERVATION:HOSTNAME oslc.data.computer.preview.shortTitle=Reservation oslc.data.computer.preview.largePreview.document=https://<servidor_impact>: 16311/opview/displays/NCICLUSTER-Reservations.html?id=$RESERVATION:ID oslc.data.computer.preview.largePreview.hintWidth=31.250em oslc.data.computer.preview.largePreview.hintHeight=21.875em A continuación, derive el contenido de vista previa contextual. En este ejemplo, utilice un operador de Netcool/Impact. En este caso, se generan dos variables en el XML compacto: $RESERVATION:HOSTNAME $RESERVATION:ID Estas variables se convierten a los valores de las propiedades según los datos del recurso OSLC: $RESERVATION:HOSTNAME = $RESERVATION:ID = 4 mycomputer.ibm.com Cuando utiliza un método HTTP GET en el URL de recurso con la cabecera HTTP Accept application/x-oslc-compact+xml, se devuelve el siguiente RDF: <?xml version="1.0"?> <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:oslc="http://open-services.net/ns/core#"> <oslc:Compact rdf:about="http://example.com:9080/NCICLUSTER_NCI_oslc/data/ Capítulo 15. Utilización de OSLC para Netcool/Impact 261 computer/item;ID=4"> <dcterms:title>Computer Reservation System - mycomputer.ibm.com</dcterms:title> <oslc:shortTitle>Reservation</oslc:shortTitle> <oslc:largePreview> <oslc:Preview> <oslc:hintWidth>31.250em</oslc:hintWidth> <oslc:hintHeight>21.875em</oslc:hintHeight> <oslc:document rdf:resource="https://<impact-server>:16311/opview/displays/ NCICLUSTER-Reservations.html?id=4"/> </oslc:Preview> </oslc:largePreview> </oslc:Compact> </rdf:RDF> Propiedades de vista previa contextual para recursos OSLC Para configurar las vistas previas contextuales, añada los parámetros que se muestran en las tablas al archivo NCI_oslc.props. Algunos de estos parámetros sólo se visualizan si existe el parámetro de icono o documento en el recurso OSLC. Tabla 79. Parámetros de vista previa contextual Sentencia Descripción oslc.<tipo>.<vía_acceso>.preview.title = <título_largo> donde <título_largo> especifica la serie del título largo que se utiliza para la vista previa contextual. oslc.<tipo>. <vía_acceso>.preview.shortTitle = <título_corto> donde <título_corto> especifica la serie del título corto que se utiliza para la vista previa contextual. En un ejemplo de implementación con TBSM, esta sentencia proporciona el nombre de ficha para la visualización previa mediante puntero. oslc.<tipo>.<vía_acceso>.preview.icon = <URIof16x16image> donde <URIof16x16image> especifica el URI de una imagen 16x16. oslc.<tipo>.<vía_acceso>.preview.largePreview. donde <URI_documento_vista_previa> document = <URI_documento_vista_previa> especifica el URI utilizado para el documento de vista previa HTML. oslc.<tipo>.<vía_acceso>.preview.smallPreview. donde <URI_documento_vista_previa> document = <URI_documento_vista_previa> especifica el URI del documento de vista previa HTML. En un ejemplo de implementación con TBSM, esta sentencia especifica el contenido representado dentro de la visualización previa mediante puntero. Tabla 80. Parámetros de vista previa contextual para parámetro de icono Sentencia Descripción oslc.<tipo>. <vía_acceso>.preview. iconTitle = <título_icono> donde <título_icono> especifica el título que se utiliza para el icono. oslc.<tipo>.<vía_acceso>.preview.iconAltLabel donde <etiqueta_alternativa> especifica una = <etiqueta_alternativa> etiqueta alternativa para el icono. 262 Netcool/Impact: Guía de soluciones Tabla 81. Parámetros de vista previa contextual para parámetro de documento Sentencia Descripción oslc.<tipo>.<víAcc.>.preview.largePreview. donde <ancho_ventana_vista_previa> hintWidth = especifica el ancho de la ventana de vista <ancho_ventana_vista_previa> previa. Por ejemplo, 31,250 em. oslc.<tipo>.<víAcc.>.preview.largePreview. donde <altura_ventana_vista_previa> hintHeight = especifica la altura de la ventana de vista <altura_ventana_vista_previa> previa. Por ejemplo, 21,785 em. oslc.<tipo>.<víAcc.>.preview.largePreview. donde <altura_inicial_ventana_vista_previa> initialHeight = especifica la altura de la ventana de vista <altura_inicial_ventana_vista_previa> previa cuando se visualiza por primera vez. Por ejemplo, 21,785 em. oslc.<tipo>.<víAcc.>.preview.smallPreview. donde <ancho_ventana_vista_previa> hintWidth = especifica el ancho de la ventana de vista <ancho_ventana_vista_previa> previa pequeña. Por ejemplo, 31,250 em. En un ejemplo de implementación con TBSM, esta sentencia especifica la anchura de la ventana de la visualización previa mediante puntero. oslc.<tipo>.<víAcc.>.preview.smallPreview. donde <altura_ventana_vista_previa> hintHeight = especifica la altura de la ventana de vista <altura_ventana_vista_previa> previa pequeña. Por ejemplo, 21,785 em. En un ejemplo de implementación con TBSM, esta sentencia especifica la altura de la ventana de la visualización previa mediante puntero. oslc.<tipo>.<víAcc.>.preview.smallPreview. donde <altura_inicial_ventana_vista_previa> initialHeight = especifica la altura de la ventana de vista <altura_inicial_ventana_vista_previa> previa pequeña cuando se visualiza por primera vez. Por ejemplo, 21,785 em. donde <tipo> es el tipo de recurso OSLC. Puede ser datos o una política. <víAcc.> es la vía de acceso de recurso OSLC. Escenario de ejemplo: utilización de OSLC con políticas de Netcool/Impact Lea este escenario de ejemplo para ver una descripción general de cómo puede utilizar las políticas de Netcool/Impact para crear recursos y proveedores de servicios OSLC, y registrar el proveedor y los recursos en el componente Servicios de registro de Jazz for Service Management. Antes de empezar Para utilizar OSLC, primero debe instalar el componente Servicios de registro de Jazz for Service Management. Para obtener más información, consulte http://pic.dhe.ibm.com/infocenter/tivihelp/v3r1/topic/com.ibm.psc.doc_1.1.0/ psc_ic-homepage.html. Capítulo 15. Utilización de OSLC para Netcool/Impact 263 Acerca de esta tarea El componente Servicios de registro de Jazz for Service Management incluye dos registros, el registro de recurso y el registro de proveedor. En primer lugar, este ejemplo muestra cómo crear un proveedor de servicios y registrarlo en el registro de proveedor. A continuación se crea un recurso OSLC y se registra en el registro de recursos. Procedimiento 1. Cree una política de Netcool/Impact que cree un proveedor de servicios y lo registre en el registro de proveedor como parte del componente Servicios de registro de Jazz for Service Management: a. Defina la información de servidor para el servidor donde está instalado el componente Servicios de registro de Jazz for Service Management: RegistryServerProviderCFUri="http://<servidor_registro>:9080/oslc/pr/collection"; RegistryServerUsername="<usuario>"; RegistryServerPassword="<contraseña>"; b. Defina la información de proveedor de servicios: dsTitle = "Customer-x Product-y OSLC Service Provider"; dsDescription = "Customer-x Product-y OSLC Service Provider"; provider = "http://<URL>/<miProveedor>"; domain = "http://<Dominio>/"; c. Utilice la función de políticas RDFModel para crear el modelo RDF de proveedor de servicios: serviceProviderModel = RDFModel(); d. Actualice las definiciones de espacio de nombres: RDFModelUpdateNS(serviceProviderModel, "oslc","http://open-services.net/ns/core#"); RDFModelUpdateNS(serviceProviderModel, "dcterms","http://purl.org/dc/terms/"); e. Cree las sentencias RDF y añádalas al modelo: RDFStatement(serviceProviderModel, provider, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://open-services.net/ns/core#ServiceProvider", true); RDFStatement(serviceProviderModel, provider, "http://purl.org/dc/terms/title", dsTitle, false); RDFStatement(serviceProviderModel, provider, "http://purl.org/dc/terms/description", dsDescription, false); serviceStmt=RDFStatement(serviceProviderModel, null, "http://www.w3.org/1999/ 02/22-rdf-syntax-ns#type", "http://open-services.net/ns/core#Service", true); RDFStatement(serviceProviderModel, serviceStmt.getSubject, "http://open-services.net/ns/ core#domain", domain, true); RDFStatement(serviceProviderModel, provider, "http://open-services.net/ns/core#service", serviceStmt.getSubject, true); log("---------Service Provider RDF---------"); log(RDFModelToString(serviceProviderModel, "RDF/XML-ABBREV")); f. Utilice la función de políticas RDFRegister para registrar el proveedor de servicios en el registro de proveedor. serviceProviderURL = RDFRegister(RegistryServerProviderCFUri, RegistryServerUsername, RegistryServerPassword, serviceProviderModel); log("Proveedor de servicios registrado: " + serviceProviderURL); 2. Cree y registre un recurso OSLC en el registro de recursos: a. Defina la información de servidor para el registro de recursos: RegistryServerResourceCFUri="http://<servidor_registro>:9080/oslc/rr/ registration/collection"; RegistryServerUsername="<usuario>"; RegistryServerPassword="<contraseña>"; b. Defina el recurso OSLC. En este ejemplo representa un sistema: computerSystem = "http://<URL_recurso_OSLC>/mySystemX"; name = "mySystemX"; manufacturer = "VMware"; serialNumber = "422ABA0619B0DE94B02E40870D6462AF"; model = "VMWAREVIRTUALPLATFORM"; El proveedor de servicios se encuentra en el URL siguiente. Puede recuperar este URL después de registrar el proveedor de servicios: 264 Netcool/Impact: Guía de soluciones "http://<servidor_registro>:9080/oslc/providers/1358241368487" c. Cree el modelo RDF que representa el sistema: computerSystemModel = RDFModel(); RDFModelUpdateNS(computerSystemModel, "crtv", "http://open-services.net/ns/crtv#"); RDFModelUpdateNS(computerSystemModel, "oslc","http://open-services.net/ns/core#"); RDFStatement(computerSystemModel, computerSystem, "http://www.w3.org/1999/02/ 22-rdf-syntax-ns#type", "http://open-services.net/ns/crtv#ComputerSystem", true); RDFStatement(computerSystemModel, computerSystem, "http://open-services.net/ ns/crtv#name", name, false); RDFStatement(computerSystemModel, computerSystem, "http://open-services.net/ ns/crtv#model", model, false); RDFStatement(computerSystemModel, computerSystem, "http://open-services.net/ ns/crtv#manufacturer", manufacturer, false); RDFStatement(computerSystemModel, computerSystem, "http://open-services.net/ ns/crtv#serialNumber", serialNumber, false); RDFStatement(computerSystemModel, computerSystem, "http://open-services.net/ ns/core#serviceProvider", serviceProviderURL , true); log("---------Computer System RDF---------"); log(RDFModelToString(computerSystemModel, "RDF/XML-ABBREV")); d. Registre el sistema en el registro de recursos. registrationRecordURL = RDFRegister(RegistryServerResourceCFUri, RegistryServerUsername, RegistryServerPassword, computerSystemModel); log("Proveedor de servicios registrado: " + registrationRecordURL); Temas de consulta de OSLC Lea la información de consulta siguiente para OSLC. URL de OSLC Se utilizan los URL siguientes para acceder a datos OSLC. Acceso a elementos de datos http://<servidor>:<puerto>/NCICLUSTER_NCI_oslc/data/<tipo_datos>/ Recupere la forma de recurso OSLC para el tipo de datos http://<servidor>:<puerto>/NCICLUSTER_NCI_oslc/data/resourceShapes/ <tipo_datos> Ejecute la política y devuelva los resultados http://<servidor>:<puerto>/NCI_NCICLUSTER_oslc/policy/ <nombre_política> Acceda a una matriz de variables de resultados de política http://<servidor>:<puerto>/NCICLUSTER_NCI_oslc/policy/ <nombre_política>/<matriz_variables> Visualice los resultados para un identificador de clave exclusiva: http://<servidor>:<puerto>/NCICLUSTER_NCI_oslc/policy/ <nombre_política>/<función>item;ID=<identificador_clave_exclusiva> Paginación de OSLC El proveedor OSLC de Netcool/Impact permite la paginación para facilitar y optimizar la recuperación de grandes cantidades de datos. La paginación está habilitada de forma predeterminada para elementos de datos y políticas cuyas variables contienen elementos de datos. Para configurar manualmente la paginación, añada los siguientes parámetros de consulta al URL: ?oslc.paging=true&oslc.page=<número_página>&oslc.pageSize=<tamaño_página> v oslc.paging=true habilita la paginación. Este valor está habilitado de forma predeterminada. Para inhabilitar la paginación, utilice oslc_paging=false. Capítulo 15. Utilización de OSLC para Netcool/Impact 265 v oslc.page=<número_página> es el número de página. De forma predeterminada, esta propiedad se establece en página 1. v oslc.pageSize=<tamaño_página> es el tamaño de página. De forma predeterminada, esta propiedad se establece en 100. Los administradores pueden añadir la siguiente sentencia al archivo de configuración NCI_server.props para establecer el límite predeterminado para el tamaño de página: impact.oslc.pagesize=<tamaño_página> Si esta propiedad no está definida, se establece de forma predeterminada en 100. Si el tamaño de página en el URL es mayor que el límite definido en el archivo de configuración NCI_server.props, el tamaño está limitado al del conjunto en el archivo de configuración NCI_server.props. También puede añadir la propiedad oslc_paging=false en el URL para inhabilitar la paginación. Si esta propiedad está establecida, se devuelve el conjunto de resultados completo. Si se definen propiedades de paginación adicionales, estas propiedades se ignoran. Si inhabilita la paginación y también habilita el soporte de modelo de datos grandes, ello puede tener un efecto adverso en el rendimiento. Información de respuesta Se añaden dos propiedades a la información de respuesta: oslc:nextPage y oslc:totalCount. La propiedad oslc:nextPage no se devuelve cuando no hay ninguna página siguiente. Si el tamaño de página del resultado es menor que la propiedad de tamaño de página especificada, no se devuelve ninguna propiedad de página siguiente. La propiedad oslc:totalCount proporciona la información de recuento total entre todas las páginas. Ejemplo Por ejemplo, el siguiente URL representa las variables de alerta correspondientes a los sucesos de función GetByFilter: http://example.com:9080/NCICLUSTER_NCI_oslc/policy/events/alerts? oslc.paging=true&oslc.page=2&oslc.pageSize=25 En el URL, la paginación está habilitada. Los resultados de la variable están incluidos en la segunda página. El tamaño de página está limitado a 25. Seguridad de OSLC La seguridad de OSLC está habilitada de forma predeterminada. Puede utilizar el script configOSLCSecurity para inhabilitar la seguridad de OSLC. Inhabilitación de la seguridad de OSLC Para que la vista previa contextual funcione con otros productos como por ejemplo TBSM, tiene las opciones siguientes. v Habilite SSO o LDAP entre TBSM y Netcool/Impact. Un usuario también debe tener acceso al rol de seguridad de OSLC. 266 Netcool/Impact: Guía de soluciones v Inhabilite la seguridad de OSLC ejecutando el script de configOSLCSecurity. Los scripts están en los directorios siguientes. Para Netcool/Impact /opt/IBM/tivoli/impact/bin, para TBSM /opt/IBM/tivoli/tbsm/bin. Para Windows, ejecute el mandato siguiente. configOSLCSecurity.bat <disable> <Servidor> <nombre_de_usuario> <contraseña> Para Netcool/Impact configOSLCSecurity.bat disable NCI tipadmin tippass Para TBSM configOSLCSecurity.bat disable TBSM tipadmin tippass Para UNIX, ejecute el mandato siguiente. configOSLCSecurity.sh <disable> <Servidor> <nombre_de_usuario> <contraseña> Para Netcool/Impact ./configOSLCSecurity.sh disable NCI tipadmin tippass Para TBSM ./configOSLCSecurity.sh disable TBSM tipadmin tippass Para habilitar la seguridad de OSLC, sustituya <disable> por <enable> para cada mandato. Soporte de la sintaxis de consulta de OSLC Netcool/Impact da soporte a una versión de la sintaxis de consulta de OSLC. La implementación en Netcool/Impact da soporte a los parámetros de consulta oslc.properties y oslc.select. Ambos parámetros de consulta tienen una funcionalidad muy similar. La única diferencia es el significado de los identificadores. Si los identificadores pertenecen al recurso del asunto inicial, utilice oslc.properties. Si los identificadores pertenecen a una lista de miembros de un recurso, utilice oslc.select. Para obtener más información sobre la sintaxis de consulta de OSLC, consulte la especificación Open Services for Lifecycle Collaboration Core Specification Versión 2.0 (http://open-services.net/bin/view/Main/OslcCoreSpecification) Parámetro de consulta oslc.properties Utilice el parámetro de consulta oslc.properties para visualizar las propiedades de un URI de recurso individual que no contenga ninguna lista rdfs:member. Si los identificadores de los que desea limitar las propiedades pertenecen al objeto de inicio, utilice el parámetro de consulta oslc.properties para limitar las propiedades devueltas por los identificadores. Ejemplo Para visualizar las propiedades de un URI de recurso individual que no contiene ninguna lista rdfs:member, utilice el parámetro de consulta oslc.properties: http://<servidor>:9080/NCICLUSTER_NCI_oslc/data/staff/item; FNAME=%27Todd%27;LNAME=%27Bishop%27?oslc.properties=foaf:lastName, foaf:firstName Capítulo 15. Utilización de OSLC para Netcool/Impact 267 El URI devuelve lo siguiente: <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:EMPLOYEES="http://jazz.net/ns/ism/event/impact/data/staff/" xmlns:oslc="http://open-services.net/ns/core#" xmlns:impact="http://jazz.net/ns/ism/event/impact#" xmlns:foaf="http://xmlns.com/foaf/"> <foaf:Person rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/data/ staff/item;FNAME=&apos;Todd&apos;;LNAME=&apos;Bishop&apos;"> <foaf:lastName>Bishop</foaf:lastName> <foaf:firstName>Todd</foaf:firstName> </foaf:Person> </rdf:RDF> Parámetro de consulta oslc.select Si los identificadores de los que desea limitar las propiedades pertenecen a una lista de miembros para un recurso, utilice el parámetro de consulta oslc.select. Utilice oslc.select para completar las tareas siguientes: v Limitar las propiedades de una lista de miembros que pertenece a un recurso OSLC. Por ejemplo, para limitar las propiedades de una lista de miembros que pertenece a un recurso OSLC generado a partir de un elemento de datos. v Visualizar un recurso OSLC que contiene listas rdfs:member. Por ejemplo, para visualizar los resultados de una variable de función de políticas. Ejemplo de elementos de datos Si consulta un URL que contiene una lista de recursos pertenecientes a una tabla de base de datos, el sistema devuelve una lista rdfs:member para cada fila. Por ejemplo, para consultar el tipo de datos staff y para limitar las propiedades contenidas en la lista a las propiedades foaf:lastName y foaf:firstName, utilice el parámetro de consulta oslc.select: http://<servidor>:9080/NCICLUSTER_NCI_oslc/data/ staff?oslc.select=foaf:lastName,foaf:firstName Este URL devuelve sólo las listas rdfs:member que contienen las propiedades foaf:lastName y foaf:firstName: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:EMPLOYEES="http://jazz.net/ns/ism/event/impact/data/staff/" xmlns:oslc="http://open-services.net/ns/core#" xmlns:impact="http://jazz.net/ns/ism/event/impact#" xmlns:foaf="http://xmlns.com/foaf/"> <oslc:ResponseInfo rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/data/ staff?oslc.select=foaf:lastName,foaf:firstName&amp; oslc.paging=true&amp;oslc.pageSize=100"> <oslc:totalCount>5</oslc:totalCount> </oslc:ResponseInfo> <rdf:Description rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/data/ staff?oslc.select=foaf:lastName,foaf:firstName"> <rdfs:member> <foaf:Person rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/data/ staff/item;FNAME=&apos;Mika&apos;;LNAME=&apos;Masion&apos;"> <foaf:lastName>Masion</foaf:lastName> <foaf:firstName>Mika</foaf:firstName> </foaf:Person> </rdfs:member> 268 Netcool/Impact: Guía de soluciones <rdfs:member> <foaf:Person rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/data/ staff/item;FNAME=&apos;Kevin&apos;;LNAME=&apos;Doe&apos;"> <foaf:lastName>Doe</foaf:lastName> <foaf:firstName>Kevin</foaf:firstName> </foaf:Person> </rdfs:member> <rdfs:member> <foaf:Person rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/data/ staff/item;FNAME=&apos;Todd&apos;;LNAME=&apos;Bishop&apos;"> <foaf:lastName>Bishop</foaf:lastName> <foaf:firstName>Todd</foaf:firstName> </foaf:Person> </rdfs:member> <rdfs:member> <foaf:Person rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/data/ staff/item;FNAME=&apos;Miriam&apos;;LNAME=&apos;Masters&apos;"> <foaf:lastName>Masters</foaf:lastName> <foaf:firstName>Miriam</foaf:firstName> </foaf:Person> </rdfs:member> <rdfs:member> <foaf:Person rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/data/ staff/item;FNAME=&apos;Brian&apos;;LNAME=&apos;Doe&apos;"> <foaf:lastName>Doe</foaf:lastName> <foaf:firstName>Brian</foaf:firstName> </foaf:Person> </rdfs:member> </rdf:Description> </rdf:RDF> Ejemplo de variable de política Si el recurso inicial contiene las listas de miembros, utilice el parámetro de consulta oslc.select. Por ejemplo, si el recurso contiene una variable de política como MyDirectSQL, utilice oslc.select: http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ipl/myDirectSQL2? oslc.select=myDirectSQL2:num_events Este URL devuelve los resultados siguientes: <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:direct="http://policy.js/xmlns/directSQL/" xmlns:test_ipl="http://jazz.net/ns/ism/event/impact/policy/ipl/" xmlns:oslc="http://open-services.net/ns/core#" xmlns:myDirectSQL2="http://jazz.net/ns/ism/event/impact#policy/ ipl/myDirectSQL2/" xmlns:impact="http://jazz.net/ns/ism/event/impact#" xmlns:javascript="http://policy.js/xmlns/"> <rdf:Description rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/ policy/ipl/myDirectSQL2? <oslc.select=myDirectSQL2:num_events"> <rdfs:member> <test_ipl:myDirectSQL2 rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/ policy/ipl/ myDirectSQL2/item;min_serial=165248;num_events=928;max_serial=387781"> <myDirectSQL2:num_events>928</myDirectSQL2:num_events> </test_ipl:myDirectSQL2> </rdfs:member> </rdf:Description> <oslc:ResponseInfo rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ ipl/myDirectSQL2? Capítulo 15. Utilización de OSLC para Netcool/Impact 269 <oslc.select=myDirectSQL2:num_events&oslc.paging=true&oslc.pageSize=100"> <oslc:totalCount>1</oslc:totalCount> </oslc:ResponseInfo> </rdf:RDF> Variables anidadas y consultas con comodín Utilice las consultas con comodín para visualizar variables anidadas. Para visualizar todas las variables y sus valores anidados, utilice la sentencia siguiente: oslc.properties=* Para visualizar todas las variables, sus valores anidados y las funciones de políticas, utilice la sentencia siguiente: oslc.properties=*&oslc.select=* Ejemplo Por ejemplo, define una política y desea utilizar el siguiente URL para acceder a ella: http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ipl El URL devuelve lo siguiente: <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:direct="http://policy.js/xmlns/directSQL/" xmlns:test_ipl="http://jazz.net/ns/ism/event/impact/policy/ipl/" xmlns:oslc="http://open-services.net/ns/core#" xmlns:impact="http://jazz.net/ns/ism/event/impact#" xmlns:javascript="http://policy.js/xmlns/"> <rdf:Description rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ipl"> <test_ipl:myTimestamp>20120818</test_ipl:myTimestamp> <test_ipl:myString>test_ipl</test_ipl:myString> <test_ipl:myInteger>55</test_ipl:myInteger> <test_ipl:myImpactObjectArray rdf:resource="http://<servidor>:9080/ NCICLUSTER_NCI_oslc/policy/ipl/myImpactObjectArray"/> <test_ipl:myImpactObject1 rdf:resource="http://<servidor>:9080/ NCICLUSTER_NCI_oslc/policy/ipl/myImpactObject1"/> <test_ipl:myDouble>109.5</test_ipl:myDouble> <rdf:type rdf:resource="http://jazz.net/ns/ism/event/impact/policy/ipl/"/> </rdf:Description> </rdf:RDF> Este ejemplo contiene varios literales RDF como myTimestamp, myString y myInteger. También contiene el recurso RDF myImpactObjectArray. Utilice el URL siguiente para que se muestren todas las variables y sus valores anidados: http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ ipl?oslc.properties=* Esto devuelve los resultados siguientes: <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:myImpactObjectArray="http://jazz.net/ns/ism/event/impact/policy/ ipl/myImpactObjectArray/" xmlns:myImpactObject1="http://jazz.net/ns/ism/event/impact/policy/ ipl/myImpactObject1/" 270 Netcool/Impact: Guía de soluciones xmlns:direct="http://policy.js/xmlns/directSQL/" xmlns:test_ipl="http://jazz.net/ns/ism/event/impact/policy/ipl/" xmlns:oslc_pos_2="http://jazz.net/ns/ism/event/impact/policy/ ipl/myImpactObjectArray/oslc_pos_2/" xmlns:oslc="http://open-services.net/ns/core#" xmlns:oslc_pos_1="http://jazz.net/ns/ism/event/impact/policy/ ipl/myImpactObjectArray/oslc_pos_1/" xmlns:oslc_pos_0="http://jazz.net/ns/ism/event/impact/policy/ ipl/myImpactObjectArray/oslc_pos_0/" xmlns:impact="http://jazz.net/ns/ism/event/impact#" xmlns:javascript="http://policy.js/xmlns/"> <rdf:Description rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ipl"> <test_ipl:myTimestamp>20120818</test_ipl:myTimestamp> <test_ipl:myString>test_ipl</test_ipl:myString> <test_ipl:myInteger>55</test_ipl:myInteger> <test_ipl:myImpactObjectArray> <test_ipl:myImpactObjectArray rdf:about="http://<servidor>:9080/ NCICLUSTER_NCI_oslc/policy/ipl/myImpactObjectArray"> <myImpactObjectArray:oslc_pos_2> <myImpactObjectArray:oslc_pos_2 rdf:about="http://<servidor>:9080/ NCICLUSTER_NCI_oslc/policy/ipl/myImpactObjectArray/oslc_pos_2"> <oslc_pos_2:lname>Doe</oslc_pos_2:lname> <oslc_pos_2:fname>Kevin</oslc_pos_2:fname> <oslc_pos_2:email>[email protected]</oslc_pos_2:email> <oslc_pos_2:birthday>1973-01-22</oslc_pos_2:birthday> </myImpactObjectArray:oslc_pos_2> </myImpactObjectArray:oslc_pos_2> <myImpactObjectArray:oslc_pos_1> <myImpactObjectArray:oslc_pos_1 rdf:about="http://<servidor>:9080/ NCICLUSTER_NCI_oslc/policy/ipl/myImpactObjectArray/oslc_pos_1"> <oslc_pos_1:lname>Doe</oslc_pos_1:lname> <oslc_pos_1:fname>Danny</oslc_pos_1:fname> <oslc_pos_1:email>[email protected]</oslc_pos_1:email> <oslc_pos_1:birthday>1976-05-12</oslc_pos_1:birthday> </myImpactObjectArray:oslc_pos_1> </myImpactObjectArray:oslc_pos_1> <myImpactObjectArray:oslc_pos_0> <myImpactObjectArray:oslc_pos_0 rdf:about="http://<servidor>:9080/ NCICLUSTER_NCI_oslc/policy/ipl/myImpactObjectArray/oslc_pos_0"> <oslc_pos_0:lname>Doe</oslc_pos_0:lname> <oslc_pos_0:fname>John</oslc_pos_0:fname> <oslc_pos_0:email>[email protected]</oslc_pos_0:email> <oslc_pos_0:birthday>1980-08-11</oslc_pos_0:birthday> </myImpactObjectArray:oslc_pos_0> </myImpactObjectArray:oslc_pos_0> </test_ipl:myImpactObjectArray> </test_ipl:myImpactObjectArray> <test_ipl:myImpactObject1> <test_ipl:myImpactObject1 rdf:about="http://<servidor>:9080/ NCICLUSTER_NCI_oslc/policy/ipl/myImpactObject1"> <myImpactObject1:lname>Doe</myImpactObject1:lname> <myImpactObject1:fname>John</myImpactObject1:fname> <myImpactObject1:email>[email protected]</myImpactObject1:email> <myImpactObject1:birthday>1980-08-11</myImpactObject1:birthday> </test_ipl:myImpactObject1> </test_ipl:myImpactObject1> <test_ipl:myDouble>109.5</test_ipl:myDouble> <rdf:type rdf:resource="http://jazz.net/ns/ism/event/impact/policy/ipl/"/> </rdf:Description> </rdf:RDF> Tenga en cuenta que la matriz myImpactObjectArray se expande para mostrar cada ImpactObject que contiene y los valores de las propiedades de cada uno de los ImpactObjects. Capítulo 15. Utilización de OSLC para Netcool/Impact 271 Para obtener un valor de propiedad específico para uno de los recursos, utilice un URL que especifique las propiedades anidadas. Por ejemplo: http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ipl?oslc. properties=test_ipl:myImpactObjectArray{myImpactObjectArray: oslc_pos_0{oslc_pos_0:lname,oslc_pos_0:fname}} Este URL devuelve los resultados siguientes: <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:myImpactObjectArray="http://jazz.net/ns/ism/event/impact/policy/ ipl/myImpactObjectArray/" xmlns:myImpactObject1="http://jazz.net/ns/ism/event/impact/policy/ ipl/myImpactObject1/" xmlns:direct="http://policy.js/xmlns/directSQL/" xmlns:test_ipl="http://jazz.net/ns/ism/event/impact/policy/ipl/" xmlns:oslc_pos_2="http://jazz.net/ns/ism/event/impact/policy/ ipl/myImpactObjectArray/oslc_pos_2/" xmlns:oslc="http://open-services.net/ns/core#" xmlns:oslc_pos_1="http://jazz.net/ns/ism/event/impact/policy/ ipl/myImpactObjectArray/oslc_pos_1/" xmlns:oslc_pos_0="http://jazz.net/ns/ism/event/impact/policy/ ipl/myImpactObjectArray/oslc_pos_0/" xmlns:tivoli-impact="http://jazz.net/ns/ism/event/impact#" xmlns:javascript="http://policy.js/xmlns/"> <rdf:Description rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/ policy/ipl"> <test_ipl:myImpactObjectArray> <test_ipl:myImpactObjectArray rdf:about="http://<servidor>:9080/ NCICLUSTER_NCI_oslc/policy/ipl/myImpactObjectArray"> <myImpactObjectArray:oslc_pos_0> <myImpactObjectArray:oslc_pos_0 rdf:about="http://<servidor>:9080/ NCICLUSTER_NCI_oslc/policy/ipl/myImpactObjectArray/oslc_pos_0"> <oslc_pos_0:lname>Doe</oslc_pos_0:lname> <oslc_pos_0:fname>John</oslc_pos_0:fname> </myImpactObjectArray:oslc_pos_0> </myImpactObjectArray:oslc_pos_0> </test_ipl:myImpactObjectArray> </test_ipl:myImpactObjectArray> <rdf:type rdf:resource="http://jazz.net/ns/ism/event/impact/policy/ ipl/"/> </rdf:Description> </rdf:RDF> Para obtener recursos que contengan listas de miembros, como listas de miembros contenidas en los resultados de las funciones de políticas DirectSQL y GetByFilter, utilice una combinación de los parámetros de consulta oslc.properties y oslc.select. Por ejemplo: http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ ipl?oslc.properties=*&oslc.select=test_ipl:myGetByFilter {myGetByFilter:LNAME,myGetByFilter:FNAME} Este URL devuelve el siguiente RDF: <rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:myGetByFilter="http://jazz.net/ns/ism/event/impact/policy/ ipl/myGetByFilter/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:direct="http://policy.js/xmlns/directSQL/" xmlns:test_ipl="http://jazz.net/ns/ism/event/impact/policy/ipl/" xmlns:oslc="http://open-services.net/ns/core#" xmlns:impact="http://jazz.net/ns/ism/event/impact#" 272 Netcool/Impact: Guía de soluciones xmlns:javascript="http://policy.js/xmlns/"> <rdf:Description rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/ policy/ipl"> <test_ipl:myTimestamp>20120818</test_ipl:myTimestamp> <test_ipl:myString>test_ipl</test_ipl:myString> <test_ipl:myInteger>55</test_ipl:myInteger> <test_ipl:myGetByFilter> <test_ipl:myGetByFilter rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ipl/myGetByFilter"> <rdfs:member> <test_ipl:myGetByFilter rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ipl/myGetByFilter/ item;FNAME=&apos;Mika&apos;;LNAME=&apos;Masion&apos;"> <myGetByFilter:LNAME>Masion</myGetByFilter:LNAME> <myGetByFilter:FNAME>Mika</myGetByFilter:FNAME> </test_ipl:myGetByFilter> </rdfs:member> <rdfs:member> <test_ipl:myGetByFilter rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ipl/myGetByFilter/ item;FNAME=&apos;Kevin&apos;;LNAME=&apos;Doe&apos;"> <myGetByFilter:LNAME>Doe</myGetByFilter:LNAME> <myGetByFilter:FNAME>Kevin</myGetByFilter:FNAME> </test_ipl:myGetByFilter> </rdfs:member> <rdfs:member> <test_ipl:myGetByFilter rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ipl/myGetByFilter/ item;FNAME=&apos;Todd&apos;;LNAME=&apos;Bishop&apos;"> <myGetByFilter:LNAME>Bishop</myGetByFilter:LNAME> <myGetByFilter:FNAME>Todd</myGetByFilter:FNAME> </test_ipl:myGetByFilter> </rdfs:member> <rdfs:member> <test_ipl:myGetByFilter rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ipl/myGetByFilter/ item;FNAME=&apos;Miriam&apos;;LNAME=&apos;Masters&apos;"> <myGetByFilter:LNAME>Masters</myGetByFilter:LNAME> <myGetByFilter:FNAME>Miriam</myGetByFilter:FNAME> </test_ipl:myGetByFilter> </rdfs:member> <rdfs:member> <test_ipl:myGetByFilter rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/policy/ipl/myGetByFilter/ item;FNAME=&apos;Brian&apos;;LNAME=&apos;Doe&apos;"> <myGetByFilter:LNAME>Doe</myGetByFilter:LNAME> <myGetByFilter:FNAME>Brian</myGetByFilter:FNAME> </test_ipl:myGetByFilter> </rdfs:member> <oslc:ResponseInfo> <oslc:ResponseInfo rdf:about="http://<servidor>:9080/NCICLUSTER_NCI_oslc/ policy/ipl/myGetByFilter<oslc.paging=true&oslc.pageSize=100"> <oslc:totalCount>5</oslc:totalCount> </oslc:ResponseInfo> </oslc:ResponseInfo> </test_ipl:myGetByFilter> </test_ipl:myGetByFilter> <test_ipl:myDouble>109.5</test_ipl:myDouble> <rdf:type rdf:resource="http://jazz.net/ns/ism/event/impact# policy/ipl/"/> </rdf:Description> </rdf:RDF> Funciones de RDF Puede utilizar funciones de RDF para que Netcool/Impact sea compatible con los servicios abiertos para la colaboración del ciclo de vida (OSLC). Capítulo 15. Utilización de OSLC para Netcool/Impact 273 RDFModel Puede utilizar la función RDFModel para crear un modelo RDF sin ningún parámetro de tiempo de ejecución. Para crear un modelo RDF vacío, llame a la función RDFModel sin especificar ningún parámetro de tiempo de ejecución. La función devuelve un modelo RDF vacío. Sintaxis La función RDFModel tiene la sintaxis siguiente: [Model =] RDFModel() Parámetros La función RDFModel no tiene parámetros de tiempo de ejecución. RDFModelToString Puede utilizar la función RDFModelToString para exportar un modelo RDF a una serie en un lenguaje concreto. Cuando cree o escriba un modelo RDF, puede utilizar la función RDFModelToString para exportar un modelo a una serie en un lenguaje concreto. Puede definir un objeto de modelo y una serie que contiene el lenguaje que se utiliza como parámetros de tiempo de ejecución. Si la serie del lenguaje es una serie nula o vacía, se utiliza el lenguaje predeterminado RDF/XML. Son compatibles las series de lenguaje siguientes: v v v v RDF/XML RDF/XML-ABBREV TURTLE TTL v N3 RDFModelToString devuelve una serie Sintaxis La función RDFModelToString tiene la sintaxis siguiente: [Serie =] RDFModelToString (Model, Language) Parámetros La función RDFModelToString tiene los parámetros siguientes: Tabla 82. Parámetros de la función RDFModelToString Parámetro Tipo Descripción Model Modelo Objeto de modelo para la salida Language Serie Tipo de lenguaje El ejemplo siguiente actualizar los espacios de nombres en un modelo: 274 Netcool/Impact: Guía de soluciones //Recuperar el RDF del proveedor de OSLC a través del método GetHTTP HTTPHost="omega02.tivlab.austin.ibm.com"; HTTPPort=9081; Protocol="https"; Path="/NCICLUSTER_NCI_oslc/data/resourceShapes/alerts"; ChannelKey="tom"; Method=""; AuthHandlerActionTreeName=""; FormParameters=NewObject(); FilesToSend=NewObject(); HeadersToSend=NewObject(); HttpProperties = NewObject(); HttpProperties.UserId="tipadmin"; HttpProperties.Password="passw0rd"; x=GetHTTP(HTTPHost, HTTPPort, Protocol, Path, ChannelKey, Method, AuthHandlerActionTreeName, FormParameters, FilesToSend, HeadersToSend, HttpProperties); //Crear modelo de la carga útil de RDF rdf=RDFParse(x); //Recuperar todas las sentencias del modelo allStatements=RDFSelect(rdf,null,null,null); //RDF de salida en el registro mediante N3 log(RDFModelToString(rdf, “N3”)); //RDF de salida en el registro utilizando el lenguaje predeterminado (RDF/XML) log(RDFModelToString(rdf, null)); RDFModelUpdateNS Puede utilizar la función RDFModelUpdateNS para insertar, actualizar o eliminar un espacio de nombres de un modelo RDF. Cuando cree un modelo RDF, puede utilizar la función RDFModelUpdateNS para insertar, actualizar o eliminar un espacio de nombres del modelo. Puede definir un objeto de modelo, una serie de prefijo y una serie de URI como parámetros de tiempo de ejecución. Si el URI es una serie nula o vacía, la función elimina la serie de prefijo del modelo. Si el URI contiene una serie con un valor no vacío y existe el prefijo, se actualiza el URI. Si el prefijo no existe, se añade un nuevo prefijo y URI al modelo. RDFModelUpdateNS devuelve este modelo. Sintaxis La función RDFModelUpdateNS tiene la sintaxis siguiente: [Modelo =] RDFModelUpdateNS (Model, Prefix, URI) Parámetros La función RDFModelUpdateNS tiene los parámetros siguientes: Tabla 83. Parámetros de la función RDFModelUpdateNS Parámetro Tipo Descripción Model Modelo Objeto de modelo para actualizar Prefix Serie Contiene el prefijo que se va a actualizar en el modelo URI Serie Contiene el URI para asociar con el prefijo Capítulo 15. Utilización de OSLC para Netcool/Impact 275 El ejemplo siguiente actualizar los espacios de nombres en un modelo: //Crear modelo model = RDFModel(); //Actualizar o insertar espacio de nombres al modelo RDFModelUpdateNS(model,"oslc","http://open-services.net/ns/core#"); RDFModelUpdateNS(model,"rdfs","http://www.w3.org/2000/01/rdf-schma#"); RDFModelUpdateNS(model,"dcterms","http://purl.org/dc/terms/"); El siguiente fragmento de código suprime un espacio de nombres del modelo existente: //Recuperar el RDF del proveedor de OSLC a través del método GetHTTP HTTPHost="omega02.tivlab.austin.ibm.com"; HTTPPort=9081; Protocol="https"; Path="/NCICLUSTER_NCI_oslc/data/resourceShapes/alerts"; ChannelKey="tom"; Method=""; AuthHandlerActionTreeName=""; FormParameters=NewObject(); FilesToSend=NewObject(); HeadersToSend=NewObject(); HttpProperties = NewObject(); HttpProperties.UserId="tipadmin"; HttpProperties.Password="passw0rd"; x=GetHTTP(HTTPHost, HTTPPort, Protocol, Path, ChannelKey, Method, AuthHandlerActionTreeName, FormParameters, FilesToSend, HeadersToSend, HttpProperties); //Crear modelo de la carga útil de RDF model=RDFParse(x); //Suprimir espacio de nombres del modelo que tiene el prefijo 'oslc' RDFModelUpdateNS(model, “oslc”, null); RDFNodeIsResource Puede utilizar la función RDFNodeIsResource para ayudar a otras funciones a leer y analizar objetos que también son un recurso RDF. Puede definir un nodo RDF como un parámetro de tiempo de ejecución en esta función. Si el objeto es un recurso RDF, la función devuelve un valor verdadero. Si el objeto es un literal RDF, la función devuelve un valor falso. Otras funciones pueden utilizar el modelo devuelto por la función RDFNodeIsResource para seguir leyendo y analizando el objeto RDF. Sintaxis La función RDFNodeIsResource tiene la sintaxis siguiente: [Booleano =] RDFNodeIsResource (Object) Parámetros La función RDFNodeIsResource tiene los parámetros siguientes: Tabla 84. Parámetros de la función RDFNodeIsResource Parámetro Tipo Descripción Object Nodo RDF Comprobación de tipo de objeto RDF El ejemplo siguiente muestra sentencias basadas en un RDF recuperado por la función GetHTTP: 276 Netcool/Impact: Guía de soluciones //Recuperar el RDF del proveedor de OSLC a través del método GetHTTP HTTPHost="omega02.tivlab.austin.ibm.com"; HTTPPort=9081; Protocol="https"; Path="/NCICLUSTER_NCI_oslc/data/resourceShapes/alerts"; ChannelKey="tom"; Method=""; AuthHandlerActionTreeName=""; FormParameters=NewObject(); FilesToSend=NewObject(); HeadersToSend=NewObject(); HttpProperties = NewObject(); HttpProperties.UserId="tipadmin"; HttpProperties.Password="passw0rd"; x=GetHTTP(HTTPHost, HTTPPort, Protocol, Path, ChannelKey, Method, AuthHandlerActionTreeName, FormParameters, FilesToSend, HeadersToSend, HttpProperties); //Crear modelo de la carga útil de RDF rdf=RDFParse(x); //Recuperar todas las sentencias del modelo allStatements=RDFSelect(rdf,null,null,null); //Asunto, predicados y objetos de salida de todas las sentencias devueltas, cuyo objeto es un literal, en el registro Size=Length(allStatements); log(Size); Count=0; While (Count < Size) { if (!RDFNodeIsResource (allStatements [Count].object)) { log (allStatements [Count].subject + " " + allStatements [Count].predicate + " " + allStatements [Count].object + "."); } Count = Count + 1; } RDFNodeIsAnon Puede utilizar la función RDFNodeIsAnon para ayudar en la lectura y el análisis de un RDF. La función RDFNodeIsAnon abarca un asunto/objeto que contiene un RDFNode como un parámetro de tiempo de ejecución y devuelve true (verdadero) si el recurso es anónimo. Si el valor de retorno es false (falso), el recurso RDF no es anónimo. El modelo generado por la función puede ser utilizado después por otras funciones para seguir leyendo y analizando el RDF. RDFNodeIsAnon devuelve true o false, en función de si RDFNode es anónimo. Sintaxis La función RDFNodeIsAnon tiene la sintaxis siguiente: [Booleano =] RDFNodeIsAnon (Node) Parámetros La función RDFNodeIsAnon tiene el parámetro siguiente: Tabla 85. Parámetro RDFNodeIsAnon Parámetro Tipo Descripción Node RDFNode Asunto u objeto para comprobar Capítulo 15. Utilización de OSLC para Netcool/Impact 277 //Recuperar el RDF del proveedor de OSLC a través del método GetHTTP HTTPHost="omega02.tivlab.austin.ibm.com"; HTTPPort=9081; Protocol="http"; Path="/NCICLUSTER_NCI_oslc/data/resourceShapes/alerts"; ChannelKey="tom"; Method=""; AuthHandlerActionTreeName=""; FormParameters=newobject(); FilesToSend=newobject(); HeadersToSend=newobject(); HttpProperties = NewObject(); HttpProperties.UserId="tipadmin"; HttpProperties.Password="passw0rd"; x=GetHTTP(HTTPHost, HTTPPort, Protocol, Path, ChannelKey, Method, AuthHandlerActionTreeName, FormParameters, FilesToSend, HeadersToSend, HttpProperties); //Crear modelo de la carga útil de RDF rdf=RDFParse(x); //Recuperar todas las sentencias del modelo allStatements=RDFSelect(rdf,null,null,null); //Asunto, predicado y objetos de salida de todas las sentencias devueltas, cuyo objeto es un literal, en el registro Size=Length(allStatements); Log(Size); Count=0; While (Count < Size) { if (!RDFNodeIsAnon(allStatements[Count].subject)) { log (allStatements [Count].subject + " " + allStatements [Count].predicate + " " + allStatements [Count].object + "."); } Count = Count + 1; } RDFParse Puede utilizar la función RDFParse para ayudar a otras funciones leer y analizar un objeto RDF. Recupera los datos de una serie que contiene una carga útil de RDF y devuelve un modelo que contiene la carga útil de RDF que se la ha pasado. Otras funciones pueden utilizar este modelo para leer y analizar de forma adicional un objeto RDF. Sintaxis La función RDFParse tiene la sintaxis siguiente: [Modelo =] RDFParse(Payload) Parámetros La función RDFParse tiene los parámetros siguientes: Tabla 86. Parámetro de la función RDFParse 278 Parámetro Tipo Descripción Payload Serie Carga útil que contiene el RDF Netcool/Impact: Guía de soluciones El ejemplo siguiente proporciona sentencias basándose en un RDF recuperado por la función GetHTTP: //Recuperar el RDF del proveedor de OSLC a través del método GetHTTP HTTPHost="omega02.tivlab.austin.ibm.com"; HTTPPort=9081; Protocol="https"; Path="/NCICLUSTER_NCI_oslc/data/resourceShapes/alerts"; ChannelKey="tom"; Method=""; AuthHandlerActionTreeName=""; FormParameters=NewObject(); FilesToSend=NewObject(); HeadersToSend=NewObject(); HttpProperties = NewObject(); HttpProperties.UserId="tipadmin"; HttpProperties.Password="passw0rd"; x=GetHTTP(HTTPHost, HTTPPort, Protocol, Path, ChannelKey, Method, AuthHandlerActionTreeName, FormParameters, FilesToSend, HeadersToSend, HttpProperties); //Crear modelo de la carga útil de RDF rdf=RDFParse(x); RDFRegister Puede utilizar la función RDFRegister para ayudarle a registrar los proveedores de servicios o los recursos OSLC con el servidor de registro. Antes de poder registrar un proveedor de servicios o un recurso, debe utilizar las otras funciones de política RDF para crear un modelo RDF que cumpla los requisitos de OSLC y de servicios de registro. Después de haber creado el modelo RDF, utilice la función RDFRegister para registrar el RDF con el registro de recursos incluido en el servicio de integración de servicios de registro. Si el proveedor de servicios o el recurso OSLC se ha registrado correctamente, la función RDFRegister devuelve la ubicación del recurso del registro de registro. Las variables siguientes y sus valores de retorno también se devuelven para proporcionar información adicional: v ResultCode contiene el código de resultado para la respuesta. v HeadersReceived contiene las cabeceras recibidas en la respuesta. v HeadersSent contiene las cabeceras enviadas en la respuesta. v ResponseBody contiene el texto del cuerpo de respuesta. Si los parámetros de consulta se establecen en el URL y utiliza la función de la política RDFRegister para registrar un proveedor de servicios, debe añadir manualmente la ubicación del proveedor de servicios a la política. Por ejemplo: RDFStatement(newModel, manu[0].subject, "http://open-services.net/ns/ core#serviceProvider", serviceProviderURL, true); Si utiliza la serie de consulta dentro de la ruta, también debe asegurarse de que el parámetro FormParameters está establecido en nulo. Por ejemplo: FormParameters=null; Finalmente, debe asegurarse de que la política contiene información de paginación. Por ejemplo: Path="/NCICLUSTER_NCI_oslc/data/mysql1?oslc.paging=true&oslc.pageSize=100"; Capítulo 15. Utilización de OSLC para Netcool/Impact 279 Si no se realiza correctamente, el valor de retorno del registro de la ubicación de recurso es nulo. Se devuelve la información del código de error en las variables ErrorReason y ResultCode. Sintaxis La función RDFRegister tiene la función siguiente: [ Serie =] RDFRegister(URI, Username , Password, Model) donde Username puede ser una serie nula o vacía para especificar que no es necesaria la autenticación. Parámetros La función RDFRegister tiene los parámetros siguientes: Tabla 87. Parámetros de la función RDFRegister Parámetro Tipo Descripción URI Serie El URI de la fábrica de creación del servidor de servicios de registro Username Serie Nombre de usuario para el servidor de servicios de registro Password Serie Contraseña para el servidor de servicios de registro Model Modelo Modelo que contiene el RDF Ejemplo El ejemplo siguiente registra manualmente un proveedor de servicios y un conjunto de recursos que ha expuesto el proveedor de servidores OSLC en Netcool/Impact. La información del servidor de servicios de registro es: RegistryServerProviderCFUri="http://<servidor_servicios_registro>: 9080/oslc/pr/collection"; RegistryServerResourceCFUri="http://<servidor_servicios_registro>: 9080/oslc/rr/registration/collection"; RegistryServerUsername="system"; RegistryServerPassword="manager"; La información del servidor Netcool/Impact es: HTTPHost="<servidor_impact>"; HTTPPort=9080; Protocol="http"; Path1="/NCICLUSTER_NCI_oslc/provider/provider01"; Path2="/NCICLUSTER_NCI_oslc/data/computer"; ChannelKey=""; Method="GET"; AuthHandlerActionTreeName=""; FormParameters=NewObject(); FilesToSend=NewObject(); HeadersToSend=NewObject(); HttpProperties = NewObject(); 280 Netcool/Impact: Guía de soluciones HttpProperties.UserId="tipadmin"; HttpProperties.Password="passw0rd"; HttpProperties.AuthenticationScheme="basic"; Obtener el RDF del proveedor de servicios desde Netcool/Impact: serviceProviderResponse=GetHTTP(HTTPHost,HTTPPort, Protocol, Path1, ChannelKey,Method, AuthHandlerActionTreeName, null, FilesToSend, HeadersToSend, HttpProperties); Crear un modelo RDF basándose en la respuesta del proveedor de servicios: serviceProviderModel=RDFParse(serviceProviderResponse) Registrar el proveedor de servicios en el registro del proveedor: serviceProviderURL = RDFRegister(RegistryServerProviderCFUri, RegistryServerUsername, RegistryServerPassword,serviceProviderModel); log("Provider Registry-Service Provider URL: " + serviceProviderURL); Obtener todos los recursos del sistema del ordenador desde Netcool/Impact: allResources=GetHTTP(HTTPHost,HTTPPort, Protocol, Path2, ChannelKey, Method,AuthHandlerActionTreeName, null, FilesToSend, HeadersToSend, HttpProperties); Crear un modelo RDF basándose en la respuesta del proveedor de servicios: allResourceModel=RDFParse(allResources); Registrar cada sistema del ordenador y un conjunto de propiedades con el registro de recurso: statements=RDFSelect(allResourceModel, null, "http://jazz.net/ns/ism/ events/impact/data/computer/ID", null); size=Length(statements); count=0; while(count<size) { Path3=statements[count].subject; //Obtener el recurso del sistema del ordenador individual resourceResponse=GetHTTP(HTTPHost,HTTPPort, Protocol, Path3, ChannelKey, Method,AuthHandlerActionTreeName, null, FilesToSend, HeadersToSend, HttpProperties); resourceModel=RDFParse(resourceResponse); Crear un modelo que contenga las propiedades y los datos que desea registrar: newModel=RDFModel(); manu=RDFSelect(resourceModel, null, "http://open-services.net/ns/ crtv#manufacturer",null); model=RDFSelect(resourceModel, null, "http://open-services.net/ns/ crtv#model", null); serial=RDFSelect(resourceModel, null, "http://open-services.net/ns/ crtv#serialNumber", null); RDFModelUpdateNS(newModel, "crtv", "http://open-services.net/ns/crtv#"); RDFModelUpdateNS(newModel, "oslc","http://open-services.net/ns/core#"); RDFStatement(newModel, manu[0].subject, "http://www.w3.org/1999/02/ 22-rdf-syntax-ns#type", "http://open-services.net/ns/crtv#ComputerSystem", true); RDFStatement(newModel, manu[0].subject, manu[0].predicate, manu[0].object, RDFNodeIsResource(manu[0].object)); RDFStatement(newModel, manu[0].subject, model[0].predicate, model[0].object, RDFNodeIsResource(manu[0].object)); RDFStatement(newModel, manu[0].subject, serial[0].predicate, serial[0].object, RDFNodeIsResource(manu[0].object)); Actualizar el modelo con la ubicación del proveedor de servicios: Capítulo 15. Utilización de OSLC para Netcool/Impact 281 RDFStatement(newModel, manu[0].subject, "http://open-services.net/ns/ core#serviceProvider", serviceProviderURL, true); Registrar el recurso en el registro de recursos: resourceURL = RDFRegister(RegistryServerResourceCFUri, RegistryServerUsername, RegistryServerPassword, newModel); log("Resource Registry-Resource URL: " +resourceURL); count=count+1; } RDFUnRegister Para eliminar el registro del registro de un proveedor de servicios o recurso del servidor de registro, utilice la función RDFUnRegister para proporcionar la ubicación del registro del registro, el nombre de usuario y la contraseña del servidor de servicios de registro y el registro de registro que desea eliminar. Antes de poder eliminar el registro de registro de un proveedor de servicios, debe eliminar todos los registros de registro para los recursos de OSLC asociados. Si se realiza correctamente, la función RDFUnRegister devuelve el código de mensaje 204 y el valor true (verdadero). Las variables siguientes y sus valores de retorno también se devuelven para proporcionar información adicional: v ResultCode contiene el código de resultado para la respuesta. v HeadersReceived contiene las cabeceras recibidas en la respuesta. v HeadersSent contiene las cabeceras enviadas en la respuesta. v ResponseBody contiene el texto del cuerpo de respuesta. Si no se realiza correctamente, el valor de retorno del registro de registro de la ubicación de recurso es false (falso). La información del código de error se devuelve en las variables ErrorReason y ResultCode. Sintaxis La función RDFUnRegister tiene los parámetros siguientes: [ Serie =] RDFUnRegister(URI, Username , Password) donde Username puede ser una serie nula o vacía para especificar que no es necesaria la autenticación. Parámetros Tabla 88. Parámetros de parámetro de la función RDFUnRegister 282 Parámetro Tipo Descripción URI Serie Ubicación que contiene el registro de registro para el recurso o el proveedor de servicios Username Serie Nombre de usuario para el servidor de servicios de registro Password Serie Contraseña para el servidor de servicios de registro Netcool/Impact: Guía de soluciones Ejemplo de cómo eliminar el registro de un proveedor de servicios El ejemplo siguiente demuestra cómo eliminar el registro del proveedor de servicios. La ubicación del proveedor de servicios es: http://<servidor_registro>:9080/oslc/providers/6577 Utilice la función RDFUnRegister para eliminar el registro. Por ejemplo: //Información del servidor de registro ServiceProviderUri="http://<servidor_registro>:9080/oslc/ providers/6577"; RegistryServerUsername="system"; RegistryServerPassword="manager";result = RDFUnRegister(ServiceProviderUri, RegistryServerUsername, RegistryServerPassword); Ejemplo de cómo eliminar el registro de un recurso OSLC El ejemplo siguiente demuestra cómo utilizar la función de la política para eliminar el registro de un recurso OSLC. registrationURL = "http://nc004075.romelab.it.ibm.com:16310/oslc/registration/ 1351071987349"; providerURL = "http://nc004075.romelab.it.ibm.com:16310/oslc/providers/ 1351071987343"; RegistryServerUsername="smadmin"; RegistryServerPassword="tbsm01bm"; returnString = RDFUnRegister (registrationURL, RegistryServerUsername, RegistryServerPassword); RDFSelect Puede utilizar la función RDFSelect para recibir ayuda en la lectura y el análisis de un RDF. Para recuperar sentencias basándose en un modelo RDF, llame a la función RDFSelect y pase el modelo RDF creado por la función RDFParse. Puede filtrar basándose en un asunto, predicado u objeto. La función RDFSelect devuelve una matriz de sentencias basadas en el filtro, recuperando valores para variables de asunto, predicado y objeto. Puede utilizarla para crear sentencias RDF o triples. También puede utilizarla para filtrar sentencias. Si no desea filtrar sus resultados, especifique valores nulos o vacíos para los parámetros de tiempo de ejecución. Sintaxis La función RDFSelect tiene la sintaxis siguiente: [Matriz =] RDFSelect(Model, Subject, Predicate, Object) Parámetros La función RDFSelect tiene los parámetros siguientes: Tabla 89. Parámetros de la función RDFSelect Parámetro Tipo Descripción Model Modelo El modelo que contiene la carga útil de RDF Subject Serie Filtros para el valor de asunto en las sentencias RDF Capítulo 15. Utilización de OSLC para Netcool/Impact 283 Tabla 89. Parámetros de la función RDFSelect (continuación) Parámetro Tipo Descripción Predicate Serie Filtros para el valor de predicado en las sentencias RDF Object Serie Filtros para el valor de objeto en sentencias RDF El ejemplo siguiente proporciona sentencias basándose en un RDF recuperado por la función GetHTTP: //Recuperar el RDF del proveedor de OSLC a través del método GetHTTP HTTPHost="omega02.tivlab.austin.ibm.com"; HTTPPort=9081; Protocol="https"; Path="/NCICLUSTER_NCI_oslc/data/resourceShapes/alerts"; ChannelKey="tom"; Method=""; AuthHandlerActionTreeName=""; FormParameters=NewObject(); FilesToSend=NewObject(); HeadersToSend=NewObject(); HttpProperties = NewObject(); HttpProperties.UserId="tipadmin"; HttpProperties.Password="passw0rd"; x=GetHTTP(HTTPHost, HTTPPort, Protocol, Path, ChannelKey, Method, AuthHandlerActionTreeName, FormParameters, FilesToSend, HeadersToSend, HttpProperties); //Crear modelo de la carga útil de RDF rdf=RDFParse(x); //Recuperar todas las sentencias del modelo allStatements=RDFSelect(rdf,null,null,null); //Asunto, predicado y objetos de salida de todas las sentencias devueltas en el registro Size=Length(allStatements); log(Size); Count=0; While (Count < Size) { log (allStatements [Count].subject + " " + allStatements [Count].predicate + " " + allStatements [Count].object + "."); Count = Count + 1; } El fragmento de código siguiente proporciona todas las sentencias que contienen un nombre de asunto particular: //Recuperar el RDF del proveedor de OSLC a través del método GetHTTP HTTPHost="omega02.tivlab.austin.ibm.com"; HTTPPort=9081; Protocol="https"; Path="/NCICLUSTER_NCI_oslc/data/resourceShapes/alerts"; ChannelKey="tom"; Method=""; AuthHandlerActionTreeName=""; FormParameters=NewObject(); FilesToSend=NewObject(); HeadersToSend=NewObject(); HttpProperties = NewObject(); HttpProperties.UserId="tipadmin"; HttpProperties.Password="passw0rd"; x=GetHTTP(HTTPHost, HTTPPort, Protocol, Path, ChannelKey, Method, AuthHandlerActionTreeName, FormParameters, FilesToSend, 284 Netcool/Impact: Guía de soluciones HeadersToSend, HttpProperties); //Crear modelo de la carga útil de RDF rdf=RDFParse(x); //Recuperar sentencias que contienen el asunto del modelo statements=RDFSelect(rdf,” http://ibm.com/ns/netcool-impact/data/SCR_Components#MYCLASS”,null,null); //Asunto, predicado y objetos de salida de todas las sentencias devueltas en el registro Size=Length(stmt); log(Size); Count=0; While (Count < Size) { log (stmt[Count].subject + " " + stmt[Count].predicate + " " + stmt[Count].object + "."); Count = Count + 1; } RDFStatement Puede utilizar la función RDFStatement para crear y añadir sentencias a un modelo RDF. Especifique los parámetros siguientes en la función: v Objeto de modelo v Serie o recurso de asunto v Serie o propiedad de predicado v Serie de objeto o nodo RDF Si el parámetro de tiempo de ejecución Object es una serie, debe especificar un distintivo para determinar si el parámetro de entrada de objeto es literal RDF o un tipo de recurso RDF Para crear un recurso anónimo en la sentencia, defina el valor de Subject como null. Cuando el valor de este parámetro se establece en nulo, la función de políticas crea un recurso anónimo en la sentencia. Sintaxis La función RDFStatement tiene la sintaxis siguiente: [Statement =] RDFStatement (Model, Subject, Predicate, Object, isResource) Parámetros Si el parámetro de tiempo de ejecución Object es una serie, debe especificar el parámetro isResource. La función RDFStatement tiene los parámetros siguientes: Tabla 90. Parámetros de la función RDFStatement Parámetro Tipo Descripción Modelo Modelo Objeto de modelo al que se añade la sentencia. Capítulo 15. Utilización de OSLC para Netcool/Impact 285 Tabla 90. Parámetros de la función RDFStatement (continuación) Parámetro Tipo Descripción Subject Serie, recurso o nulo Valor de Subject de la sentencia. Si este parámetro se establece en nulo, la función crea un recurso anónimo en la sentencia. La función de políticas devuelve una sentencia en lugar de un modelo. Predicate Serie o propiedad Valor de Predicate de la sentencia. Object Serie o nodo RDF Valor de Object de la sentencia. isResource Booleano Determina si un objeto es un recurso o un literal. El ejemplo siguiente muestra cómo crear un RDF básico con una sola sentencia. 1. Utilice la función de políticas RDFModel para crear un modelo: Model = RDFModel(); RDFModelUpdateNS(model,"oslc","http://open-services.net/ns/core#"); subject = "http://ibm.com/ns/netcool-impact/data/SCR_Components#MYCLASS"; property = "http://open-services.net/ns/core#name"; value = "Brian"; isResource = false; 2. Utilice la función de políticas RDFStatement para crear una sentencia: RDFStatement(model,subject,property,value,isResource); 3. Finalmente, especifique cómo se genera el modelo RDF: body = RDFModelToString(model, null); 4. Finalmente, especifique cómo se genera el modelo RDF: body = RDFModelToString(model, null); El ejemplo siguiente muestra cómo crear un modelo que se basa en un modelo existente y que sólo utiliza los asuntos en los que está interesado el usuario. 1. Utilice el método GetHTTP para recuperar el RDF del proveedor OSLC: HTTPHost="omega02.tivlab.austin.ibm.com"; HTTPPort=9081; Protocol="https"; Path="/NCICLUSTER_NCI_oslc/data/resourceShapes/alerts"; ChannelKey="tom"; Method=""; AuthHandlerActionTreeName=""; FormParameters=NewObject(); FilesToSend=NewObject(); HeadersToSend=NewObject(); HttpProperties = NewObject(); HttpProperties.UserId="tipadmin"; HttpProperties.Password="passw0rd"; x=GetHTTP(HTTPHost, HTTPPort, Protocol, Path, ChannelKey, Method, AuthHandlerActionTreeName, FormParameters, FilesToSend, HeadersToSend, HttpProperties); 2. Cree el modelo RDF a partir de la carga útil RDF: rdf=RDFParse(x); 3. Defina un asunto por el que filtrar: 286 Netcool/Impact: Guía de soluciones mySubject=” http://ibm.com/ns/netcool-impact/data/SCR_Components#ID”; 4. Recupere todas las sentencias que contengan mySubject del modelo: allStatements=RDFSelect(rdf,mySubject,null,null); 5. Utilice la función RDFModel para crear un nuevo modelo: newModel = RDFModel() 6. Utilice la función RDFModelUpdateNS para añadir los espacios de nombres necesarios al modelo: RDFModelUpdateNS(newModel,"oslc","http://open-services.net/ns/core#"); RDFModelUpdateNS(newModel,"rdfs","http://www.w3.org/2000/01/rdf-schma#"); RDFModelUpdateNS(newModel,"dcterms","http://purl.org/dc/terms/"); 7. Utilice la función RDFStatement para añadir las sentencias del modelo anterior al nuevo modelo Size=Length(stmt); Count=0; While (Count < Size) { RDFStatement(newModel, stmt[Count].subject, stmt[Count].predicate, stmt[Count].object,IsRDFNodeResource(stmt[Count].object)); Count = Count + 1; } 8. Se genera el nuevo modelo en el registro: log(RDFModelToString(model, null)); Capítulo 15. Utilización de OSLC para Netcool/Impact 287 288 Netcool/Impact: Guía de soluciones Capítulo 16. Notificación de objetivo de nivel de servicio (SLO) La Notificación de objetivo de nivel de servicio (SLO) es una característica opcional que se puede configurar en el producto Netcool/Impact 6.1.1 existente. El paquete Notificación de SLO proporciona políticas y archivos de esquema que se pueden utilizar para almacenar métricas de nivel de servicio en una base de datos DB2. Estas métricas se utilizan para generar un informe. Notificación de SLO utiliza Tivoli Common Reporting para desarrollar, crear y generar informes. Tivoli Common Reporting consta de almacenes de datos, motores de informes, sus interfaces de usuario web correspondientes que se visualizan en Dashboard Application Services Hub, y una interfaz de línea de mandatos. Para obtener información sobre Tivoli Common Reporting, consulte el centro de información de Jazz for Service Management. Instalación y habilitación del paquete Notificación de SLO Cómo instalar y habilitar las extensiones de SLO de Netcool/Impact en Tivoli Common Reporting. Antes de empezar v Para que se pueda aplicar el paquete Notificación de SLO, Netcool/Impact 6.1.1.1 debe estar instalado y configurado. Las extensiones de paquete de informes son un conjunto de políticas, orígenes de datos y configuraciones de tipo de datos. v La versión de DB2 debe ser 9.7 Fixpack 4 o posterior, disponible como paquete con Netcool/Impact. v Se requiere Tivoli Common Reporting versión 2.1 o superior para instalar el paquete Notificación de SLO. v Debe crear una base de datos denominada SLORPRT en el sistema DB2 y catalogar el nodo remoto TCPIP y la base de datos remota. Si no existe una versión local de DB2 en el servidor de Tivoli Common Reporting (TCR), instale IBM DB2 Connect Server, disponible como parte de los instaladores de fixpacks de DB2 Server, Enterprise y Workstation. Para catalogar el nodo remoto TCPIP y la base de datos remota: 1. Utilice el usuario de instancia de DB2 para iniciar la sesión en el sistema Tivoli Common Reporting System. 2. Catalogue el nodo remoto TCPIP que contiene la base de datos SLORPRT. Por ejemplo: db2 catalog tcpip node SLONODE remote <nombre_host_DB2> server <puerto_DB2> 3. Catalogue la base de datos remota en el nuevo nodo TCPIP que ha creado. Por ejemplo: db2 catalog database SLORPRT as SLORPRT at node SLONODE Acerca de esta tarea El paquete Notificación de SLO se encuentra en el directorio dir_inicio_instalación/impact/add-ons/slo. © Copyright IBM Corp. 2006, 2014 289 Los directorios importData, db y Report se incluyen en el paquete de informes SLO. Procedimiento 1. En el servidor primario en el perfil de Impact, importe el SLA del proyecto desde el directorio importData, mediante el mandato nci_import. UNIX: Syntax nci_import <servername> <directory name>/importData Windows: Syntax nci_import.[bat/sh] <nombre_servidor> <nombre_directorio>/importData Donde <directory name> es /opt/IBM/tivoli/impact/add-ons/slo/importData. 2. El directorio db contiene un archivo sql. Añada este archivo al mismo sistema donde se crea la base de datos SLORPRT. Conéctese a la base de datos y ejecute los mandatos siguientes como ejemplo: db2 db2 db2 db2 create database SLORPRT using CODESET UTF-8 territory en-US connect to SLORPRT -tvf slo_dbschema.sql connect reset 3. El directorio Report contiene el modelo que se utilizará en Framework Manager en Tivoli Common Reporting. El modelo se proporciona para su consulta. Utilice el modelo si desea extender el esquema o crear más vistas para el informe. 4. El paquete de informes contiene el paquete que se debe importar en Tivoli Common Reporting Server. El paquete contiene el informe de ejemplo y las consultas que se pueden utilizar para generar los informes. Complete los pasos siguientes para importar el paquete Notificación de SLO de Netcool/Impact en Tivoli Common Reporting versión 3.1. a. Vaya al directorio bin de Tivoli Common Reporting. Por ejemplo: /opt/IBM/JazzSM/reporting/bin. b. Utilice el mandato trcmd para crear un origen de datos para la base de datos SLORPRT: trcmd.sh -user <usuario de TCR> -password <contraseña de TCR> -datasource -add SLORPRT -connectionString <serie de conexión de db2> -dbType DB2 -dbName <nombre de base de datos> -dbLogin <nombre de usuario de base de datos> -dbPassword <contraseña de base de datos> Por ejemplo: ./trcmd.sh -user tipadmin -password password -datasource -add SLORPRT -connectionString jdbc:db2://server.ibm.com:50000/SLORPRT -dbType DB2 -dbName SLORPRT -dbLogin db2inst1 -dbPassword password c. Utilice el mandato trcmd para probar si el origen de datos es correcto: ./trcmd.sh -user <usuario de TCR> -password <contraseña de TCR> -datasource -test SLORPRT Por ejemplo: ./trcmd.sh -user tipadmin -password password -datasource -test SLORPRT d. Utilice el mandato trcmd para importar el paquete Notificación de SLO de Netcool/Impact: ./trcmd.sh -import -bulk <archivo> -user <usuario de TCR> -password <contraseña de TCR> Por ejemplo: 290 Netcool/Impact: Guía de soluciones ./trcmd.sh -import -bulk /tmp/ImpactSLOReportPackage.zip -user tipadmin -password testpass1 5. En Netcool/Impact, configure el origen de datos SLOReportDatasource para acceder a la base de datos en DB2. SLOReportDatasource ya está disponible en el proyecto SLA en Netcool/Impact. Qué hacer a continuación Los artefactos básicos están configurados y el paso siguiente es definir los servicios. Definición de definiciones de servicios Los servicios se definen mediante un archivo de propiedades. Debe crear un archivo de propiedades para cada servicio y guardarlo en una ubicación de Netcool/Impact. Un servicio es cualquier recurso para el que se debe generar un informe. El recurso puede ser un servicio de negocio o un sistema, o cualquier otro recurso genérico. Un servicio está asociado a una o varias definiciones de SLA. El ejemplo siguiente muestra un servicio definido mediante un archivo de propiedades: serviceName=Internet Banking description = Service that defines Internet Banking identity=tbsm_identity:::internetBanking buisnessCalendar=US sla.num=1 sla.1.name=serviceDowntime sla.1.displayName=serviceDowntime sla.1.description=Service Downtime sla.1.operationalHour.num=2 sla.1.operationalHourStartTime.1 = 8:00:00 sla.1.operationalHourEndTime.1 = 12:00:00 sla.1.operationalHourStartTime.2 = 13:00:00 sla.1.operationalHourEndTime.2 = 17:30:00 sla.1.operationalHourThreshold = 99.5 sla.1.nonOperationalHourThreshold = 98.5 serviceName: Nombre del servicio para el que se proporcionan las definiciones de SLO. description: Esta propiedad define una descripción del servicio. identity: Esta propiedad identifica de forma exclusiva el servicio. Esta propiedad es el mismo campo de identidad que se utilizará en el registro de componentes de servicio. De forma predeterminada el atributo de identidad es tbsmidentity. El atributo tbsmidentity se utiliza para almacenar la métrica de SLA del recurso en el sistema de origen. Si es un tipo distinto, el valor de propiedad se puede especificar como identityStr:::identityValue. Por ejemplo, si cdm:name es el campo de identidad, el valor se debe especificar como cdm:name:::<valor>. Recuerde: El tipo de identidad se separa mediante tres series de dos puntos :::. Puede especificar cualquier valor para el tipo de identidad y el nombre. Al registrar la métrica SLA, asegúrese de pasar el identity_type:::Identityname correcto. Capítulo 16. Notificación de objetivo de nivel de servicio (SLO) 291 businessCalendar: Esta propiedad identifica el calendario laboral que se aplica a este servicio definido mediante la propiedad serviceName del archivo. sla.num: Define el número de definiciones de SLA. A continuación, cada propiedad se debe definir como sla.<núm>.<propiedad>. El rango de <núm> es de 1 a n. sla.<núm>.name Esta propiedad define el nombre del informe que se generará. sla.<núm>.displayName: Nombre de visualización que se puede utilizar para el informe. sla.<núm>.description: Descripción del SLA. sla.<núm>.operationalHour.num: Opcionalmente, define el número de horas operativas definidas para un SLA. El rango de <núm> es de 1 a n. Si no se especifica la propiedad, se utilizan de forma predeterminada las horas operativas que se definen en el nivel de servicio. sla.<núm>.operationalHourStartTime.<núm>: Esta propiedad identifica la “Hora de inicio de horario de negocio” de un SLA. Por ejemplo, las 9 de la mañana se debe definir como 09:00:00. La hora se define utilizando el reloj de 24 horas. sla.<núm>.operationalHourEndTime.<núm>: Esta propiedad identifica la “Hora de finalización de horario de negocio” de un SLA. Por ejemplo, 5:30 pm se debe definir como 17:30:00. La hora se define en el reloj de 24 horas. La hora de inicio y la hora de finalización de horario de negocio se pueden especificar en el nivel de SLA. sla.<núm>.operationalHourThreshold: Un valor de umbral de horas operativas que se utiliza para el informe. sla.<núm>.nonOperationalHourThreshold: Un valor de umbral de horas no operativas que se utiliza para el informe. Ejemplo de definición de un SLA: Varias definiciones de SLA para el mismo servicio: Incluya la propiedad sla.num en el archivo. La propiedad sla.num define el número de definiciones de SLA. A continuación, cada propiedad se debe definir como sla.<núm>.nombre de propiedad. El rango de <núm> es de 1 a n. Ejemplo: sla.num=2 sla.1.description = Service Downtime 1 sla.1.operationalHourStartTime.1=07:00:00 sla.1.operationalHourEndTime.1=12:00:00 sla.1.operationalHourStartTime.2=13:00:00 sla.1.operationalHourEndTime.2=18:00:00 sla.2.description = Service Downtime 2 sla.2.operationalHourStartTime.1=07:00:00 sla.2.operationalHourEndTime.1=18:00:00 Cada SLA puede tener varias horas operativas. Se deben definir varias horas operativas para dicho SLA: 292 Netcool/Impact: Guía de soluciones sla.<núm>.operationalHour.num=<número de horas operativas> Cada hora de inicio y hora de finalización se define como una propiedad distinta. Otro ejemplo con más detalles: serviceName=Retail Banking description=Service that defines Retail Banking identity=tbsm_identity:::retailBanking buisnessCalendar=US sla.num=2 sla.1.name=serviceDowntime sla.1.displayName=serviceDowntime sla.1.description=Service Downtime Without Lunch sla.1.operationalHour.num=2 sla.1.operationalHourStartTime.1=8:00:00 sla.1.operationalHourEndTime.1=12:00:00 sla.1.operationalHourStartTime.2=13:00:00 sla.1.operationalHourEndTime.2=18:00:00 sla.1.operationalHourThreshold=99.5 sla.1.nonOperationalHourThreshold=98.5 sla.2.name=serviceDowntimeWithLunch sla.2.displayName=serviceDowntimeWithLunch sla.2.description=Service Downtime With Lunch sla.2.operationalHour.num=1 sla.2.operationalHourStartTime.1=8:00:00 sla.2.operationalHourEndTime.1=18:00:00sla.2.operationalHourThreshold=99.5 sla.2.nonOperationalHourThreshold=98.5 Calendarios laborales Puede utilizar la característica de calendario laboral para identificar los festivos y fines de semana durante un periodo de tiempo específico. Procedimiento 1. Defina un calendario laboral. La definición del calendario laboral se puede realizar mediante un archivo de propiedades. El ejemplo siguiente muestra las propiedades que definen un calendario laboral. Propiedades de ejemplo de calendario laboral: calendar.name= US calendar.holidays.dateformat= MMM dd,aaaa calendar.holidays.num = 2 calendar.holidays.1 = Jan 1,2012 calendar.holidays.2 = July 4,2012 calendar.weekends.num = 2 calendar.weekends.1 = 1 calendar.weekends.2 = 6 calendar.name: Esta propiedad define un nombre de calendario. El nombre de calendario puede ser cualquier serie. Esta propiedad no debe empezar por COMMON para un calendario específico. Si está creando un calendario COMMON.US, al calcular el tiempo de inactividad se añadirá COMMON al nombre de calendario y se calcularán los días festivos o fines de semana. calendar.holidays.dateformat: Esta propiedad define el formato en el que se especifican las fechas. El formato especificado en SimpleDateFormat en Java. calendar.holidays.num: Esta propiedad define el número de días festivos especificados en este archivo. Capítulo 16. Notificación de objetivo de nivel de servicio (SLO) 293 calendar.holidays.<núm>: 1 a núm define cada uno de los días en los que se aplica un festivo para este calendario. calendar.weekends.num: El número de fines de semana especificados en este archivo. calendar.weekends.<núm>: Esta propiedad especifica el fin de semana de una semana, el día n de la semana. En el calendario de Estados Unidos, 1 es domingo. 2. Hay una propiedad opcional denominada calendar.duplicateCalendarName. calendar.duplicateCalendarName = COMMON.US Esta propiedad duplica toda la configuración asociada a COMMON.US. Por lo tanto, si ya ha definido un calendario, puede duplicar el calendario especificando simplemente la propiedad calendar.duplicateCalendarName. El ejemplo siguiente explica cómo utilizar calendar.duplicateCalendarName. a. Un usuario tiene una aplicación que se está ejecutando en la Zona 1 y la Zona 2, donde hay algunas diferencias en el calendario. b. La aplicación utiliza COMMON como la clave para identificar los festivos comunes. Sin embargo, COMMON es igual para la Zona 1 y la Zona 2. c. Defina un calendario denominado ZONE1 y COMMON.ZONE1 para la Zona 1. Este calendario es aplicable a la Zona 1. d. Defina un calendario denominado ZONE2 y COMMON.ZONE2 para la Zona 2. En lugar de especificar todos los días en COMMON.ZONE2, defina la propiedad calendar.duplicateCalendarName con el valor COMMON.ZONE1. La propiedad calendar.duplicateCalendarName duplica todos los días definidos en COMMON.ZONE1 y a continuación todas las demás propiedades del archivo se ignoran. Registro de métricas de SLA Complete los pasos siguientes para registrar las métricas de SLA: Acerca de esta tarea El paquete Notificación de SLO contiene las políticas siguientes: v BusinessCalendar: proporciona soporte funcional para los calendarios laborales. v createBusinessCalendarDefn: crea un calendario laboral basado en un archivo de propiedades. v createServiceDefinition: crea una definición de servicio basada en un archivo de propiedades. v recordSLAMetric: proporciona funciones de soporte utilizadas para registrar métricas de SLA. v serviceDefinition: proporciona soporte funcional para definiciones de servicio. v slaDefGlobalSettings: proporciona soporte para valores globales. v db2GetData: política de ejemplo. v getDataFromTBSMAvailability: política de ejemplo. v serviceDowntimeBasedOnTBSMStatusChange: política de ejemplo. Procedimiento 1. Defina la métrica de SLA del sistema de origen. Por ejemplo: 294 Netcool/Impact: Guía de soluciones v Ejecute la política createServiceDefinition con el parámetro del archivo de propiedades de definición de servicio creado anteriormente. v Ejecute la política createBusinessCalendarDefn con el parámetro del archivo de propiedades de calendario creado anteriormente. 2. Utilice la política de Netcool/Impact para registrar la información de métrica. Cree una política que utilice la función de políticas recordSLAMetric. Consulte la función de políticas db2GetData como ejemplo. Las políticas de Netcool/Impact se graban en el lenguaje JavaScript. Utilice la función Load para cargar la política de recordSLAMetric en la política de recuperación de datos. Para utilizar las funciones siguientes, añada los dos mandatos siguientes al inicio de la política Load("slaDefGlobalSettings"); Load("recordSLAMetric"); Están disponibles las funciones siguientes para registrar las métricas de SLA. v addCorrelationValue v recordMetric v addCheckpointValue v getCheckpointValue v addSLAMetricWithOperationalHoursAndBuisnessCalendar addCorrelationValue La función addCorrelationValue registra un valor de correlación para la métrica de SLA que se está registrando. El valor correlacionado se almacena como serie. El formato de la serie lo define el usuario. El usuario es responsable del mantenimiento de datos. Tabla 91. Parámetros de addCorrelationValue Parámetro Descripción serviceName: Nombre de servicio para el valor de correlación que se está almacenando. CorrelationValue: Valor del usuario que se almacena en la base de datos. MetricName: Nombre de métrica del valor de correlación que se está almacenando. TimeRecorded: Registro de tiempo de este valor de correlación. Los ejemplos siguientes muestran dónde se puede utilizar la función addCorrelationValue. v Ejemplo 1: Si el tiempo de inactividad de un servicio se debe calcular en función del valor correlacionado del estado de un suceso. Cuando se genere el suceso (estado abierto), anote el número de serie en el valor correlacionado con la hora registrada. Cuando se actualice el suceso con el estado cerrado, recupere la “hora de apertura” correlacionada de la tabla correlacionada. Utilice el campo con el registro de tiempo como la “Hora de creación” y la hora actual como la hora de resolución. v Ejemplo 2: Si desea almacenar un dato que se utilizará posteriormente en el informe, se puede utilizar la función addCorrelationValue. Por ejemplo, se puede almacenar Capítulo 16. Notificación de objetivo de nivel de servicio (SLO) 295 en esta tabla el número de ticket para el que se está registrando el tiempo de inactividad de servicio. Utilizando el campo timeRecorded, el nombre de servicio y el nombre de métrica, el usuario puede generar un informe de todos los tickets asociados a un métrica de SLA. recordMetric La función recordMetric registra una única métrica de SLA. El nombre de métrica de SLA se debe definir durante la sección de definición de servicios. Tabla 92. Parámetros de función de recordMetric Parámetro Descripción serviceName: Nombre de servicio de la métrica de SLA que se está registrando. metricName: Nombre de métrica de SLA. operValue: Valor que debe almacenarse durante las horas operativas. nonOperValue: Valor que debe almacenarse durante las horas no operativas. holidayValue: Valor que debe registrarse durante las horas festivas. CreationTimeInSeconds: Hora a la que se ha creado o se registra esta métrica. El valor debe estar en segundos desde el 1 de enero de 1970. operHourResourceId: Pase -1 para parámetros de operHourResourceID. Si necesita registrar la hora para el SLA, utilice siempre la función recordSLAMetricWithOperationalHoursAndBusinessCalendar. addCheckpointValue La función addCheckpointValue añade un valor de punto de comprobación para la solución. Este valor se puede utilizar para almacenar puntos de comprobación mientras se está procesando la recuperación de datos de origen. Tabla 93. Parámetros de addCheckpointValue Parámetros Descripción serviceName: Nombre de servicio del punto de comprobación que se almacenará. MetricName: Nombre de métrica del valor de punto de comprobación que se almacenará. Valor: Valor del punto de comprobación que se registrará. Ejemplo: Si el tiempo de inactividad del servicio se basa en la cantidad de tiempo que un ticket está abierto, puede utilizar la función addCheckpointValue para realizar un seguimiento del último registro que se lee de la base de datos de origen. Almacene la última hora de resolución leída de la base de datos. La siguiente consulta puede utilizar el valor almacenado en la base de datos de punto de comprobación para el filtro. 296 Netcool/Impact: Guía de soluciones getCheckpointValue La función getCheckpointValue se utiliza para recuperar el valor de punto de comprobación para un servicio y nombre de métrica. Esta función se utiliza para obtener el valor que ha añadido la función addCheckpointValue. Tabla 94. Parámetros de getCheckpointValue Parámetro Descripción serviceName: Nombre de servicio del valor de punto de comprobación que se recuperará de la tabla. MetricName: Nombre de métrica del valor de punto de comprobación que se recuperará de la tabla. addSLAMetricWithOperationalHoursAndBusinessCalendar La función addSLAMetricWithOperationalHoursAndBusinessCalendar inserta tiempo de inactividad en función de las horas operativas y el calendario laboral. Si se especifica el calendario laboral, éste se aplica. De forma similar, si se especifica el tiempo de horas operativas, el tiempo se desglosa en horas operativas y horas no operativas. Tabla 95. Parámetros de addSLAMetricWithOperationalHoursAndBusinessCalendar Parámetros Descripción ctime: Hora de inicio de esta métrica de SLA. Rtime: Hora de finalización de esta métrica de SLA. serviceName: Nombre de servicio del nombre de métrica que se registrará. serviceName debe ser el valor definido en el archivo serviceDef.props. Si hay una identidad definida para este servicio, la identidad se puede pasar a la función. La identidad se identifica mediante la presencia de tres signos de dos puntos, ":::". El formato de la entrada debe ser tipo_identidad:::valor_identidad. La función buscará el nombre de servicio en el parámetro de identidad y a continuación registrará la métrica. MetricName: Nombre de métrica del SLA que se registrará. Registra la métrica correspondiente a horas operativas, no operativas y festivas para cada día. Pasos de ejemplo de política de métrica Utilice los siguientes pasos de ejemplo como guía. Procedimiento 1. Lea el valor de punto de comprobación. 2. Si hay un nuevo valor de punto de comprobación, cree un filtro con el valor de punto de comprobación o cree un filtro sin valor de punto de comprobación. 3. Utilice el filtro para obtener los nuevos registros necesarios para registrar la métrica de SLA. Capítulo 16. Notificación de objetivo de nivel de servicio (SLO) 297 4. Si hay un intervalo de tiempo implicado, utilice la función addSLAMetricWithOperationalHoursAndBuisnessCalendar. De lo contrario, utilice la función recordMetric para registrar la métrica. 5. Registre el valor de punto de comprobación. 6. Si hay cualquier valor de correlación que sea necesario registrar, registre el valor de correlación. Utilización de la política de ejemplo getDataFromTBSMAvailability La política de ejemplo getDataFromTBSMAvailability obtiene el cambio de estado de la base de datos Historial de TBSM en TBSM para registrar el tiempo de inactividad del servicio. Procedimiento En Netcool/Impact, cree un origen de datos denominado TBSM que se conecte a la base de datos Historial de TBSM donde se almacenan los cambios de estado. Para obtener más información sobre la instalación de la base de datos Historial de TBSM, consulte el centro de información de TBSM disponible en el siguiente URL: http://www.ibm.com/developerworks/wikis/display/ tivolidoccentral/Tivoli+Business+Service+Manager 2. En Netcool/Impact, cree un tipo de datos llamado HISTORY_VIEW_METRIC_VALUE y asócielo con la vista HISTORY_VIEW_RESOURCE_METRIC_VALUE en la base de datos TBSM history. 3. En Netcool/Impact, cree un servicio de activador de política para activar la política getDataFromTBSMAvailability. Para obtener información sobre cómo crear un servicio de activador de política, consulte “Servicio activador de políticas” en la página 78. 4. La política getDataFromTBSMAvailability obtiene el cambio de estado y registra la métrica SLA para los servicios definidos utilizando el archivo de propiedades, denominado serviceDef.props en este ejemplo. La política comprueba la identidad del origen de datos TBSM de la base de datos SLORPRT. Se utiliza la identidad para consultar la base de datos Historial de TBSM para calcular la métrica de SLA. Sólo los servicios asociados con Identidad TBSM se utilizan para consultar el cambio de estado. 1. Informes El paquete de informes de disponibilidad de la aplicación contiene un informe de disponibilidad de la aplicación de ejemplo. Registre el tiempo de inactividad del servicio de la aplicación. El informe de disponibilidad se genera en el nivel de entidad para todas las aplicaciones. El informe solicita el servicio y el SLA que desea que ejecute el informe, y una fecha. La plantilla de informe tiene las opciones siguientes: v Una gráfica lineal que informa sobre la disponibilidad durante hasta un mes para la fecha seleccionada. v Un informe que informa sobre la disponibilidad de hasta un año para la fecha seleccionada. v La tabla contiene la fecha para cada aplicación. 298 Netcool/Impact: Guía de soluciones Capítulo 17. Configuración de Maintenance Window Management Maintenance Window Management (MWM) es un complemento que permite gestionar ventanas de mantenimiento de Netcool/OMNIbus. Mwm puede utilizarse con Netcool/OMNIbus versiones 7.x y posteriores. Una ventana de tiempo de mantenimiento es un período de inactividad preplanificado para un activo determinado. Los activos sometidos a mantenimiento generan con frecuencia errores y alarmas, conocidos como sucesos, pero las operaciones pueden ignorar dichos sucesos. MWM crea ventanas de tiempo de mantenimiento y las asocia a sucesos de Netcool/OMNIbus basados en valores de campo de OMNIbus, como por ejemplo Nodo o Ubicación.Netcool/Impact observa la corriente de sucesos de Netcool/OMNIbus y sitúa estos sucesos en mantenimiento de acuerdo con las ventanas de tiempo de mantenimiento. El servicio Netcool/Impact MWMActivator ubicado en Configuración del sistema > Automatización de sucesos > Servicios en el proyecto MWM debe ejecutarse para utilizar esta característica. Para obtener más información acerca de las ventanas de mantenimiento, consulte “Acerca de las ventanas de mantenimiento de MWM” en la página 301. Activación de MWM en un clúster de Netcool/Impact Maintenance Window Management (MWM) interactúa con Netcool/OMNIbus utilizando un servicio activador de políticas de Netcool/Impact llamado MWMActivator. Este servicio está desactivado por defecto en Netcool/Impact. Acerca de esta tarea Utilice los pasos siguientes para activar MWM en el clúster de Netcool/Impact NCICLUSTER. Procedimiento 1. Inicie sesión en Netcool/Impact. 2. Expanda Configuración del sistema > Automatización de sucesos. Pulse Políticas. 3. Desde la lista Clúster, seleccione NCICLUSTER. Desde la lista Proyecto, seleccione MWM. 4. En el separador Políticas, seleccione la política MWM_Properties, pulsecon el botón derecho y seleccione Editar o pulse el icono Editar política para ver la política y realizar los cambios necesarios. Para obtener más información, consulte “Configure la política MWM_Properties” en la página 300. 5. Pulse Servicios. 6. En el separador Servicios, seleccione MWMActivator, pulsecon el botón derecho y seleccione Editar o pulse el icono Editar servicios para abrir las propiedades del servicio MWMActivator. Realice los cambios necesarios. Para obtener información sobre estas propiedades, consulte “Configurar las propiedades del servicio MWMActivator” en la página 301. 7. Para iniciar el servicio, en el panel de estado del servicio seleccione MWMActivator y pulsecon el botón derecho y seleccione Inicio o pulse la flecha Iniciar servicio de la barra de herramientas Servicios. © Copyright IBM Corp. 2006, 2014 299 Cuando el servicio está en ejecución, coloca sucesos OMNIbus en mantenimiento basándose en las planificaciones especificadas en la GUI MWM. Configure la política MWM_Properties Configure la política MWM_Properties para utilizarla con el complemento MWM. Las opciones configurables siguientes están disponibles en la política MWM_Properties de Maintenance Window Management. v Caducidad de la ventana de mantenimiento – De manera predeterminada, MWM borra el distintivo “en mantenimiento” de los sucesos de OMNIbus correspondientes cuando caduque una ventana. Puede editar la política para que MWM deje estos sucesos con el distintivo “en mantenimiento” cuando caduque la ventana de mantenimiento. v Marcar sucesos existentes cuando se inicie una ventana de mantenimiento – De manera predeterminada, se coloca un distintivo en los sucesos coincidentes de OMNIbus, independientemente de si éstos han entrado en OMNIbus. Puede modificar la política de manera que MWM marque sólo los sucesos que llegan o que se duplican mientras la ventana de mantenimiento esté en ejecución. Puede cambiar estas opciones editando la política MWM_Properties en el proyecto MWM. 1. Expanda Configuración del sistema > Automatización de sucesos, pulse Servicios. 2. En la lista Proyectos, seleccione MWM. 3. En el separador Políticas, seleccione MWM_Properties, pulse con el botón derecho y seleccione Editar para abrir la política. MWM_Properties es una política pequeña con una única función llamada getProperties(). Otras políticas de MWM llaman a esta función para recuperar información de configuración. 4. Para cambiar las opciones de MWM, cambie la función y los valores proporcionados por TRUE o FALSE en caso necesario. Consulte la información siguiente en la política para ver las opciones de clearFlag. clearFlag = TRUE es la opción predeterminada. Utilice clearFlag = TRUE si desea que el mantenimiento coloque un distintivo en los sucesos borrados cuando caduquen las ventanas. Utilice clearFlag = FALSE si desea que Impact deje los sucesos con la etiqueta "en mantenimiento" después de que caduque la ventana. Consulte la información siguiente en la política para ver las opciones de flagExistingEvents. flagExistingEvents = TRUE es la opción predeterminada. Utilice flagExistingEvents = TRUE si desea que Impact coloque el distintivo "en mantenimiento" en los sucesos que entraron en último lugar (en función de LastOccurrence) antes de que se iniciara la ventana de tiempo. Utilice flagExistingEvents = FALSE si desea que Impact NO coloque el distintivo "en mantenimiento" en los sucesos a menos que éstos entren durante la ventana de mantenimiento. function getProperties(propsContext) { propsContext = newobject(); //ESTABLECER AQUÍ LOS VALORES//////////////////////// clearFlag = TRUE; flagExistingEvents = TRUE; //GRACIAS :) 300 Netcool/Impact: Guía de soluciones propsContext.clearFlag = clearFlag; propsContext.flagExistingEvents = flagExistingEvents; } Configurar las propiedades del servicio MWMActivator Configure el servicio MWMActivator para buscar sucesos de OMNIbus que requieran mantenimiento. Procedimiento 1. Expanda Configuración del sistema > Automatización de sucesos, pulse Servicios. 2. En el separador Servicios, pulsecon el botón derecho en MWMActivator y seleccione Editar o pulse el icono Editar servicios para abrir las propiedades para el servicio MWMActivator . 3. De manera predeterminada, el Intervalo de activación de MWMActivator se establece en 7 segundos. El servicio MWMActivator comprueba cada siete segundos para ver si hay sucesos de OMNIbus que requieran mantenimiento. Seleccione el tiempo de intervalo que desee utilizar. Si es posible, utilice números primos. 4. Cambie el valor de Política sólo si ha creado su propia política para sustituir la política MWM_Properties. 5. Seleccione Inicio para iniciar el servicio MWMActivator cuando se inicie Netcool/Impact. 6. Seleccione el Registro de servicio para crear un archivo del registro de servicio. Inicio de sesión en Maintenance Window Management Utilice Tivoli Integrated Portal para acceder a Maintenance Window Management (MWM). Procedimiento 1. En Tivoli Integrated Portal, expanda Resolución de problemas y soporte > Automatización de sucesos. 2. Pulse Maintenance Window Management para abrir MWM. Las opciones de menú principales son Añadir única, Añadir recurrente y Ver ventanas. También hay un menú Huso horario para establecer el huso horario. Para obtener más información acerca de estas opciones, consulte “Acerca de las ventanas de mantenimiento de MWM”. Acerca de las ventanas de mantenimiento de MWM Utilice la interfaz web de Maintenance Window Management (MWM) para crear ventanas de tiempo de mantenimiento y asociarlas con sucesos de Netcool/OMNIbus. Los sucesos de Netcool/OMNIbus se basan en valores de campo de OMNIbus, como por ejemplo Nodo o Ubicación. Los sucesos de Netcool/OMNIbus se sitúan en mantenimiento de acuerdo con estas ventanas de tiempo de mantenimiento. Si se producen sucesos durante una ventana de mantenimiento, MWM los marca como en mantenimiento cambiando el valor del campo de OMNIbus, el campo de entero, SuppressEscl por 6 en la tabla alerts.status. Capítulo 17. Configuración de Maintenance Window Management 301 Una ventana de tiempo de mantenimiento es un período de inactividad preplanificado para un activo determinado. Los activos sometidos a mantenimiento generan con frecuencia errores y alarmas (sucesos), pero las operaciones pueden ignorar dichos sucesos. MWM marca los sucesos de OMNIbus en mantenimiento para que las operaciones sepan que no deben centrarse en ellos. Puede utilizar MWM para especificar ventanas de tiempo de mantenimiento únicas y recurrentes. v las ventanas de ejecución única son ventanas de tiempo de mantenimiento que se ejecutan una sola vez y no se repiten. Las ventanas de ejecución única pueden utilizarse en situaciones de mantenimiento de emergencia situadas fuera de los períodos de mantenimiento planificados de forma regular. Puede utilizarlas en todo momento si no tiene una planificación de mantenimiento regular. v Las ventanas de ejecución recurrente son ventanas de tiempo de mantenimiento que se ejecutan a intervalos regulares. MWM da soporte a tres tipos de ventanas de ejecución recurrente: – Día de la semana recurrente – Fecha del mes recurrente – Cada n día de la semana Las ventanas de tiempo de mantenimiento deben estar enlazadas con sucesos de OMNIbus para que MWM pueda marcar los sucesos en mantenimiento. Al configurar una ventana de tiempo, también se definen los sucesos que deben asociarse con la misma. MWM admite la utilización de los campos Nodo, Grupo de alertas, Clave de alerta y Ubicación para enlazar sucesos con ventanas de tiempo. Crear una ventana de mantenimiento única Cree una ventana de tiempo de mantenimiento única para un activo determinado. Procedimiento 1. Pulse el enlace Añadir única para visualizar el formulario de creación de una ventana de mantenimiento única. 2. Especifique los valores adecuados en los campos Nodo, Grupo de alertas, Clave de alerta y Ubicación. Seleccione las opciones Igual a o Como junto a cada campo. Consejo: En el caso de un mandato Like, no hay ningún requisito para expresiones regulares. Puede especificar una subserie y seleccionar el operador like desde mwm. 3. Pulse el icono de calendario para seleccionar la Hora de inicio y la Hora de finalización para la ventana de tiempo de mantenimiento. 4. Pulse Añadir ventana para crear la ventana. 5. Pulse Ver ventanas para ver la ventana configurada. Crear una ventana de mantenimiento recurrente Cree una ventana de tiempo de mantenimiento recurrente para un activo determinado. Procedimiento 1. Pulse el enlace Añadir recurrente para visualizar el formulario de creación de los diferentes tipos de ventanas de tiempo recurrentes. 2. Especifique los valores adecuados en los campos Nodo, Grupo de alertas, Clave de alerta y Ubicación. 302 Netcool/Impact: Guía de soluciones 3. 4. 5. 6. Seleccione las opciones Igual a o Como junto a cada campo. Seleccione la Hora de inicio y la Hora de finalización para la ventana de tiempo de mantenimiento. Seleccione el tipo de ventana recurrente y especifique los detalles. v Día de la semana recurrente Estas ventanas aparecen semanalmente el mismo día y a la misma hora. Por ejemplo, puede establecer la ventana cada Sábado de 5 p.m. a 12 a.m. O puede establecer la ventana para varios días, por ejemplo Sábado, Domingo y Lunes de 5 p.m. a 12 a.m. v Día del mes recurrente Estas ventanas aparecen mensualmente en la misma fecha y a la misma hora. Por ejemplo, puede establecer la ventana el día 15 de cada mes de 7 a.m. a 8 a.m. O puede establecer la ventana para varios meses. v Cada n día de la semana Estas ventanas aparecen mensualmente en el mismo día de la semana y a la misma hora. Por ejemplo, puede establecer la ventana en el primer y tercer Sábado de cada mes de 5 p.m. a 12 a.m. Pulse Añadir ventana para crear la ventana. Pulse Ver ventanas para comprobar que la ventana de tiempo se ha añadido. Visualizar ventanas de mantenimiento Pulse el enlace Ver ventanas para visualizar una barra de herramientas que contiene enlaces a los diversos tipos de ventanas. Las opciones de visualización son: v Única v Día de la semana v Día del mes v n Día de la semana v Ventanas activas Si hay ventanas de mantenimiento definidas en alguna de estas categorías de ventanas, pulse un enlace para visualizar una lista de las ventanas de mantenimiento definidas. El color del icono de estado indica si la ventana está activa (verde), ha caducado (rojo) o aún no se ha iniciado (azul, futuro). Puede utilizar el icono de supresión para suprimir una ventana de mantenimiento. Maintenance Window Management y otras políticas de Netcool/Impact Maintenance Window Management (MWM) se ejecuta independientemente de otras políticas de Netcool/Impact o automatizaciones de OMNIbus. Cada siete segundos, MWM comprueba si hay ventanas de mantenimiento abiertas y marca los sucesos correspondientes como en mantenimiento. Considere esta característica al añadir sus propias políticas y automatizaciones. Defectos conocidos Si hay ventanas de tiempo de solapamiento, hay posibilidades de que un suceso se marque de manera temporal como fuera de mantenimiento cuando finalice la primera ventana. Si se produce esta situación, el suceso se marca como en mantenimiento la próxima vez que se ejecuta el servicio MWMActivator. La propiedad clearFlag tiene aquí una función. Si clearFlag = FALSE, entonces el suceso nunca se marca como fuera de mantenimiento. Capítulo 17. Configuración de Maintenance Window Management 303 Maintenance Window Management no funcionará correctamente si no se utiliza el nombre de clúster predeterminado, NCICLUSTER. Cuando se abre la página principal de MWM, se utiliza el mensaje siguiente: No se ha podido recuperar un cliente para acceder al servidor Impact, en el clúster: nombreclúster Para obtener información sobre cómo resolver este problema, consulte Guía de resolución de problemas. 304 Netcool/Impact: Guía de soluciones Capítulo 18. Configuración de la correlación y el aislamiento de sucesos El aislamiento y correlación de sucesos se suministra como componente adicional del producto Netcool/Impact. El Aislamiento y correlación de sucesos se ha desarrollado mediante la tecnología de vistas de operador de Netcool/Impact. Puede configurar el aislamiento y correlación de sucesos para aislar un suceso que ha provocado un problema. También puede visualizar los sucesos que dependen del suceso aislado. Visión general Netcool/Impact tiene un proyecto predefinido, EventIsolationAndCorrelation, que contiene orígenes de datos, tipos de datos, políticas y vistas de operador predefinidos. Una vez instaladas y configuradas todas las bases de datos y esquemas necesarios, debe configurar los orígenes de datos. A continuación, puede crear las reglas de suceso mediante el sql de objectserver en la vista de Aislamiento y correlación de sucesos desde Tivoli Integrated Portal. Puede visualizar el análisis de sucesos en la vista de operador EIC_Analyze. Para configurar y ejecutar la característica de Aislamiento y correlación de sucesos, deben seguirse estos pasos. 1. Instale Netcool/Impact. 2. Instale DB2 o utilice una instalación de DB2 existente. 3. Configure la base de datos DB2 con el esquema DB2 en el launchpad de Netcool/Impact. 4. Instale el kit de herramientas de biblioteca de descubrimiento desde el launchpad de Netcool/Impact. Si ya tiene una instalación de Tivoli® Application Dependency Discovery Manager (TADDM), configure el kit de herramientas de biblioteca de descubrimiento para que utilice los datos de relación de TADDM. También puede utilizar los datos mediante la carga de libros IDML (Identity Markup Language). Para obtener información adicional acerca del kit de herramientas de biblioteca de descubrimiento, consulte la Guía del administrador de Tivoli Business Service Manager y la Guía de personalización de Tivoli Business Service Manager. Estas guías están disponibles en el Information Center deTivoli Business Service Manager 6.1.1.1 al que se accede desde el URL siguiente, Documentación para todos los productos Tivoli. Puede cargar el espacio de nombres personalizado o su propio modelo en SCR utilizando la API SCR en TBSM. Para más información, consulte Tivoli Business Service Manager Customization Guide, Personalización del proceso de importación del Service Component Repository y Visión general de la API de Service Component Repository. 5. En Tivoli Integrated Portal, configure los orígenes y tipos de datos del proyecto EventIsolationAndCorrelation para utilizarlos con Servidor Impact. 6. Cree las reglas de suceso en la interfaz de usuario para conectarse a Servidor Impact. 7. Configure WebGUI para añadir un punto de lanzamiento nuevo. © Copyright IBM Corp. 2006, 2014 305 Para obtener información detallada acerca de la configuración del Aislamiento y correlación de sucesos, consulte la Guía de soluciones de Netcool/Impact. Instalación de Netcool/Impact y la base de datos DB2 Para ejecutar la característica Aislamiento y correlación de sucesos, instale Netcool/Impact y la base de datos DB2 y configure el esquema DB2. Procedimiento 1. Instale Netcool/Impact. Consulte la publicación Guía de administración de Netcool/Impact , Capítulo 2 Instalación y migración. 2. Instale DB2. Netcool/Impact y Tivoli Business Service Manager admiten DB2 versión 9.5 o superior. Para obtener información sobre la instalación y la utilización de DB2, consulte el centro de información que aparece aquí para obtener la versión que utiliza: http://publib.boulder.ibm.com/infocenter/ db2luw/v9r7/topic/com.ibm.db2.luw.common.doc/doc/t0021844.html. v En un entorno z/Linux, tiene que instalar manualmente el esquema DB2 desde la línea de mandatos y no desde el launchpad. Ejecute el siguiente mandato desde la línea de mandatos: launchpad/zlinux/setup-dbconfig-zlinux.bin. 3. Configure la base de datos DB2 con el esquema DB2. Un usuario con permiso para ejecutar las herramientas de la línea de mandatos de DB2 completa este paso. v Para Unix, utilice el ID de usuario db2inst1. v Para Windows, utilice el ID de usuario db2admin. Puede instalar el esquema de DB2 desde el launchpad de Netcool/Impact. Instalación del kit de herramientas de la biblioteca de descubrimiento Instale el kit de herramientas de la biblioteca de descubrimiento para importar los recursos y las relaciones descubiertos a la base de datos Services Component Registry. Acerca de esta tarea Para obtener información sobre Services Component Registry consulte la información de API de Services Component Registry de la Guía de personalización de Tivoli Business Service Manager disponible en el URL siguiente: https://www.ibm.com/developerworks/wikis/display/tivolidoccentral/ Tivoli+Business+Service+Manager. Utilice el kit de herramientas de bibliotecas de descubrimiento para importar datos de Tivoli® Application Dependency Discovery Manager 7.1 o posterior a Tivoli Business Service Manager. El kit de herramientas también proporciona la capacidad de leer libros de descubrimiento de lectura en entornos que no tienen una instalación de Tivoli Application Dependency Discovery Manager. v Si utiliza Tivoli Business Service Manager y Netcool/Impact, utilice la información de Instalación del kit de herramientas de la biblioteca de descubrimiento de la publicación Tivoli Business Service Manager Guía de instalación del centro de información de Tivoli Business Service Manager 6.1.1.1 disponible en el URL siguiente: https://www.ibm.com/developerworks/wikis/display/ tivolidoccentral/Tivoli+Business+Service+Manager. 306 Netcool/Impact: Guía de soluciones v Para lograr una implementación de Netcool/Impact que no utilice Tivoli Business Service Manager se puede instalar el kit de herramientas de la biblioteca de descubrimiento desde el launchpad de Netcool/Impact. Para la información relacionada con Tivoli Business Service Manager, debe configurarse el origen de datos para acceder a la base de datos db2. Esta información no es necesaria para una instalación de Netcool/Impact. Procedimiento 1. Desde el launchpad de Netcool/Impact, seleccione Instalar Discovery Library Toolkit. 2. Descomprima DiscoveryLibraryToolkit.zip en un directorio local en el que vaya a instalar el esquema de base de datos o el kit de herramientas de la biblioteca de descubrimiento. 3. Navegue hasta el directorio del sistema operativo en el que vaya a instalar el kit de herramientas de la biblioteca de descubrimiento. 4. Ejecute el archivo setup-dbconfig-<nombre_so>.bin para instalar el esquema de bases de datos. 5. Para instalar el kit de herramientas de la biblioteca de descubrimiento, ejecute el archivo setup-dltoolkit-<osname>.bin. donde nombre_so es Linux, Windows, Aix o Solaris. 6. Durante la instalación del kit de herramientas de la biblioteca de descubrimiento hay opciones para configurar el servidor de datos de Tivoli Business Service Manager. Puede añadir los valores que quiera. Estos valores no se utilizan en Netcool/Impact. Políticas de Aislamiento y correlación de sucesos El proyecto EventIsolationAndCorrelation contiene una lista de políticas predefinidas que son específicas del Aislamiento y correlación de sucesos. Las políticas siguientes se encuentran en el proyecto EventIsolationAndCorrelation dan soporte a la característica de Aislamiento y correlación de sucesos y no deben modificarse: v v v v v v v EIC_IsolateAndCorrelate EIC_eventrule_config EIC_utils Opview_EIC_Analyze Opview_EIC_confSubmit Opview_EIC_configure Opview_EIC_requestHandler Vistas de operador de Aislamiento y correlación de sucesos El proyecto EventIsolationAndCorrelation contiene una lista de vistas de operador predefinidas que son específicas del Aislamiento y correlación de sucesos. v EIC_Analyze muestra el análisis de una consulta de suceso. v EIC_confSubmit da soporte a la configuración del Aislamiento y correlación de sucesos. v EIC_configure configura las reglas de suceso del Aislamiento y correlación de sucesos. v EIC_requestHandler da soporte a la configuración del Aislamiento y correlación de sucesos. Capítulo 18. Configuración de la correlación y el aislamiento de sucesos 307 Configurar orígenes de datos de Aislamiento y correlación de sucesos Todas las características relacionadas con el Aislamiento y correlación de sucesos están asociadas con el proyecto EventIsolationAndCorrelation. Configure los orígenes de datos, tipos de datos y elementos de datos necesarios para el aislamiento y correlación de sucesos. Procedimiento 1. Desde Tivoli Integrated Portal, pulse Configuración del sistema > Automatización de sucesos > Modelo de datos. 2. >En la lista de proyectos, seleccione el proyecto EventIsolationAndCorrelation. Se visualizará una lista de orígenes de datos específicos de la característica EventIsolationAndCorrelation. v EIC_alertsdb v SCR_DB v EventrulesDB 3. Para cada origen de datos, actualice la información de conexión, el ID de usuario y la contraseña y guárdelo. 4. Configure EIC_alertsdb para el servidor de objetos en el que deben correlacionarse y aislarse los sucesos. 5. Configure SCR_DB para la base de datos de Services Component Registry. Nota: Al configurar los orígenes de datos SCR (Services Component Registry), debe apuntar los orígenes de datos a lo que se conoce comúnmente como el SCR. El SCR es un esquema en la base de datos TBSM que se crea al ejecutar el paso de configuración de esquema de DB2. El esquema se denomina TBSMSCR. La base de datos tiene un nombre predeterminado de TBSM. 6. Configure EventRulesDB_DB para la base de datos de Services Component Registry. Configurar tipos de datos de Aislamiento y correlación de sucesos El proyecto EventIsolationAndCorrelation contiene una lista de tipos de datos predefinidos que son específicos del Aislamiento y correlación de sucesos. Excepto el tipo de dato EIC_alertquery que debe configurarse, el resto de tipos de datos están preconfigurados y funcionan correctamente una vez configurados los orígenes de datos padre. Acerca de esta tarea La lista siguiente muestra los orígenes de datos de Aislamiento y correlación de sucesos y sus tipos de datos: v EIC_alertsdb – EIC_alertquery v SCR_DB Los tipos de datos siguientes se utilizan para recuperar la información de relación de Services Component Registry. – bsmidenties – getDependents – getRscInfo v EventRulesDB 308 Netcool/Impact: Guía de soluciones La base de datos utiliza los tipos de datos siguientes para contener la configuración de usuario final del Aislamiento y correlación de sucesos. – EVENTRULES – EIC_PARAMETERS Procedimiento 1. Para configurar el tipo de datos EIC_alertquery, púlselo con el botón derecho del ratón y seleccione Editar. 2. Los campos Nombre de tipo de datos y Nombre de origen de datos ya están rellenados. 3. El recuadro de selección Estado está seleccionado automáticamente como Habilitado para activar el tipo de datos, de modo que esté disponible para utilizarlo en las políticas. 4. Tabla base: Especifica la base de datos y la tabla subyacentes en las que se almacenan los datos del tipo de datos. 5. Pulse Renovar para rellenar esta tabla. Las columnas de tabla se muestran como campos de una tabla. Para que el acceso a la base de datos resulte lo más eficaz posible, suprima los campos que no se utilicen en las políticas. Para obtener información acerca de la adición y eliminación de campos del tipo de datos, consulte el tema “Ventana de configuración de tipos de datos SQL separador Descripción de tabla” en la página 24. 6. Pulse Guardar para implementar los cambios. Crear, editar y suprimir reglas de suceso Cómo crear, editar y suprimir una regla de sucesos para Aislamiento y correlación de sucesos. Procedimiento 1. Seleccione Configuración del sistema > Automatización de sucesos > Aislamiento y correlación de sucesos para abrir el separador Aislamiento y correlación de sucesos. 2. Pulse el icono Crear regla para crear una regla de suceso. Al crear este elemento, la página de configuración contiene valores vacíos para diversas propiedades. 3. Pulse el icono Editar la regla seleccionada para editar las reglas de suceso existentes. 4. Pulse el icono Suprimir la regla seleccionada para suprimir una regla de suceso del sistema y de la lista. Crear una regla de suceso Complete los campos siguientes para crear una regla de suceso. Procedimiento 1. Nombre de regla de suceso: especifique el nombre de la regla de suceso. El nombre de regla de suceso debe ser exclusivo en todo el sistema. Al seleccionar Editar o Nuevo, si se especifica un nombre de regla de suceso existente, se actualiza la regla de suceso existente. Al editar una regla de suceso y cambiar el nombre de regla de suceso, se crea una regla de suceso con el nombre nuevo. Capítulo 18. Configuración de la correlación y el aislamiento de sucesos 309 2. Suceso primario: especifique el SQL que debe ejecutarse en el objectserver configurado en el origen de datos EIC_alerts db. El suceso primario es el suceso seleccionado para el análisis. El filtro de suceso primario se utiliza para identificar si el suceso que se había seleccionado para el análisis tiene una regla asociada. El filtro de suceso primario también se utiliza para identificar el objeto de la base de datos de Services Component Registry que tiene un suceso asociado. El objeto puede tener o no entidades dependientes. Durante el análisis, la característica de aislamiento y correlación de sucesos busca todas las entidades dependientes y sus sucesos asociados. Por ejemplo, el suceso primario tiene 3 entidades dependientes o hijas, cada una de las cuales tiene 3 sucesos asociados. En total, hay 9 sucesos dependientes. Cualquiera de estos sucesos secundarios podría ser la causa del suceso primario. Esta lista de sucesos es lo que indica la lista de sucesos secundarios. El filtro de sucesos secundarios se utiliza para aislar uno o varios de estos sucesos como causa raíz del problema. 3. Probar SQL: pulse Probar SQL para probar la sintaxis del SQL especificado en el suceso primario. Modifique la consulta de modo que sólo se devuelva una fila. Si hay varias filas, sigue siendo posible configurar la regla. Sin embargo, durante el análisis sólo se utilizará la primera fila de la consulta. 4. Sucesos secundarios: el área de texto se utiliza para que el SQL identifique los sucesos dependientes. Al especificar los sucesos dependientes, puede especificar variables o parámetros de la información del suceso primario que pueden sustituirse. Las variables se especifican con el signo @. Por ejemplo, si el nombre de variable es dbname, debe especificarse como @dbname@. Un ejemplo es Identifier = 'BusSys Level 1.2.4.4' and Serial = @ser@. Las variables se sustituyen durante el paso de análisis. La información se recupera del suceso primario en función de la configuración de la tabla de parámetros y se visualiza en la sección Asignación de variables de la página. 5. Extraer parámetros: pulse Extraer parámetros para extraer el nombre de variable situado entre los símbolos @ y llenar la tabla de parámetros. Una vez extraída la información de variable en la tabla, puede editar cada una de las columnas. a. Seleccione el campo con respecto a la expresión regular que desea ejecutar y se extraerá un valor de sustitución. b. Especifique la expresión regular en la columna de expresiones regulares. La expresión regular sigue la sintaxis de IPL y se ejecuta mediante la función RExtract. c. Una vez especificada la expresión regular, pulse Renovar para validar la expresión regular y comprobar que se ha extraído el valor correcto. La tabla contiene los parámetros. 6. Limitar resultados del análisis a los elementos de configuración relacionados de Service Component Registry: marque este recuadro de selección si el análisis debe limitarse sólo a los elementos de configuración relacionados. Si no se marca el recuadro de selección, se devolverá la consulta dependiente. 7. El suceso primario es un suceso de causa raíz: marque este recuadro de selección para identificar si el suceso primario es el suceso de causa y el resto de sucesos son sucesos sólo de síntomas. 8. Campo de suceso: identifica el campo del suceso que contiene el identificador de recurso de Services Component Registry. Seleccione el campo en el menú desplegable que contiene el identificador de recurso en el suceso. 310 Netcool/Impact: Guía de soluciones 9. Intervalo de tiempo en segundos para correlacionar sucesos: añada el periodo de tiempo que el suceso debe analizar. El valor predeterminado es de 600 segundos. Se analizarán los sucesos ocurridos 600 segundos antes del suceso primario. 10. Pulse Guardar configuración para añadir la configuración a la base de datos de componente de fondo. 11. Ahora, las reglas de suceso están configuradas y el suceso está listo para el análisis. Puede visualizar el análisis de sucesos en la página EIC_Analyze. Configurar WebGUI para añadir un punto de lanzamiento nuevo Configure la WebGUI con un contexto de lanzamiento para lanzar la página de análisis. Acerca de esta tarea WebGUI se puede configurar para lanzar la página de análisis. Consulte el procedimiento para el lanzamiento de la integración descrito en el URL siguiente, http://publib.boulder.ibm.com/infocenter/tivihelp/v8r1/topic/ com.ibm.netcool_OMNIbus.doc_7.4.0/webtop/wip/task/ web_con_integrating.html. El URL que necesita para la correlación y el aislamiento de sucesos es <NOMBRE_HOST_TIP>:<PUERTO_TIP>/opview/displays/NCICLUSTER-EIC_Analyze.html. Pase el número de serie de la fila seleccionada para el suceso. Nota: NCICLUSTER es el nombre del clúster configurado durante la instalación de Netcool/Impact. Debe utilizar el nombre del clúster, sea cual sea, en el URL. Por ejemplo, en Tivoli Business Service Manager el nombre de clúster predeterminado es TBSMCLUSTER. Para realizar el lanzamiento desde Tivoli Business Service Manager, deberá utilizar el archivo html, TBSMCLUSTER-EIC_Analyze.html. Lanzar la página de análisis de Aislamiento y correlación de sucesos Cómo lanzar la página de análisis de Aislamiento y correlación de sucesos. Acerca de esta tarea Existen dos maneras de lanzar la página de análisis de Aislamiento y correlación de sucesos. v Manualmente, mediante la página web y el número de serie de suceso. v Utilizando la función de lanzamiento en AEL (Active Event List) o LEL (Lightweight Event List) desde WebGUI en Tivoli Enterprise Portal. Procedimiento Abra un navegador en Netcool/Impact. Utilice una de las opciones siguientes: v Apunte a <TIPServer>:<TIPPort>/opview/displays/NCICLUSTEREIC_Analyze.html?serialNum=<EventSerialNumber>. Donde <TIPServer> y <TIPPort> son el puerto de Netcool/Impact Servidor GUI y EventSerialNumber es el número de serie del suceso que desee analizar. Para lanzar la página de análisis fuera de AEL (Action Event List), puede añadir serialNum=<Serial Number> como parámetro. Capítulo 18. Configuración de la correlación y el aislamiento de sucesos 311 v La página de análisis de Aislamiento y correlación de sucesos se puede configurar para lanzarla desde AEL (Active Event List) o LEL (Lightweight Event List) en WebGUI. Para obtener más información, consulte “Configurar WebGUI para añadir un punto de lanzamiento nuevo” en la página 311. Al crear la herramienta, debe especificar únicamente <TIPSERVER>:port/opview/displays/ NCICLSTER-EIC_Analyze.html. No es necesario especificar SerialNum como parámetro, ya que lo añadirá la página de análisis del Aislamiento y correlación de sucesos de la herramienta AEL. Visualizar el análisis de sucesos Visualice el análisis de una consulta de suceso en la página EIC_Analyze. Acerca de esta tarea La entrada de la política EIC_IsolateAndCorrelate es el número de serie del suceso especificado mediante la variable serialNum. La política busca el suceso primario para recuperar el identificador de recurso. A continuación, la política busca los sucesos dependientes en función de la configuración. Los sucesos dependientes se filtran con mayor detalle utilizando los recursos relacionados, si el usuario ha elegido limitar el análisis a los recursos relacionados. Una vez pasado el número de serie como parámetro en WebGUI, puede visualizar el suceso desde AEL o LEL y lanzar la página de análisis. Procedimiento Seleccione el suceso en AEL o LEL y lance la página de análisis. La página EIC_Analyze contiene tres secciones: v Información de suceso primario: muestra la información relativa al suceso seleccionado. Este es el suceso en el que tiene lugar el análisis de aislamiento y correlación de sucesos. v Sucesos correlacionados: muestra la información relativa a los sucesos dependientes identificados por la herramienta. Los sucesos dependientes se identifican como los sucesos que están asociados a los recursos hijos dependientes del dispositivo u objeto que está asociado con el suceso primario. Estos sucesos se visualizan en el contexto de recursos dependientes identificados desde Services Component Registry. v Proceso de regla de suceso: muestra la regla que se ha identificado y procesado al analizar este suceso primario. 312 Netcool/Impact: Guía de soluciones Apéndice. Accesibilidad Las características de accesibilidad ayudan los usuarios con discapacidades físicas, como por ejemplo movilidad restringida o visión limitada, a utilizar satisfactoriamente los productos de software. Éstas son las principales características de accesibilidad que puede utilizar con Netcool/Impact al acceder a él en el emulador de terminal de IBM Personal Communications: v Puede utilizar todas las características utilizando el teclado en lugar del ratón. v Puede leer texto mediante la interacción con la tecnología de asistencia. v Puede utilizar valores del sistema para font, tamaño y color para todos los controles de la interfaz de usuario. v Puede ampliar el tamaño de lo que se visualiza en la pantalla. Para obtener más información sobre la visualización de PDF desde Adobe, vaya al sitio web siguiente: http://www.adobe.com/enterprise/accessibility/main.html © Copyright IBM Corp. 2006, 2014 313 314 Netcool/Impact: Guía de soluciones Glosario Este glosario incluye términos y definiciones para Netcool/Impact. En este glosario se utilizan las siguientes referencias cruzadas: v Véase le remite de un término a un sinónimo preferido o de un acrónimo o una abreviatura a la forma completa definida. v Véase también le remite a un término relacionado u opuesto. Para ver glosarios de otros productos de IBM, vaya a www.ibm.com/software/ globalization/terminology (se abre en una ventana nueva). A activador de política Servicio que ejecuta una política especificada a intervalos que el usuario define. activador de políticas en hibernación Servicio responsable de activar políticas de hibernación. adaptador de origen de datos de JMS (DSA de JMS) Adaptador de origen de datos que envía y recibe mensajes JMS (Java Message Service). adaptador de origen de datos de LDAP (DSA de LDAP) Adaptador de origen de datos que lee datos de directorio gestionados por un servidor LDAP. Véase también Lightweight Directory Access Protocol. adaptador de origen de datos de SNMP (DSA de SNMP) Adaptador de origen de datos que permite que se establezca y recupere la información de gestión almacenada por los agentes SNMP. También permite enviar interrupciones y notificaciones SNMP a los gestores SNMP. Véase también Simple Network Management Protocol (Protocolo simple de gestión de red). adaptador de origen de datos (DSA) Componente que permite a la aplicación acceder a datos almacenados en un origen externo. adaptador de origen de datos XML Adaptador de origen de datos que lee datos XML de series o archivos y lee datos XML de servidores web sobre HTTP. B base de datos (BD) Colección de elementos de datos interrelacionados o independientes que se almacenan juntos para servir una o más aplicaciones. Véase también servidor de bases de datos. BD Véase base de datos. © Copyright IBM Corp. 2005, 2011 © IBM 2006, 2014 315 C campo Conjunto de uno o más caracteres adyacentes que constan de una unidad de datos en un suceso o un elemento de datos. campo de clave Campo que identifica de forma exclusiva un elemento de datos en un tipo de datos. Common Object Request Broker Architecture (CORBA) Arquitectura y especificación para el cálculo orientado a objetos distribuidos que separa programas de cliente y servidor con una definición de interfaz formal. concatenación de series En REXX, operación que une dos caracteres o series en el orden especificado, formando una serie cuya longitud es igual a la suma de las longitudes de los datos caracteres o las dos series. CORBA Véase Common Object Request Broker Architecture. D DSA Véase adaptador de origen de datos. DSA de bases de datos SQL Adaptador de origen de datos que recupera información de bases de datos relacionales y otros orígenes de datos que proporcionan una interfaz pública mediante JDBC (Java Database Connectivity). Los DSA de base de datos de SQL también añaden, modifican y suprimen información almacenada en estos orígenes de datos. DSA de JMS Véase adaptador de origen de datos de JMS. DSA de LDAP Véase adaptador de origen de datos de LDAP. DSA de mediador Tipo de adaptador de origen de datos que permite acceder a los datos proporcionados por sistemas, dispositivos y aplicaciones de otras empresas. DSA de servicios web Adaptador de origen de datos que intercambia información con aplicaciones externas que proporcionan una interfaz de programación de aplicaciones (API) de servicios web. DSA de SNMP Véase adaptador de origen de datos de SNMP. DSA de socket Adaptador de origen de datos que permite intercambiar información con aplicaciones externas utilizando un servidor de sockets como agente de intermediario. E elemento de datos Unidad de información que se debe procesar. 316 Netcool/Impact: Guía de soluciones enlace Elemento de un modelo de datos que define una relación entre los tipos de datos y los elementos de datos. Véase también enlace dinámico, enlace estático. enlace dinámico Elemento de un modelo de datos que representa una relación dinámica entre elementos de datos en tipos de datos. Véase también enlace. enlace estático Elemento de un modelo de datos que define una relación estática entre elementos de datos en tipos de datos internos. Véase también enlace. escucha de sucesos de base de datos Servicio que escucha mensajes de entrada de un origen de datos de base de datos de SQL y, a continuación, desencadena políticas basándose en los datos de mensaje de entrada. escucha de sucesos de precisión Servicio que escucha en la aplicación los mensajes de entrada y desencadena políticas basándose en los datos de mensaje. escucha de sucesos genéricos Servicio que escucha en un origen de datos externo los sucesos de entrada y desencadena políticas basándose en los datos de suceso. estructura de control Bloque de sentencias en la política que se ejecuta cuando se satisfacen los términos de la condición de control. excepción Condición o suceso que un proceso normal no puede manejar. expresión de claves Expresión que especifica el valor que uno o más campos de clave de un elemento de datos deben tener para recuperarlo en la IPL. F filtro Dispositivo o programa que separa datos, señales o material de acuerdo con criterios especificados. Véase también filtro LDAP, filtro SQL. filtro LDAP Expresión que se utiliza para seleccionar elementos de datos ubicados en un punto en un árbol de directorio de LDAP. Véase también filtro. filtro SQL Expresión que se utiliza para seleccionar filas en una tabla de base de datos. La sintaxis del filtro es similar al contenido de la cláusula WHERE de SQL. Véase también filtro. función Cualquier instrucción o conjunto de instrucciones relacionadas que realiza una operación específica. Véase también función definida por el usuario. función definida por el usuario Función personalizada que se puede utilizar para organizar código en una política. Véase también función. Glosario 317 G gestor de ejecución de mandatos Servicio que gestiona la ejecución de mandatos remota mediante una función en las políticas. gestor de línea de mandatos Servicio que gestiona la interfaz de línea de mandatos. gestor de seguridad Componente que es responsable de autenticar inicios de sesión de usuario. GUI Véase interfaz gráfica de usuario. I interfaz gráfica de usuario (GUI) Interfaz de sistema que presenta una metáfora visual de una escena del mundo real, normalmente un escritorio, combinando gráficos de alta resolución, dispositivos de puntero, barras de menú y otros menús, ventanas de solapamiento, iconos y la relación de objeto-acción. Véase también servidor de interfaz gráfica de usuario. IPL Véase lenguaje de políticas de Netcool/Impact. J Java Database Connectivity (JDBC) Estándar de la industria para la conectividad independiente de base de datos entre la plataforma Java y un amplio rango de bases de datos. La interfaz JDBC proporciona una interfaz a nivel de llamada para el acceso de base de datos basado en SQL y basado en XQuery. Java Message Service (JMS) Interfaz de programación de aplicaciones que proporciona funciones de lenguaje Java para el manejo de mensajes. JDBC Véase Java Database Connectivity. JMS Véase Java Message Service. L LDAP Véase Lightweight Directory Access Protocol. lector de correo electrónico Servicio que sondea un servidor de correo POP (Post Office Protocol Protocolo de correo) a intervalos para el correo electrónico de entrada y, a continuación, desencadena políticas basándose en los datos de correo electrónico de entrada. lector de mensajería instantánea Servicio que escucha en los servidores de mensajería instantánea externos los mensajes y desencadena políticas basándose en los datos de mensaje de entrada. lector de sucesos Servicio que supervisa un origen de suceso para sucesos nuevos, 318 Netcool/Impact: Guía de soluciones actualizados y suprimidos y desencadena políticas basándose en los datos de suceso. Véase también lector de sucesos de base de datos, lector de sucesos estándar. lector de sucesos de base de datos Lector de sucesos que supervisa un origen de sucesos de base de datos de SQL para sucesos nuevos y modificados y desencadena políticas basándose en la información de sucesos. Véase también lector de sucesos. lector de sucesos estándar Servicio que supervisa en una base de datos los servicios nuevos, actualizados y suprimidos y desencadena políticas basándose en los datos de suceso. Véase también lector de sucesos. lenguaje de políticas de Netcool/Impact (IPL) Lenguaje de programación utilizado para escribir políticas. Lightweight Directory Access Protocol (LDAP) Protocolo abierto que utiliza TCP/IP para proporcionar acceso a directorios que soportan un modelo X.500 y que no incurre en los requisitos de recursos del protocolo DAP (Directory Access Protocol) X.500 más complejo. Por ejemplo, se puede utilizar LDAP para localizar personas, organizaciones y otros recursos en un directorio de Internet o intranet. Véase también adaptador de origen de datos de LDAP. M modelo de datos Representación abstracta de los datos empresariales y metadatos utilizados en una instalación. Un modelo de datos contiene orígenes de datos, tipos de datos, enlaces y orígenes de sucesos. motor de política Característica que automatiza las tareas que el usuario especifica en el lenguaje de scripts de política. O operador Función incorporada que asigna un valor a una variable, realiza una operación en un valor o especifica cómo se deben comparar dos valores en una política. Véase también operador de asignación, operador booleano, operador de comparación, operador matemático, operador de series. operador booleano Función incorporada que especifica una operación lógica de AND, OR o NOT cuando se evalúan conjuntos de operaciones. Los operadores booleanos son &&, || y !. Véase también operador. operador de asignación Operador que establece o restablece un valor en una variable. Véase también operador. operador de comparación Función incorporada que se utiliza para comparar dos valores. Los operadores de comparación son ==, !=, <, >, <= y >=. Véase también operador. Glosario 319 operador de series Función incorporada que realiza una operación en dos series. Véase también operador. operador matemático Función incorporada que realiza una operación matemática en dos valores. Los operadores matemáticos son +, -, *, / y %. Véase también operador. origen de datos Repositorio de datos al que un servidor federado se puede conectar y, a continuación, recuperar datos utilizando derivadores. Un origen de datos puede contener bases de datos relacionales, archivos XML, hojas de cálculo de Excel, archivos estructuras en tablas u otros objetos. En un sistema federado, los orígenes de datos parecen ser una sola base de datos colectiva. origen de sucesos Origen de datos que almacena y gestiona sucesos. P política Conjunto de reglas y acciones que es necesario realizar cuando se producen determinados sucesos o condiciones de estado en un entorno. POP Véase Post Office Protocol (Protocolo de correo). Post Office Protocol (POP) (Protocolo de correo) Protocolo que se utiliza para intercambiar correo de red y acceder a los buzones. procesador de sucesos Servicio responsable de gestionar sucesos mediante los servicios de lector de sucesos, escucha de sucesos y lector de correo electrónico. El procesador de sucesos gestiona la cola de sucesos entrantes y es responsable de enviar los sucesos en cola al motor de políticas para su proceso. R registrador de política Servicio que graba mensajes en el registro de política. remitente de correo electrónico Servicio que envía correo electrónico mediante un servidor de correo SMTP (Simple Mail Transfer Protocol - Protocolo simple de transferencia de correo). S servicio Subcomponente ejecutable que el usuario controla desde dentro de la interfaz gráfica de usuario (GUI). servicio de autosupervisión Servicio que supervisa la memoria y otras condiciones de estado e informa sobre ellas como sucesos. servicio de mensajería instantánea Servicio que envía mensajes instantáneos a clientes de mensajería instantánea mediante un servidor Jabber. 320 Netcool/Impact: Guía de soluciones servidor Componente responsable de mantener el modelo de datos, gestionar servicios y ejecutar políticas. servidor de bases de datos Programa de software que utiliza un gestor de bases de datos para proporcionar servicios de base de datos a otros programas de software o sistemas. Véase también base de datos. servidor de interfaz gráfica de usuario (servidor GUI) Componente que sirve la interfaz gráfica de usuario basada en web a los navegadores web mediante HTTP. Véase también interfaz gráfica de usuario. servidor GUI Véase servidor de interfaz gráfica de usuario. Simple Mail Transfer Protocol (SMTP) (Protocolo simple de transferencia de correo) Protocolo de aplicación de Internet para transferir correo entre los usuarios de Internet. Simple Network Management Protocol (SNMP) (Protocolo simple de gestión de red) Conjunto de protocolos para supervisar sistemas y dispositivos en redes complejas. La información sobre los dispositivos gestionados se define y almacena en una MIB (Management Information Base). Véase también adaptador de origen de datos de SNMP. SMTP Véase Simple Mail Transfer Protocol (Protocolo simple de transferencia de correo). SNMP Véase Simple Network Management Protocol (Protocolo simple de gestión de red). suceso Aparición de importancia para una tarea o un sistema. Los sucesos pueden incluir la terminación o la anomalía de una operación, una acción de usuario o el cambio en el estado de un proceso. T tipo de datos Elemento de un modelo de datos que representa un conjunto de datos almacenados en un origen de datos, por ejemplo una tabla o vista en una base de datos relacional. V variable Representación de un valor cambiable. Glosario 321 322 Netcool/Impact: Guía de soluciones Índice A accesibilidad viii, 313 activador de políticas en hibernación Configuración 81 activadores de políticas Configuración 78 activar 123 actualización de datos 116 Aislamiento y correlación de sucesos 305, 306, 308, 309 almacenamiento en memoria caché almacenamiento en memoria caché de consultas 36 almacenamiento en memoria caché de datos 35 almacenamiento en memoria caché de recuentos 36 almacenamiento en memoria caché de consultas 30 almacenamiento en memoria caché de datos 30 almacenamiento en memoria caché de tipos de datos 30 ámbito de política 83 arreglos obtener ix C campo de tipo de datos descripción 19 formato 18 ID 17 nombre de campo 17 nombre de visualización 18 campos de sucesos acceso 100 actualización 101 variables 99 claves 111 expresiones de varias claves 112 CommandResponse 134 complementos Maintenance Window Management 299, 300, 301, 303 componentes de una solución 1 configuración 153 configurar orígenes de datos 308 configurar tipos de datos 308 consulta de sucesos lectura de archivo de estado 46 contenedor de sucesos 99 contexto 88 contexto de política 83 convenios tipo de letra xii convenios de tipo de letra xii Creación de un servicio 157 Crear, editar y suprimir una regla de suceso 309 © Copyright IBM Corp. 2006, 2014 crear una política 154 Crear una regla de suceso 309 D DataItem (variable incorporada) 105 DataItems (variable incorporada) 105 datos actualización 116, 117 adición 115 recuperación por clave 111 recuperación por enlace 113 recuperación por filtro 105 supresión 117, 118, 119 desencadenantes de OMNIbus 77 Desinstalación de los widgets de paneles de instrumentos de autoservicio 210 determinación y resolución de problemas xi discapacidad 313 E editor de tipos de datos externos LDAP separador Información de LDAP 33 elementos de datos 6, 105 variables de campos 105 enlaces 6, 37 categorías 37 configuración 39 dinámicos 38 estáticos 37 visión general 37, 113 enlaces dinámicos 38 configuración 39 enlace por clave 38 enlace por filtro 38 enlace por política 39 enlaces estáticos 37 enriquecimiento de sucesos 2 escucha de sucesos de base de datos configuración del servidor de bases de datos 53 creación de desencadenantes 59, 60, 61, 62, 63 creación de especificación de llamada 58 desencadenantes de ejemplo 64, 65, 66, 67, 68, 69, 70, 71 edición de archivo de propiedades de escucha 55 edición del archivo nameserver.props 54 envío de sucesos de base de datos 58 escritura de políticas 71, 72, 73 instalación de archivos de cliente en Oracle 56 otorgar permisos de base de datos 56 escucha de sucesos de omnibus desencadenantes 74 escucha de sucesos de omnibus (continuación) utilización de ReturnEvent 76 Estado 186 EventContainer (variable incorporada) 99 exportación e importación de ForImpactMigration 154 expresiones de clave 111 expresiones de varias claves 112 F filtros 106 filtros de mediador 109 filtros LDAP 107 filtros SQL 106 filtros de mediador 109 filtros LDAP 107 filtros SQL 106 formación Véase también formación técnica de Tivoli técnica de Tivoli ix formación técnica de Tivoli ix Formas de recursos OSLC para tipos de datos 229 Función RDFRegister 243, 279 funciones definidas por el usuario 92 funciones de base de datos llamar 119 funciones definidas por el usuario 92 G glosario 315 H hibernaciones 121 activación 123 eliminación 124 recuperación 122 I Instalación de widgets de paneles de instrumentos de autoservicio 209 instalar el kit de herramientas de la biblioteca de descubrimiento 306 instalar la base de datos DB2 306 Integración de datos de una política con el widget de topología 184 introducción a OSLC 223 IPL Véase lenguaje de políticas de Impact 323 J Jabber 127 JavaScript y el Proveedor de datos de IU 220 JMS origen de datos 12 L Lanzar la página de análisis de Aislamiento y correlación de sucesos 311 lector de sucesos acciones 52 bloqueo de sucesos 52 coincidencia de sucesos 52 correlación 52 orden de sucesos 53 lector de sucesos de omnibus colocación en cola de sucesos 46 consulta de sucesos 46 lectores de sucesos arquitectura 45 Configuración 46 proceso 45 lenguaje de políticas de Impact 83 libros ver publicaciones vii, viii M manuales ver publicaciones vii, viii matrices 139 búsqueda de la longitud 139 búsqueda de valores distintivos matriz 85 Mediador DSA orígenes de datos 12 tipos de datos 34 mensajería instantánea 127 modelo de datos 1 componentes 5 creación 3 modelo de servicio empresa 8 modelo de servicio empresarial elementos 8 Modelo de web hosting 9 elementos 10 modelos de datos arquitectura 7 configurar 6 ejemplos 7 modelos de datos grandes 215 MWM Véase Maintenance Window Management registrador de políticas Configuración 79 registro de política 83 impresión en 84 repositorio de datos interno O S OMNIbusEventListener 76 origen de datos información de conexión 13 Origen de sucesos del ObjectServer configuración 42 orígenes de datos arquitectura 13 base de datos SQL 11 categorías 11 configuración 13 creación 14 JMS 12 LDAP 12 Mediador DSA 12 visión general 5, 11 orígenes de datos LDAP creación 12 orígenes de sucesos 40 arquitectura 42 ObjectServer 41 que no son del ObjectServer 41 OSLC 223 OSLC y tipos de datos 226 Seguridad de OSLC 266 sentencias If 89 sentencias While 90 separador Campos personalizados editor de tipos de datos internos 21 separador Descripción de tabla editor de tipos de datos externos SQL 24 separador Valores de memoria caché editor de tipos de datos externos 30 series 135 búsqueda de la longitud 135 cifrado y descifrado 138 concatenación 135 división en subseries 136 eliminación de espacios en blanco iniciales y finales 138 eliminación de una subserie 137 extracción de una subserie 136 modificación de las mayúsculas/minúsculas 138 sustitución de una subserie 137 servicio activador de políticas 78 activador de políticas en hibernación 81 escucha de sucesos de base de datos 53, 57 escucha de sucesos de omnibus 74 escucha de sucesos de OMNIbus 73, 74 gestor de ejecución de mandatos 81, 82 gestor de línea de mandatos 82 Lector de sucesos de OMNIbus 44, 47, 48 registrador de políticas 78, 79 servicios configuración 3 definidas por el usuario 44 predefinidos 43 trabajar con 1, 43 visión general 43 servidor JRExec configuración 132 detener 132 ejecutar mandatos 133 iniciar 131 registro cronológico 133 visión general 131 solución ejecución 4 soluciones configuración 3 tipos 2 soporte al cliente x Soporte para modelos de datos grandes 214 P 139 N nombres de directorio notación xiii nombres de vía de acceso notación xiii 324 notación nombres de vía de acceso xiii tipo de letra xiii variables de entorno xiii notificación de sucesos 2 Netcool/Impact: Guía de soluciones pasarela de sucesos 3 PassToTBSM 153, 154, 157 planificación de políticas 94 activador de políticas 94 planificaciones 94, 95, 96, 97 policylogger 80 política 1 idioma 83 recuperación de datos por clave 112, 113 recuperación de datos por enlace 113, 114 recuperación de datos por filtro 109, 110, 111 políticas creación 4 hibernación 121 políticas de Aislamiento y correlación de sucesos 307 porcentaje 186 proyectos 154 publicaciones vii acceso en línea viii realizar pedido viii publicaciones en línea acceso viii R RDFUnRegister, función 246, 282 realizar pedido de publicaciones viii Recursos e identificadores OSLC 225 12 soporte técnico de software cómo ponerse en contacto x recepción semanal de actualizaciones ix visión general ix sucesos 99 adición de entradas de diario a envío de nuevos 102 supresión 103 U utilización de Spid 77 V 101 T tipo de datos LDAP 15, 32 llenado automático 30 obtención del nombre de elemento estructural 19 ordenación de los elementos de datos 31 SQL 15 tipos de datos 6, 28 almacenamiento en memoria caché 35 campos 17 categorías 15 claves 19 configuración 19 configuración de SQL 23 configurar internos 20 configurar LDAP 33 configurar tipos de datos SQL separador Descripción de tabla 24 editor de tipos de datos internos 21 externos 14 filtro de elemento de datos 31 internos 14, 15 internos definidos por el usuario 17 internos predefinidos 16 mediador 15 Mediador DSA 34 predefinidos 14 sistema 16 SQL 22 visión general 14 Tipos de datos de Netcool/Impact como recursos OSLC 226 tipos de datos externos configuración de SQL 23 editor 24, 28 LDAP 33 Mediador DSA 34 tipos de datos externos LDAP 33 tipos de datos internos configurar 20 editor separador Campos personalizados 21 tipos de datos SQL adición de un campo a la tabla 28 configuración 23, 24 tipos de datos Sybase establecimiento de la opción Excluir este campo 28 Tivoli Information Center viii trabajar con modelos de datos 5 variables campo de suceso 99 definidas por el usuario 84 estado de suceso 100 notación para xiii variables de contenedor de sucesos definidas por el usuario 100 variables de entorno notación xiii variables de estado de suceso 100 visión general 305 Visión general 153 vista de operador EIC_Analyze 312 Vistas de operador de Aislamiento y correlación de sucesos 307 Visualizar resultados de Aislamiento y correlación de sucesos 311, 312 W WebGUI 311 widget Botón 212 widgets de panel de instrumentos de autoservicio 209 X x sucesos en y tiempo 2 Índice 325 326 Netcool/Impact: Guía de soluciones Impreso en España SC43-0010-00