MANUAL DE LIVE MONITOR Índice de Contenido Introducción .................................................................................................................................................... 4 Objetivo de la herramienta............................................................................................................................................... 4 Que se puede medir? ......................................................................................................................................................... 4 Indicadores SNMP........................................................................................................................................................ 5 Indicadores de base de datos....................................................................................................................................... 6 Indicadores scriptables ................................................................................................................................................. 6 Usuarios............................................................................................................................................................................... 7 Configuración .................................................................................................................................................. 9 Indicadores ......................................................................................................................................................................... 9 Indicador SNMP....................................................................................................................................................... 9 Indicador SNMP a partir de tabla ........................................................................................................................10 Indicador de base de datos....................................................................................................................................12 Indicador de script .................................................................................................................................................12 Atributos ...........................................................................................................................................................................13 Alarmas .........................................................................................................................................................................14 Alarmas de muestreo .............................................................................................................................................14 Alarmas de eventos ................................................................................................................................................15 Acciones ante alarmas ................................................................................................................................................15 Acciones ...................................................................................................................................................................16 Visualizacion y análisis .................................................................................................................................. 19 Gráficas .............................................................................................................................................................................19 Agregar una nueva grafica al panel ...........................................................................................................................19 Cortar dos atributos monitoreables dentro de una misma grafica ......................................................................20 Controles de las Gráficas ...........................................................................................................................................21 Escritorios ....................................................................................................................................................................23 Avisos de Alarma .............................................................................................................................................................23 Panel Principal .............................................................................................................................................................23 Gráfica con Alarma.....................................................................................................................................................24 Integración con Supervisor........................................................................................................................................25 Apendice A - Indicadores Predefinidos ......................................................................................................... 26 Monitoreo de la actividad del negocio .....................................................................................................................26 Performance ............................................................................................................................................................26 Monitoreo de la Infraestructura ................................................................................................................................27 De Uso Común.......................................................................................................................................................27 Generales .................................................................................................................................................................27 Licencias ...................................................................................................................................................................28 Administrador de Usuarios ...................................................................................................................................28 Motor de Marcación (MM) ...................................................................................................................................29 Web Handler ...........................................................................................................................................................30 Asterisk.....................................................................................................................................................................32 Apendice B - Ejemplos de indicadores custom ............................................................................................. 34 Apendice C - Como agregar un nuevo MIB a los disponibles del sistema .................................................... 36 Apendice H - Configuración de ventanas historicas de atributos ................................................................. 37 INTRODUCCIÓN Este documento describe de forma detallada el objetivo, conceptos y funcionalidades disponibles en la aplicación "Live Monitor". Objetivo de la herramienta La aplicación Live Monitor se puede usar con dos propósitos diferentes, uno es proveer un mecanismo de monitoreo preventivo de la operación. De forma que los administradores y supervisores puedan detectar y corregir fallas o condiciones de riesgo antes que se tornen críticas. Ejemplos de esto sería poder monitorear los dispositivos de almacenamiento y recibir un aviso cuando lleguen a un cierto punto de saturación o ser advertidos que cierto troncal telefónico está fallando. El segundo propósito tiene que ver con ser capaz de tomar decisiones en tiempo real a partir de datos altamente dinámicos originados en la operación, donde tener capacidad de respuesta en base a información sólida y al instante permite optimizar al máximo los recursos que se disponen - por ejemplo asignando mayor cantidad de operadores a una campaña de ventas de seguros si la operación durante la tarde está teniendo un ratio de ventas con tendencia positiva. Esto se logra mediante un mecanismo flexible de configuración y respuesta que permite: Efectuar mediciones predefinidas y customizadas o Sobre elementos de hardware e infraestructura o Sobre indicadores del negocio Definir alarmas o En base a resultados de alguna medición o En base a eventos Ejecutar acciones automáticas Visualización gráfica de los distintos indicadores del sistema para una mayor comprensión de la operación Que se puede medir? InConcert provee mecanismos de medición predefinidos para distintos orígenes de información, pudiendo extender el conjunto de mediciones disponibles mediante el uso de scripts. Clasificando las fuentes podemos decir que la información que utilizará el Live Monitor puede provenir de: Información SNMP publicada por los dispositivos del sistema. (Ej. memoria libre en un host, uso de CPU, etc.) Tablas de información mantenida en memoria por servicios de inConcert. (Ej. "total de llamadas en ACD", "errores de ejecución de SP" ) Información contenida en las bases de datos del sistema. (Ej. "estatus de los agentes", "cantidad de ventas realizadas") Cualquier valor numérico generado a partir de la ejecución de consultas o scripts. (Ej. "tamaño de un archivo en un Host", "Cantidad de conexiones entre la PBX y el Servidor de inConcert") Uno de los mayores beneficios de tener disponible una herramienta de estas características es la posibilidad de visualizar en el tiempo la evolución y tendencia de algún valor que nos interese, por lo que es importante recalcar que se asume que sin importar el tipo de indicador utilizado el valor a medir será en la mayoría de los casos un valor numérico (*) Los motivos principales de que los valores sean numéricos son: Flexibilidad en la definición de alarmas o Prender alarma si la cantidad de llamadas encoladas subió un 40% respecto la última hora. o Prender alarma si el espacio en disco es < al 10% Visualización histórica de la evolución del valor en el tiempo La herramienta Live Monitor permite medir distintos "tipos" de indicadores según el origen de la información a medir. (*) Nota: Si bien la herramienta permite potencialmente medir valores que no sean necesariamente numéricos no es donde está el potencial de análisis de la misma. Indicadores SNMP El protocolo SNMP (Simple Network Management Protocol) facilita la comunicación entre dispositivos de red permitiendo a los administradores supervisar el funcionamiento de la red, buscar y resolver sus problemas, y planear su crecimiento. Dicho protocolo es adoptado como estándar por la mayoría de los fabricantes de dispositivos, switches, routers o fabricantes de sistemas operativos, por lo que podemos esperar que dentro de una red la mayoría de los dispositivos sean supervisables utilizando el protocolo SNMP. Cada dispositivo publica qué tiene supervisable utilizando SNMP, mediante un MIB (Management Information Base)(*), que es una colección de información organizada jerárquicamente. Por lo tanto un switch publicará por ejemplo dentro de la jerarquía de su MIB un valor monitoreable "ancho de banda", y un servidor podrá publicar en su MIB un valor monitoreable "espacio libre en disco". De la misma forma ocurre con los servicios de inConcert los cuales también poseen un MIB donde publican los valores que tienen disponibles tales como "agentes ocupados", "cantidad de llamadas en ACD", etc. A continuación vemos una sección de un MIB del servicio OutboundEngine de inConcert, donde se aprecia que dentro de los valores publicados para consultar se encuentran: "Cantidad de llamadas activas", "Cantidad de conexiones al middleware", etc. -------------- Extracto de OUTBOUNDENGINE/MIB --------------------------outboundengineConnectedCalls OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of calls that the Outbound Engine connected and are in course. This includes all calls connected through the loaded processes' routing groups." ::= { outboundengine 2 } outboundengineAwaitingAgent OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of predictive/progressive calls awaiting for agent." ::= { outboundengine 4 } outboundengineExecutingOnMW OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of middleware processes currently running for the engine." ::= { outboundengine 5 } ----------------------------------------------------------------------------------------------* Nota: Los MIB se encuentran especificados en el formato ASN.1. Y a continuación se visualiza una imagen dentro del Live Monitor donde se puede apreciar la jerarquía Indicadores de base de datos Los indicadores de base de datos nos permiten extraer valores de la lógica de negocios, pudiendo integrar el mecanismo de monitoreo preventivo a cualquier aplicación o lógica de negocio que tenga una empresa. En los indicadores de base de datos se podrá especificar un store procedure o sentencia a ejecutar. Dicha sentencia se asume que puede ir contra cualquier origen de datos y realizar la medición que considere pertinente, siempre que respete el criterio de proyectar un valor numérico para la evaluación. Para visualizar la utilidad con un ejemplo, supongamos un call center que se dedica a la venta de seguros de vida, donde tiene una base de datos con una tabla con la siguiente estructura: VentasSeguros IdCliente FechaVenta TipoSeguro MontoTotal Y quiere monitorear la evolución de las ventas durante el día, de forma de recibir un aviso en caso que las ventas de la última hora no superen los 5000 dólares. Podrá definirse un indicador de base de datos, utilizando una sentencia de la forma: SELECT SUM(MontoTotal) TotalVentasHora FROM [VentasSeguros] WHERE datediff(hour, FechaVenta, getdate()) < 1 Indicadores scriptables Los indicadores scriptables como su nombre lo indica, son indicadores que se miden a partir de la ejecución de un script, entendiéndose por script un trozo de código que al ejecutarse retorne un valor numérico como resultado. Se aplican en situaciones donde el elemento que queremos supervisar no provee información mediante SNMP, o no es un elemento de base de datos. Para esos casos, programando un script (*) podemos monitorear prácticamente cualquier cosa. Dentro de la solución inConcert algunos de las entidades que se podrían medir de esta forma son: Numero de errores en el log de asterisk Revisar el tamaño de los archivos de log de inConcert Validar la cantidad de archivos en una carpeta donde se reciben faxes Consultar un web-service que reporta el estado de un sistema de backoffice en una empresa (*) Nota: El lenguaje de programación que se debe utilizar para el desarrollo de scripts es LUA. (http://www.LUA.org) Usuarios Existen dos perfiles de usuarios claramente definidos interesados en utilizar la solución: Encargado de soporte IT o Interés en monitoreo de infraestructura y disponibilidad de la solución Supervisores de campaña o Foco en el negocio, indicadores de performance y productividad. Dentro de los indicadores predefinidos (Ver Apéndice A) que dispone la solución, se encuentran ya disponibles valores de interés para ambos roles. A su vez el rol supervisor, como veremos más adelante,tiene la posibilidad de integrar valores monitoreados desde Live Monitor directamente en su consola de supervisión. Para ingresar al Live Monitor, luego de registrarse se debe abrir la solapa correspondiente de su panel principal que en caso de ser la primera vez mostrará la siguiente pantalla del escritorio: Como se aprecia está vacía ya que aún no se ha configurado ni asociado ningún atributo monitoreable. Cuando se lo haga, aparecerán aquí las gráficas de los mismos. Presionando en el botón “Configuración” se abrirá la consola de la aplicación (*): (*) Nota: presionando en la opción “Home” del menú se volverá al “escritorio” CONFIGURACIÓN En esta sección se encuentra la referencia detallada de como configurar cada uno de los elementos que componen la solución de monitoreo. Indicadores Un indicador no define una medición en sí misma, sino que define una forma de medir algo. Por lo tanto cuando queramos monitorear algún elemento lo primero que tenemos que hacer es definir un indicador para el mismo en caso que no esté ya definido (Ver Apéndice A). Algunos ejemplos de indicadores son: Espacio en disco Uso de CPU Llamadas encoladas Ratio de abandono del discador Cada uno de estos indicadores define un concepto y una forma de medirlo, no una medición explicita. El espacio en disco es un indicador que de hecho puede medirse en 20 equipos, el proceso de definir contra que hosts de la infraestructura quiero realizar cuales mediciones, se verá en la sección de definición de atributos. En el caso de los indicadores nos vamos a concentrar en el detalle de definir como se debe medir. En todos casos para crear un nuevo indicador se puede realizar desde la vista correspondiente Indicador SNMP Para configurar un indicador SNMP debemos especificar la siguiente información: Un nombre y descripción para el indicador El MIB a partir del cual queremos tomar el valor El OID (*) del elemento que queremos monitorear dentro de ese MIB En la siguiente pantalla se muestra la configuración de un indicador SNMP que permite consultar contra una asterisk la cantidad de llamadas que están siendo grabadas. Indicador SNMP a partir de tabla En muchos casos la información que publica un servicio de SNMP no es un valor único consultable, como lo es el número de threads o consumo de CPU, sino que es una lista de valores. Esta lista de valores tiene el nombre de Tabla SNMP. Usualmente los servicios monitoreables publican Tablas SNMP cuando tienen más de un elemento de un mismo tipo al cual consultar, por ejemplo, una central telefónica tendrá una lista de llamadas, y el servicio de ACD tendrá una lista de las llamadas en espera que tiene para cada una de sus campañas. La aplicación Live Monitor nos permite consultar Tablas SNMP, con la restricción que tenemos que especificar qué elemento de la tabla queremos consultar. Siguiendo con el ejemplo del servicio de ACD (Ver Apéndice A Indicadores Predefinidos) , dicho servicio publica una tabla que contiene los valores: Nombre de la campaña, Llamadas en espera, Histórico de llamadas. Campaña Llamadas en espera Histórico SOPORTE@DIRECTV 10 789 VENTAS@DIRECTV 4 41 Personal@DIRECTV 2 23 Dicha estructura surge a partir de la definición de la tabla que podemos encontrar en el MIB del servicio: ActorserviceAcdCallsEntry ::= SEQUENCE { actorserviceAcdCallsCampaign DisplayString, actorserviceAcdCallsCount Unsigned32, actorserviceAcdLastCallsHistory Unsigned32 } Al momento de definir un indicador SNMP contra un atributo del tipo Tabla SNMP, debemos especificar los siguientes datos: IndexOID, con qué campo deseo filtrar al elemento de la tabla a consultar. IndexTemplate, valor para filtrar el campo anterior. FieldOID, valor a ser proyectado en la medición. Por lo tanto, si quisiéramos consultar la cantidad de llamadas en espera de la campaña SOPORTE, tenemos que realizar la siguiente definición: IndexOID => actorserviceAcdCallsCampaign, ya que quiero filtrar la tabla por campaña. IndexTemplate => "SOPORTE@DIRECTV", el valor a usar para filtrar. FieldOID => actorserviceAcdCallsCount, el valor a medir. Viéndolo en la pantalla de configuración: Observar que en el campo IndexTemplate del form se especifica de manera explícita el ID de la campaña y del VCC. Si se deseara reutilizar este indicador para monitorear el mismo valor pero en otra campaña se debería modificar el string del campo "IndexTemplate" usando caracteres comodines de la forma "%1@%VCC". Así se reemplazaran variables "%1" y "VCC" según la configuración del atributo monitoreable que use el Indicador. De esta manera el ejemplo quedaría así: Donde %VCC se reemplazara automáticamente por el VCC en el que se defina el Atributo Monitoreable que use este Indicador y %1 se reemplazará por el valor ingresado en el campo parámetro de dicho Atributo Monitoreable. Indicador de base de datos Para configurar un indicador de base de datos debemos especificar la siguiente información: Un nombre y descripción para el indicador Un origen de datos ODBC (*) a utilizar para ejecutar la consulta Usuario y clave que tenga permiso para utilizar el origen de datos Sentencia a ejecutar Campo proyectado en el resultado de la sentencia que se desee utilizar como dato de la medición En la siguiente pantalla se muestra un ejemplo donde se configura un indicador utilizando el datasource 'DATASOURCE' que ejecuta la sentencia {Call GetVentasHora()} asumiendo que existe un store procedure con ese nombre que proyecta un campo TotalVentasHora con el valor que interesa monitorear. Indicador de script Para configurar un indicador del tipo script debemos especificar: Un nombre y descripción para el mismo El código del script LUA que deseamos ejecutar. En la siguiente pantalla se muestra un ejemplo donde se configuró un indicador llamado "PING", el cual ejecuta un script que devuelve el resultado de un PING al host que se reciba por parámetro. Nota: El PING es un indicador disponible predefinido en cada instalación de inConcert. Por más información sobre indicadores predefinidos ver APENDICE A. Atributos Un Atributo Monitoreable (de acá en más, Atributo a secas) define una medición que se va a realizar contra un host real. Hasta ahora la definición de indicadores nos había permitido definir formas de medir elementos, sin especificar donde queríamos medirlos concretamente. Un Atributo es precisamente eso, una medición concreta que se va a realizar. Podemos suponer que el indicador es el metro del sastre y el atributo es la medición contra un sujeto concreto que precisa un traje. Por lo tanto a la hora de especificar un Atributo debemos definir el siguiente conjunto de valores: Una descripción que nos ayude luego a identificar la medición. Un indicador previamente definido que se utilizara en la medición Uno o más hosts, indicando contra que equipos se debe medir. En el caso que se especifique más de un host en el combo de los disponibles, esto dará origen a una medición por host para el intervalo configurado. Cada cuanto tiempo se desea realizar la medición Existe un intervalo alternativo a utilizar si el atributo no se puede medir. Por ejemplo si un servidor esta caído y no se puede medir el espacio en disco cada 1 minuto, se puede especificar un intervalo alternativo de 1 hora hasta que el host vuelva a la normalidad, junto con el intervalo de medición. Ventana histórica de mediciones que se quiere persistir (Ver APENDICE H por configuraciones de intervalo histórico ) Un conjunto de alarmas opcionales que se activarán al cumplirse la condición especificada sobre el Atributo (por más información ver abajo) Alarmas Las alarmas permiten al usuario especificar en qué condiciones quiere recibir un llamado de atención, tanto producto de un problema existente, como de una situación que si no es atendida puede derivar en un problema mayor. Existen dos tipos de alarmas configurables en inConcert Live Monitor: Alarmas de muestreo Alarmas de eventos o traps Alarmas de muestreo Las alarmas de muestreo se asocian a un Atributo Monitoreable, y se dispararán si se cumple una condición sobre la muestra de valores medidos, de ahí el nombre de alarma de muestreo. Un ejemplo de lo anterior seria, si se está midiendo el porcentaje de llamadas abandonadas cada 5 minutos, podríamos definir una alarma con la condición: "Porcentaje de llamadas abandonadas es mayor que 25 por más de 30 minutos". Y en el caso que se cumpla dicha condición, ejecutar un conjunto de acciones predefinidas, por ejemplo notificar a algún supervisor. Pulsando con el mouse en cualquiera de los términos de la condición aparecerá una serie de opciones por las cuales se podrá cambiar el valor actual. Alarmas de eventos Las alarmas de eventos se refieren a traps o notificaciones SNMP, por lo que no tienen un Atributo Monitoreable asociado. Como se mencionó en la sección de configuración de indicadores SNMP, cada dispositivo de la red que soporte el protocolo de monitoreo SNMP, publica la información que es monitoreable del mismo en un archivo MIB donde se describe y jerarquiza dicha información. Dentro de la información monitoreable del MIB, categorizada en distintos OID (object identifiers), se encuentra un tipo especial de objeto son los llamados eventos o TRAPS SNMP. Estos eventos no son valores que se puedan consultar del dispositivo, sino que son eventos que el dispositivo envía ante determinadas circunstancias. Dependiendo del tipo de dispositivo existen distintos eventos que tienen relevancia para ser enviados como traps. Por ejemplo una impresora de red inteligente, que lance el trap OutOfPaper cuando esta se queda sin papel mientras imprime, nos permitiría configurar una alarma de Trap que intercepte dicho evento, y le envie un mail al encargado de infraestructura para que le cargue más papel. En la imagen vemos la trap asteriskicConnectionFailed, que lanza la Asterisk de InConcert cuando detecta un fallo en la conexión contra el servidor de inConcert. Acciones ante alarmas Cualquiera sea el tipo de alarma, tenemos la opción de configurar acciones a ejecutar cuando se activa la alarma. Dichas acciones tienen que estar previamente ingresadas y podrán ser compartidas entre distintas alarmas. Se podrá especificar el máximo número de reintentos en caso de que falle la ejecución de la acción, y el intervalo de espera entre reintentos Por último, se podrá establecer una reconfiguración dinámica de las alarmas que se ejecutan. Es decir, son acciones que modifican la configuración de la propia alarma o de otra alarma diferente una vez que se ha ejecutado. Las alarmas de evento admiten las siguientes reconfiguraciones: Sleep - Duerme la alarma, indefinidamente o por un intervalo de tiempo especificado. La alarma no vuelve a ejecutar hasta despertase Wake Up - Levanta otra alarma que estuviera dormida. Si la alarma no estaba dormida cuando se ejecuta la reconfiguracion, entonces no tiene efecto Mientras que las alarmas de muestreo admiten además de las dos anteriores las siguientes: Sleep Until - Duerme la alarma hasta que se cumple la condición establecida New Condition - Establece una nueva condición de ejecución. Esta se restaura a la condición original una vez que deja de cumplirse Acciones Las acciones son lo que ejecuta el Live Monitor como reacción a la activación de una alarma. Existen 2 tipos de acciones: Mail - Envió de mail Script - Ejecución de script de LUA Mails Las acciones de mail, permiten enviar un mail a un destinatario, especificando un subject, un contenido, y opcionalmente archivos a adjuntar. Dado que la acción se ejecutara en el contexto de la alarma que se activó, es posible personalizar la acción de mail con "variables" dependientes de la alarma. Las variables que se pueden utilizar tanto en el subject, como en el asunto son: Host (ip de la máquina que hizo disparar la alarma (si es trap o query snmp) ó datasource si es ODBC) AttributeType (para cuando es alarma de muestreo, el tipo de atributo: "SNMP", "ODBC", "LUA") VCC (Virtual Call Center asociado) AlarmDate (fecha en la que se disparó la alarma) AlarmTime (hora y minutos en que se disparó la alarma) AlarmDescription (descripción de la alarma) AlertCondition (descripción del evaluador de muestras que hizo disparar la alarma) ActualCondition (descripción del evaluador de muestras que se utilizara a partir de ahora [puede ser el mismo que alerto la alarma]) LastValue (ultimo valor tomado) Index (aplicable a las alarmas samplers de tipo SNMPTable únicamente) Para indicar que se trata de una variable, se debe escribir entre paréntesis rectos "[" y "]" Ej: "Atención: el equipo [Host] activo la alarma [AlarmDescription] debido a que la muestra tomada cumple [AlertCondition]" Nota(*): Para poder adjuntar archivos contenidos en el host que activó la alarma, el mismo deberá tener instalado y ejecutandose el servicio RemoteExecutionServer cuyo setup está disponible a demanda. Se puede especificar un único o varios archivos (separados por comas), o varios patterns con comodines "*" y "?" Un ejemplo de configuración de mail: Notar que hay que configurar el servidor SMPT a utilizar, nombre de usuario y contraseña para que se pueda enviar el mail. Scripts Las acciones de script, permiten correr un script de LUA en un ambiente controlado, que evita que el mismo se ejecute indefinidamente y consuma toda la memoria del servicio. Dicho script al correr en el contexto de activación de una alarma, también puede acceder a variables dependientes de dicha alarma (como pasaba en el caso del mail) En este caso lo hace accediendo a los campos de la tabla global Action, cuyos miembros tienen el mismo significado que en el caso de las acciones de mail: Action.Host Action.AttributeType Action.VCC Action.AlarmDate Action.AlarmTime Action.AlarmDescription Action.AlertCondition Action.ActualCondition Action.LastValue Action.Index Además se cuenta con las siguientes funciones especiales: SNMPGet(oid, server) -- Obtiene un valor snmp escalar SNMPGetTable(oid, server) -- Obtiene una tabla snmp ODBCGet(statement, source, username, password) -- Obtiene un valor a través de una conexión ODBC ODBCGetCursor(statement, source, username, password) -- Obtiene un cursor para recorrer las rows de una consulta RemoteExecution(host, port, method, params) -- Ejecuta remotamente un metodo y devuelve el resultado o lanza un error si no es posible conectar El metodo RemoteExecution se utilizara cuando es necesario ejecutar una acción de manera remota (*). Incluso es posible ejecutar un script remotamente, por ejemplo, si se quiere un script que elimine archivos temporales del disco para liberar espacio. (*) Nota: Para esto también es necesario que el servicio RemoteExecutionServer este levantado en la maquina remota. Los metodos que soporta son: ShutdownSystem (force) -- Apaga el sistema, si force == true, fuerza a cerrar todas las aplicaciones RestartSystem (force) -- Reiniciar el sistema, si force == true, fuerza a cerrar todas las aplicaciones StartService (name) -- Inicia un servicio de windows o proceso de linux cuyo nombre sea el valor de name StopService (name) -- Detiene un servicio de windows o proceso de linux cuyo nombre sea el valor de name GetFile (path) -- Obtiene un string binario del archivo remoto cuya ruta sea el valor de path GetDirFilenames (pattern) -- Obtiene una lista de los archivos que cumplan con el pattern especificado ExecuteScript (script) -- Devuelve el resultado de la ejecucion del script remoto Un ejemplo de detención de un servicio: VISUALIZACION Y ANÁLISIS La aplicación de monitoreo cuenta con un mecanismo de visualización de los datos monitoreados, que permite asistir tanto en el diagnóstico de potenciales problemas como en la comprensión general de cómo funciona una instalación. Relaciones entre atributos no detectables a simple vista pueden resultar evidentes viéndolas reflejadas gráficamente. Si una imagen vale más que mil palabras, una gráfica vale más que mil planillas excel. Ya que teniendo los atributos relevantes graficados podemos detectar que el número de abandonos sube a la hora de día que el motor de marcación tiene mejor ratio de contactación o monitorear simultáneamente el uso de CPU y de memoria física de un servidor que está teniendo problemas de caídas. Gráficas Apenas entrar a la aplicación de Live Monitor, se nos presenta un panel principal donde podemos insertar graficas de distintos atributos que estén siendo monitoreados. Agregar una nueva grafica al panel Presionando el botón , se nos presenta el panel de agregado de nueva gráfica, en dicho panel debemos especificar los siguientes datos para graficar: Un nombre para la grafica Que atributo queremos graficar (el cual ya debe estar configurado). De que HOST queremos graficar la medición del atributo. Como vimos al momento de crear un atributo monitoreable, éste puede configurarse para medirse en más de un HOST dando lugar a distintas mediciones. Por lo que a la hora de visualizar la medición debemos decidir cuál de las mediciones queremos ver (en caso que se quieran ver todas se puede seleccionar todos los hosts). Para ejemplificar y que sea comprensible, si creamos un atributo monitoreable que se llama "Espacio en disco de servidor" que está midiendo el espacio libre en disco sobre 4 servidores disponibles, tenemos 4 potenciales graficas distintas, para la evolución en el tiempo del espacio en disco de cada uno de los servidores. A continuación se muestra una imagen de agregado de grafica seleccionando los valores antes comentados Cortar dos atributos monitoreables dentro de una misma grafica Hay determinadas situaciones en las que es útil poder visualizar dos atributos monitoreables juntos en el tiempo de forma de entender si una variación en uno de los atributos puede estar afectando el comportamiento de otro. Para esto la aplicación de Live Monitor permite superponer atributos secundarios agregando nuevas series sobre una gráfica existente. Lo hacemos presionando el botón de queremos agregar un nuevo valor: (Agregar nueva serie) en el panel derecho de la gráfica a la cual le Al presionarlo se despliega el panel de agregado de gráfica, destacando que estamos agregando la gráfica a la preseleccionada. En el caso del ejemplo vamos a comparar el consumo de memoria con el porcentaje de uso de CPU para analizar si ambos pueden estar relacionados. Al agregar la gráfica vemos como se visualizan ambos atributos dentro del mismo panel, y que los atributos en este caso no presentan relación aparente. Controles de las Gráficas Además del mencionado botón (Agregar nueva serie) disponemos de otros controles que nos permitirán modificar la forma en que se visualiza la misma. El control “Range” muestras. El botón “Show/Hide Config” El botón Y el botón permite cambiar el rango temporal en el que se visualizarán las sirve para mostrar u ocultar el panel lateral de cada gráfica. “Colapse/Expand Chart” modifica el tamaño de la ventana donde se muestra la gráfica. elimina la gráfica del escritorio. A la izquierda de cada una de las series de la gráfica se encuentra el botón “+” controles de la serie de que se trate: que despliega los marcando la casilla “Show Average” se visualizará en la gráfica una línea superpuesta que representa el promedio de las mediciones que se está mostrando. Mediante el botón “Change Serie Type” se intercala entre visualización en forma de barras o de líneas. Para agrandar momentáneamente un sector de una gráfica basta con “pintarla” con el mouse y soltar el botón. El sector marcado se mantendrá agrandado hasta que llegue la siguiente medición. Escritorios Si tuviéramos que monitorear un amplio conjunto de gráficas de diferente índole, digamos por ejemplo las referidas a infraestructura y las de performance de negocios o las de la campaña “Ventas” y las de la campaña “Atención al Cliente”, podemos separarlas en grupos diferentes y tener una vista para cada uno de ellos. Para hacerlo crearemos un “escritorio” para cada conjunto de gráficas mediante el botón “Create New Desk” Avisos de Alarma Como ya se indicó, podemos indicar acciones a efectuarse ante la activación de una alarma tales como el envío de un mail o cualquier otra acción como ejecutar un proceso. No obstante ello, Live Monitor nos indicará la activación mediante dos procedimientos que detallaremos. Panel Principal Cada vez que se dispare una alarma se nos indicará en panel principal del Live Monitor en la sección “Alarm Events” de su menú. Esto ocurrirá con todas las alarmas disparadas tengan o no asociada alguna acción. En la imagen inferior vemos que se nos está avisando que se han producido 13 eventos de alarma (*). Nota (*) (Puede que sean diferentes alarmas y también ocurrir que una misma alarma haya disparado más de una vez) Pulsando con el mouse en el sector de Eventos Pendientes se desplegará la vista con las alarmas disparadas. En este ejemplo se observa que los avisos son de la misma alarma. Inicialmente las alarmas generan eventos que quedan en estado de “UnRead” y “Pending”. El total de los eventos “UnRead” aparecerá al lado de la de eventos pendientes del menú de la consola. (Ver imagen anterior). Pulsando con el mouse una vez en un evento, éste pasa a estar “Read” pero permanecerá en estado de “Pending” Mediante los botones de edición o haciendo doble clic se puede cambiar el estado de un evento. Los posibles estados son “Hot” o “Fix” además del mencionado “Pending”. Si se considera que el evento es de una gravedad que requiera una atención urgente se lo puede cambiar a “HOT” para que sea visualizado en ese sector del menú. Cuando se haya solucionado la situación se le podrá cambiar el estado a “Fixed” con lo cual se lo moverá a ese sector. En todos los casos será obligatorio ingresar un comentario del motivo de cambio de estatus. Gráfica con Alarma Si se dispara una alarma asociada a un atributo que se está monitoreando se observará que la gráfica de dicho atributo se tornará de color rojo alternadamente para llamar la atención. En la imagen siguiente, vemos que la gráfica de uso de CPU está en esa situación (*). Nota (*) Esto no ocurrirá con las alarmas configuradas para apagarse una vez disparadas. Integración con Supervisor La aplicación Live Monitor está integrada de forma nativa con el Supervisor de inConcert, lo que permite que un supervisor comparta gráficos configurados en el Live Monitor, directamente desde la consola de administración. El mecanismo de integración es automático, y todas las gráficas que estén en el escritorio por defecto del supervisor, se verán disponibles para ser desplegadas en el panel de graficas de campaña del supervisor. En el siguiente ejemplo se puede apreciar un supervisor con dos graficas disponibles, "Consumo de CPU" y "Tiempo Activo" que están siendo tomadas de su escritorio por defecto de la aplicación Live Monitor. Nota: En caso que en el escritorio por defecto exista alguna gráfica con múltiples atributos, en el supervisor se desplegará solamente la serie principal y no las secundarias. APENDICE A - INDICADORES PREDEFINIDOS Con la instalación de inConcert Allegro queda disponibles un conjunto de indicadores pre configurados que intentan cubrir aspectos relevantes en cuanto a monitoreo de la actividad comercial y de la infraestructura de los centros de contacto. Si bien se presentan agrupados en categorías todos ellos pueden usarse en forma combinada. Monitoreo de la actividad del negocio Performance OID /Indicator Abandoned Calls Percent AbandonedCallsPercent Abandoned Inbound Calls Percent AbandonedInboundCallsPercent Abandoned Outbound Calls Percent AbandonedOutboundCallsPercent ACD Calls ACDCalls Service Level ServiceLevelPercent Average Awaiting Time AverageAwaitingTime Indicador Descripción Parámetros Porcentaje de Abandono Porcentaje de abandono de llamadas entrantes y salientes por campaña. (Últimos 15 minutos) Campaña Porcentaje de Abandono Entrantes Porcentaje de abandono de llamadas entrantes por campaña. (Últimos 15 minutos) Campaña Porcentaje de Abandono Salientes Porcentaje de abandono de llamadas salientes por campaña. (Últimos 15 minutos) Campaña Llamadas en ACD Total de llamadas en el ACD esperando agente Campaña Nivel de Servicio Porcentaje de llamadas que fueron atendidas cumpliendo el nivel de servicio configurado Campaña Promedio de tiempo de espera Promedio de tiempo de espera de llamadas entrantes por campaña. (Últimos 15 minutos) Campaña Monitoreo de la Infraestructura De Uso Común OID /Indicator Indicador Descripción Parámetros - - - - Generales OID /Indicator AverageProcessorLoad Average Processor CPU Load Indicador Descripción Promedio Uso de CPUs Promedio de utilizacion de CPUs en el último minuto Máximo Uso de CPUs Máximo de utilización de los CPUs en el último minuto Tamaño de DB Espacio utilizado por la BD especificada en MBs Porcentaje libre espacio en disco Mínimo porcentaje de espacio libre en los discos de un servidor. Puede especificarse una única unidad en vez del mínimo de todas las unidades Porcentaje de memoria física utilizada en el host Porcentaje de memoria física utilizada en el host Respuesta del Host Devuelve true si el host especificado responde dentro del MaximumProcessorLoad Maximum Processor CPU Load DBSpaceUtilized DB Space Utilized FreeDiskSpacePercent Free Disk Space Percent PhysicalMemoryUtilizedPercent Physical Memory Utilized Percent Ping Parámetros tiempo especificado Host response SystemUpTime System running Time AsteriskUpTime Asterisk running time Tiempo desde inicio del host Cantidad de ticks desde que se inició el sistema Tiempo de inicio servicio asterisk Tiempo que lleva corriendo el servicio AsteriskACDService Memoria usada por proceso Toral de memoria que está utilizando el proceso especificado (en KB) ProcessUtilizedMemory Memory used by Process Licencias OID /Indicator Indicador Descripción Available agent licenses Licencias de Agente Disponibles Licencias de agente simultáneas disponibles - Available Supervisor licenses Licencias de upervisor Disponibles Licencias de Supervisor simultáneas disponibles - Available Administrador licenses Licencias de Administrador Disponibles Licencias de Administrador simultáneas disponibles - Days to expire license Días para vencimiento Licencias Días restantes para expiración de licencias - Administrador de Usuarios OID /Indicator Logged Users (Guille) Indicador Descripción Usuarios registrados Visualiza el total de usuarios registrados en el sistema Parámetros Motor de Marcación OID /Indicator Indicador Descripción Muestreo outboundengine Dialing Calls outboundengineDialingCalls Outboundengine Current Calls OutboundengineCurrentCalls Outboundengine Connected Calls OutboundengineConnectedCalls Llamadas marcándose Motor de Marcación Llamadas actuales Motor de Marcación Llamadas conectadas Motor de Marcación Outboundengine Automatic Attentions In Process Atenciones automáticas Motor de outboundengineAutomaticAttentionsInProcess Marcación Outboundengine Awaiting Agent calls outboundengineAwaitingAgent Cantidad de llamadas que está haciendo en este momento (marcando) Cantidad de llamadas ya conectadas y las que están marcándose Cantidad de llamadas conectadas Cantidad de atenciones automáticas en proceso Llamadas esperando agente Motor de Marcación Cantidad de llamadas predictive/progressive esperando por agente Contactos procesados Motor de Marcación Cantidad de contactos siendo procesados por el motor, tanto los que están en espera como los que están en proceso de conexión (no es lo mismo que proceso automatico las peticiones q tiene "trancadas" digamos las q mando ejecutar y aun no termino Outboundengine Loaded Contacts outboundengineLoadedContacts Parámetros Web Handler OID /Indicator Indicador Descripción Maximum Number Of Requests to Web Handler Máximo Número de Máximo Número de solicitudes al Servicio solicitudes al Servicio MaximumNumberOfRequestsWebHandler WEB WEB Number Of Web Handler Lua VirtualMachines NumberOfLuaVirtualMachinesWebHandler Private Memory Used by Web Handler MemoryPrivateUsageWebHandler Number Of Web Handler Sessions NumberOfSessionWebHandler Maximum Number Of Requests to Web Handler MaximumNumberOfRequestsWebHandler Maximum Number Of Running Requests to Web Handler MaximumNumberOfRunningRequestsWebHandler Maximum Number Of Threads Processing in Web Handler MaximumNumberOfThreadsProcessingWebHandler Paging file memory used by Web Handler MemoryPagefileUsageWebHandler Número de máquinas virtuales LUA del Servicio WEB Numero de máquinas virtuales de LUA del Servicio WEB Memoria privada usada por el Servicio WEB Memoria privada usada por el Servicio WEB Número de sesiones del Servicio WEB Número de sesiones del Servicio WEB Máximo número de solicitudes hacia el Servicio WEB Máximo número de solicitudes hacia el Servicio WEB Máximo número de solicitudes procesándose en el Servicio WEB Máximo número de solicitudes procesándose en el Servicio WEB Máximo número de hilos procesándose en el Servicio WEB Máximo número de hilos procesándose en el Servicio WEB Uso del archivo de paginación por el Servicio WEB Uso del archivo de paginación por el Servicio WEB Peak paging file memory used by the Web Service Pico del uso del archivo paginación MemoryPeakPagefileUsageWebHandler por el Servicio WEB Peak working size memory used by the Web Service MemoryPeakWorkingSetSizeWebHandler Pico del área de trabajo usada por el Servicio WEB Pico del uso del archivo paginación por el Servicio WEB Pico del área de trabajo usada por el Servicio WEB Parámetros Quota of no paged memory used by the Web Service Cuota de memoria no paginada usada por Servicio WEB Cuota de memoria no paginada usada por Servicio WEB Quota of paged memory used by the Web Service Cuota de Memoria Paginada usada por MemoryQuotaPagedPoolUsageWebHandler Servicio WEB Cuota de Memoria Paginada usada por Servicio WEB MemoryQuotaNonPagedPoolUsageWebHandler (No se …) MemoryQuotaPeakPagedPoolUsageWebHandler Peak of paged memory used by the Web Service MemoryQuotaPeakPagedPoolUsageWebHandler Used memory of all Web Handler sessions Pico de cuota de memoria no paginada usada por Servicio WEB Pico de cuota de memoria no paginada usada por Servicio WEB Pico de memoria paginada usada por Servicio WEB Pico de memoria paginada usada por Servicio WEB Uso de memoria de todas las sesiones de Servicio WEB Uso de memoria de todas las sesiones de Servicio WEB Tamaño del espacio de trabajo del Servicio WEB Tamaño del espacio de trabajo del Servicio WEB Numero de buffers en uso del Servicio WEB Numero de buffers en uso del Servicio WEB Número de buffers del Servicio WEB Número de buffers del Servicio WEB Número de pedidos retrasados del Servicio WEB Número de pedidos retrasados del Servicio WEB Número de solicitudes pendientes del Servicio WEB Número de solicitudes pendientes del Servicio WEB Número de sockets en uso en el Servicio Número de sockets en uso en el Servicio MemoryUsageOfAllSessionsWebHandler Memory working set size of WebHandler MemoryWorkingSetSizeWebHandler Number Of Web Handler used Buffers NumberOfBuffersInUseWebHandler Number Of Web Handler Buffers NumberOfBuffersWebHandler Number Of Web Handler Delayed Requests NumberOfDelayedRequestsWebHandler Number Of Web Handler Pending Requests NumberOfPendingRequestsWebHandler Number Of Used Sockets In Web Handler NumberOfSocketsInUseWebHandler Number Of Web Handler Sockets NumberOfSocketsWebHandler Number Of Web Handler Processing Threads WEB WEB Numero de sockets en el Servicio WEB Numero de sockets en el Servicio WEB Numero de hilos procesándose en el Servicio WEB Numero de hilos procesándose en el Servicio WEB Numero de hilos en el Servicio WEB Numero de hilos en el Servicio WEB Número de pedidos al Servicio WEB Número de pedidos al Servicio WEB Solicitudes vencidas en Servicio WEB Solicitudes vencidas en Servicio WEB Total de memoria usada por máquinas virtuales en el Servicio WEB Total de memoria usada por máquinas virtuales en el Servicio WEB NumberOfThreadsProcessingWebHandler Number Of Web Handler Threads NumberOfThreadsWebHandler Number Of Request to Web Handler RunningRequestsWebHandler Timed out requests in Web Handler TimedOutRequestsWebHandler Total used memory by virtual machines in Web Handler TotalMemoryOfVirtualMachinesWebHandler Asterisk OID /Indicator Asterisk ic Recording Calls asteriskicRecordedCalls Asterisk ic Spied Calls asteriskicSpiedCalls Indicador Descripción Llamadas grabándose Cantidad de llamadas que estan siendo grabadas en la Asterisk Llamadas espiándose Cantidad de llamadas espiadas usando InconcertChanSpy Llamadas retenidas Cantidad de llamadas que estan parkeadas (en tkParkApp) Asterisk ic Parked Calls asteriskicParkedCalls Parámetros Asterisk ic Active Calls asteriskicActiveCalls Asterisk ic processing Voicemails asteriskicVoicemails Asterisk ic Supervisor Spies asteriskicStreamedSpies Asterisk ic Streamed Recordings Llamadas activas Cantidad de llamadas activas en la PBX Mensajes de voz procesados Cantidad de mensajes de voz procesados por el sistema Llamadas monitoreadas Cantidad de llamadas monitoreadas por supervisores Grabaciones escuchadas Cantidad de grabaciones siendo escuchadas Falla inicio servicio asterisk Falla al iniciar el servicio inConcert AsteriskACDService Servicio de asterisk detenido El servicio inConcert AsteriskACDService se detuvo Falla en troncal E1 Falla en un troncal E1 Falla conexión con servidor Falla de conexión PBX con el servidor Servicio asterisk reinició Se reinició el inConcert Asterisk ACD Service asteriskicStreamedRecordings Asterisk ic service Loading Error asteriskicserviceLoadingError Asterisk ic service Stopping asteriskicserviceStopping Asterisk ic Trunk Down asteriskicTrunkDown Asterisk ic Connection Failed asteriskicConnectionFailed Asterisk ic Service Restarted asteriskicServerRestarted Asterisk ic Voicemail Failed asteriskicVoicemailFailed Falla en mensaje de voz Ocurrio un error en inconcert procesando un mensaje de voz ¿Qué ES LO QUE FALLA? APENDICE B - EJEMPLOS DE INDICADORES CUSTOM Indicador de BD: Supongamos que tenemos una BD llamada DBSales, a la que puede acceder el usuario "auditor" para monitorear las ventas por hora que realizan los empleados. (*) Las ventas se registran en la tabla llamada Sales bajo el esquema: IdSale SalesmanId Date Ammount Se quiere definir un indicador que permita monitorear las ventas por hora de un empleado. Para esto creamos el siguiente indicador de BD: Obsérvese que se está ingresando directamente la consulta contra el servidor SQL: Select sum (ammount) as total from sales where salesmanid = ´%1´ and datediff (hour,date,getdate()) <1 Pero también se podría realizar la ejecución de un store procedure mediante la sentencia “Call” Luego de definido el indicador, se deberá crear un atributo que lo utilice. En nuestro ejemplo, dicho Atributo Monitoreable deberá pasar como parámetro el id del vendedor que se requiere monitorear el cual sustituirá al valor „%1‟ de la consulta SQL. Nota (*): El acceso ODBC deberá estar creado previamente para tenerlo disponible en el combo “Source”. Indicador de Script: Supongamos que se tiene una máquina corriendo un proceso que realiza un largo trabajo en batch, y cuando termina, guarda los resultados generados en un archivo, con ruta y nombre configurable pero cuyo sufijo es el año_mes_dia en que termino el proceso. Por ejemplo: c:\resultados_2010_04_12 Es posible crear un script de LUA, que cada cierto tiempo (5 minutos por ejemplo), verifique la existencia de dicho archivo. Se le pasará como parámetro el sufijo del nombre, mientras que la parte variable la formará usando la fecha actual. Local script = [[ local filename = “%1” .. “_” .. os.date(“%Y_%m_%d”) return io.open(filename)~=nil ]] local result, ret=RemoteExecution(Action.Host,5555,”ExecuteScript”,{script}) if ret == “true” then return 1 else return 0 Este script correrá remotamente el script de verificación, y podrá determinar si existe el archivo buscado, en cuyo caso devolverá 1, y en caso contrario 0. Luego, es posible crear Atributos que utilicen el script, y definir alarmas con acciones que por ejemplo, notifiquen a algún responsable de la terminación del proceso, o que copien el archivo y lo envíen por mail, etc. APENDICE C - COMO AGREGAR UN NUEVO MIB A LOS DISPONIBLES DEL SISTEMA Si se desea monitorear un nuevo dispositivo como por ejemplo un router que no esté contemplado en los instalados por defecto: 1 - Se deberá obtener el archivo MIB del mismo, normalmente se incluye con el dispositivo o solicitarlo al proveedor. 2 - Para agregarlo al sistema es necesario copiar el archivo MIB al directorio de mibs del servicio, esto esta en "\\Archivos de Programa\Inconcert\Services\SNMP\MIBs" o el directorio donde se haya instalado inConcert .Esto hay que hacerlo tanto en la maquina donde esta ejecutándose el servicio SiteMonitor como en la maquina donde se está ejecutando el servicio WebHandler (ya que en este ultimo estara la lista de mibs disponibles para la interfaz web). 3 - Luego reiniciar ambos servicios para que se tomen los cambios. APENDICE H - CONFIGURACIÓN DE VENTANAS HISTORICAS DE ATRIBUTOS El intervalo de muestreo como su nombre lo indica define cada cuanto tiempo se hará la medición, digamos por ejemplo cada 10 segundos. Pero aún se debe indicar la extensión temporal del muestreo o ventana histórica. Esto se traduce en la cantidad de muestras que se almacenarán históricamente y por lo tanto la que se podrá visualizar. Un ejemplo: Si se configura una frecuencia de muestreo de 10 segundos y una ventana histórica de 1 hora, se tendrá disponibles los datos de los últimos 60 minutos tomados cada 10 segundos, los datos anteriores ya no estarán disponibles. Ahora bien, normalmente ocurre que cuando se monitorea un atributo se requiere tener un muestreo con alta frecuencia para intentar localizar el preciso momento en que se produce un determinado hecho pero a medida que esas muestras van alejándose del presente esa frecuencia no tiene tanta utilidad ya que el incidente buscado no se produjo. Por lo tanto tampoco tiene sentido guardarlas con esa alta frecuencia de muestreo. Por ello, para el guardado de las muestras históricas se pueden opcionalmente configurar muestreos secundarios con una frecuencia más baja. Un ejemplo: indicamos que un atributo se mida con una frecuencia de digamos 10 segundos y que se guarden las muestras de los últimos 5 minutos. Luego agregamos otra ventana histórica indicando que se guarden los datos de la última hora pero con una frecuencia de muestreo de 1 minuto y finalmente otra ventana de un día con una frecuencia de 1 hora. De esta forma siempre tendremos los últimos 5 minutos con un alto detalle, la última hora con detalle medio y también podremos consultar el último día aunque con una frecuencia baja. El formulario quedará similar al de la siguiente imagen: Obsérvese en la imagen siguiente que el sector derecho dispone de muestras con mayor frecuencia que a medida avanza el tiempo se van promediando y guardando con menor densidad.