Como ya sabemos Osmius monitoriza las Instancias de nuestra instalación preguntando periódicamente por unos Tipos de Evento. Una vez los eventos se reciben en el Servidor Central son correlacionados y se actualizan los estados de las Instancias y de los Servicios.
Veamos cuáles son los elementos que sustentan todo este proceso.
Son los encargados de ejecutar periódicamente las acciones asociadas a cada Tipo de Evento. Son ellos los que saben cómo recoger el porcentaje de uso de CPU en un Linux o el número de usuarios conectados a una Base de Datos.
En Osmius un agente es especialista en recoger eventos de un único tipo de Instancia. Tendremos así agentes para instancias de tipo Oracle o Windows o Valores en Bolsa que normalmente utilizarán las API proporcionadas por los diferentes fabricantes de cada tipo de instancia. Los agentes de Osmius están construidos en C++ y utilizan el FrameWork ACE (ADAPTIVE Communication Environment) además del Framework propio de Osmius que nos permite reutilizar casi todo el ćodigo cuando creamos un nuevo agente, de forma que podamos centrarnos en la recolección de los nuevos tipos de eventos necesarios.
Cada agente, al ser arrancado, lee su fichero de configuración, lo parsea y comienza a monitorizar las instancias que encuentre definidas. Por cada instancia definida en su fichero de configuración lee los eventos configurados, y sus valores y periodos de ejecución, y comienza a monitorizar. Cada vez que lee un nuevo valor y un texto para un tipo de evento para una instancia específica, se compone un evento que será enviado a su agente maestro.
Un fichero de configuración de un agente de Linux tiene el siguiente aspecto:
[OSMIUS_AGENT]
#Use Error event criticity when no connection occurs instead of Critical. [0-Use ERRCON = 0 #Local Port for listening to commands from Master Agent PORTCM = 11982 #Timeout in seconds for network operations. Don't change TIMOUT = 130
[OSMIUS_INSTANCES\OSM_Host]
# Instance Type TYPE = LINUX001 # Connection string used by the agent to connect to the instance CONNECTION_INFO = No [OSMIUS_INSTANCES\OSM_Host\EVENTS] OSNUMPRC = -t 3600 -c 0 -w 300 -a 500 -T "" OSPRCCPU = -t 300 -c 0 -w 80 -a 95 -T "" OSPRCMEM = -t 600 -c 0 -w 80 -a 90 -T "" OSPRCSWP = -t 3600 -c 0 -w 10 -a 30 -T "" -s OSPRCUFS = -t 3600 -c 0 -w 80 -a 95 -T "" -s -L "/" OSUPTIME = -t 300 -c 1 -w 500 -a 300 -T ""''
La primera parte hace referencia a parámetros genéricos del agente (como TIMOUT = 130 que es el tiempo de espera para las operaciones de red), y en la segunda podemos ver la configuración para una instancia de nombre OSM_Host, tipo de instancia LINUX001.
Después aparecen los tipos de evento configurados para su monitorización. Por ejemplo vemos que el porcentaje de CPU (OSPRCCPU) se está monitorizando cada 5 minutos (-t 300), y que recibiremos un warning si es mayor que 80 (-w 80) y una alarma crítica si es mayor que 95 (-a 95).
Los agentes de Osmius pueden funcionar de manera separada del conjunto de Osmius, es decir sin un agente maestro al que enviar los eventos. En este modo “Stand Alone” podemos configurarlos para que envíen los eventos utilizando un script que a su vez puede enviar un correo electŕonico o conectarse con otro Sistema de Monitorización.
Podéis encontrar los manuales completos de los agentes de Osmius aqui.
Cada Agente Maestro se encarga de controlar y gestionar un conjunto de Agentes Osmius dentro de su mismo servidor.
Los Agentes Maestros son los encargados de:
Básicamente los Agentes Maestros se encargan y concentran todas las tareas administrativas para mantener nuestra infraestructura de monitorización. De esta forma los Agentes se dedican a lo que se tienen que dedicar: “Monitorizar Instancias y enviar eventos”, y es mucho más fácil y flexible gestionar grandes infraestructuras.
Es verdad que con un Agente Maestro y una selección de Agentes Osmius podemos monitorizar muchas instancias en remoto, pero habrá casos en que nos interese monitorizar desde muchos sitios o tener agentes instalados “in-situ” en cada servidor.
El fichero de configuración de un Agente Maestro tiene el siguiente aspecto:
[OSMIUS_MASTER_AGENT]
#Master Agent Unique Code CODMST = MASTER01 #Osmius server IP IPSRV1 = 127.0.0.1 #Osmius Server Message receiver Port PORTS1 = 2001 #Server IP Address to send Master Agent commands IPSDCM = 192.168.1.2 #Server Port Address to send Master Agent commands PORSCM = 2002 #Master Host IP used to accept commands IPADCM = 127.0.0.1 #Master Port used to accept commands from the Central Server PORTCM = 1971 #Master Port used to accept background commands from the Central Server PORTBK = 1972 #Master Port used to receive messages and events from our agents PORTAG = 1950 #Max queue size parameter in MBytes (minimun 1 MB) MSGQSI = 1 #Number of minutes to try reconnecting to the server RECONN = 60 #Debug all commands sent to the master agent DEBUGA = 0
[OSMIUS_AGENTS\APACHE01]
# Show debug info 0-No 1-Yes DEBINF = 1 # Start this agent when the master start working 0-No 1-Yes STARTA = 1 # Additional command line if needed ACMDLN =
La primera parte hace referencia a parámetros generales para el Agente Maestro y la segunda especifica parámetros que indican si debe arrancarse o no un Agente o si se debe lanzar en modo depuración.
El Servidor Central es el que recibe los eventos de todos los Agentes de la infraestructura de monitorización que hayamos montado en nuestras instalaciones y además el encargado de enviar las tareas necesarias a los Agentes Maestro para su proceso.
En realidad el Servidor Central está compuesto por un conjunto de procesos:
Estos procesos hacen de interfaz entre la Base de Datos, que se actualiza con la acciones de los usuarios en el Consola, y todas la infraestructura de Agentes Maestros y Agentes Osmius.
El fichero de configuración del Gestor de Mensajes tiene este aspecto:
[OSMIUS_CENTRAL_SERVER]
# IP Address in which listen for incomming messages from Master Agents # If 0.0.0.0 server will listen in all available interfaces. IPMAMS = 192.168.1.2 # Local port in which listen for incomming messages from Master Agents. Default 2001. PORTMS = 2001 # Time out for network and queue operations in seconds. TIMOUT = 120 # Maximum number of retries to connect to server. RECONN = 4 # Osmius Repository Database Parameters. DBUSER = osmius DBPASS = osmius DBPORT = 3306 DBNAME = osmius DBHOST = localhost
El fichero de configuración del Gestor de tareas tiene este aspecto:
[OSMIUS_TASK_MANAGER]
# IP Address used to accept commands. IPSDCM = 192.168.1.2 PORSCM = 2002 # Maximum number of retries to connect to server. RECONN = 4 # Osmius Repository Database Parameters. DBNAME = osmius DBHOST = localhost DBPORT = 3306 DBUSER = osmius DBPASS = osmius # Number of retries to process one task. RETRIS = 50 # Interval Time to process tasks TIMTSK = 10 # Number of tasks to process in one interval NUMTSK = 10 # Print all command sent and received or not DEBUGA = 0
El fichero de configuración del Gestor del estado de la infraestructura y de la minería de datos tiene este aspecto:
[OSMIUS_STATE_MANAGER]
# IP Address of the state manager. IPSTMG = 192.168.1.2 #Osmius server IP IPSRV1 = 192.168.1.2 #Osmius Server Message receiver Port Default 2001 PORTS1 = 2001 # Maximum number of retries to connect to server. RECONN = 4 # Osmius Repository Database Parameters. DBNAME = osmius DBHOST = localhost DBPORT = 3306 DBUSER = osmius DBPASS = osmius # Number of retries to process one task. RETRIS = 50 # Time to Data Warehouse calculations TIMDWH = 300 # Interval Time to calculate global note TIMGLN = 10 # Interval Time to test infrastructure state TIMLIF = 300 # Number of master to process in one test interval NUMLIF = 100 # Print all command sent and received or not DEBUGA = 0
El fichero de configuración del Gestor de notificaciones tiene este aspecto:
[OSMIUS_NOTIFI_MANAGER]
# Maximum number of retries to connect to server. RECONN = 4 # Osmius Repository Database Parameters. DBNAME = osmius DBHOST = localhost DBPORT = 3306 DBUSER = osmius DBPASS = osmius # Number of hours in which a notification is valid. NHOURS = 8 # Interval Time to process notifications TIMNTF = 60 DEBUGA = 0
El fichero de configuración del Gestor de descubrimiento automático de instancias:
[OSMIUS_DISCOVERY_MANAGER]
#Server Unique Code CODSVR = SERVER01 # Osmius Repository Database Parameters. DBNAME = osmius DBHOST = localhost DBPORT = 3306 DBUSER = osmius DBPASS = osmius # Timeout to abort the discovery process TIMOUT = 1800 # Script to search the net finding alive hosts SCANNT = nmap.sh # Print all command sent and received or not DEBUGA = 0
En la Base de Datos de Osmius se guardan diferentes tipos de Información:
Cualquier usuario con un Nagegador (preferiblemente FireFox) y los permisos adecuados puede conectarse a la consola y comenzar a monitorizar y gestionar toda la infraestructura.
La cosola de Osmius es una aplicación Web hecha en Java y basada en varios Frameworks que se ejecuta en un servidor TomCat con conexión a la base de datos. Cuando un usuario cambia la configuración de algún elemento, queda reflejado en la base de datos y si es necesario se generan las tareas que serán procesadas por los procesos del Servidor Central y terminarán quizás cambiando el comportamiento de un agente en un servidor remoto.