Translations of this page:

Arquitectura de Osmius

 Osmius Arch

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.

Agentes

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.

Arquitectura de un Agente y su relación con el resto de procesos

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.

Agentes Maestros

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:

  • Recibir los Eventos de los Agentes para a su vez reenviarlos por red y protocolo seguro al Servidor Central para su tratamiento.
  • Arrancar y parar los Agentes de Osmius bajo petición del Servidor Central.
  • Procesar las tareas que le llegan del Servidor Central. Para o arranca agentes, actualiza la configuración de tal agente por cambios en los eventos o en las instancias a monitorizar, etc.
  • Monitorizan el Estado de sus Agentes e informan de caídas o mal comportamiento de igual forma en que se monitorizan el resto de instancias.

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.

 Arquitectura de un Agente Maestro y su relación con el resto de procesos de Osmius

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.

Servidor Central

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:

  • Gestor de Mensajes: Recibe los eventos, los correlaciona y los inserta en la Base de Datos actualizando estados de Instancias y Eventos.
  • Gestor de Tareas: Se asegura que la información de la base de datos se envíe a los diferentes ficheros de configuración y las instancias se monitoricen como se está definido por los Administradores de Osmius a través de la Consola.
  • Gestor del Estado de la Infraestructura: Periódicamente comprueba el estado de cada uno de los Agentes Maestros para ver si están ejecutándose acordes a lo que se les ha indicado desde la consola, si están parados y deberían estar ejecutándose o al contrario.
  • Gestor de Minería de Datos: Realiza periódicamente los cálculos de la nota global del sistema y de todas las agregaciones de datos de minería necesarias para su posterior explotación.
  • Gestor de Notificaciones: Hace el seguimiento de quién está subscrito a qué y les envía notificaciones de la manera adecuada (e-mail, SMS, etc).
  • Gestor de descubrimiento automático: Descubre nuevas instancias de cualquier tipo.

 Arquitectura del Servidor Central de Osmius

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

Base de Datos

En la Base de Datos de Osmius se guardan diferentes tipos de Información:

  • Eventos recibidos de los Agentes. Esta información es muy valiosa y adecuadamente explotada nos informa de cómo se comportan las instancias, qué eventos son los más activos, cuándo solemos tener más o menos problemas, en qué servidores tenemos agentes, qué instancias tienen problemas de recursos, etc.
  • Inventario de Instancias. Cuáles son las instancias que monitorizamos por tipo y cuál es la configuración de conexión y de cada evento que queremos monitorizar.
  • Inventario de Servicio. Cómo se organizan las instancias para crear los Servicios con sus ANS. Esto nos permite explotar toda la información de un punto de vista orientado a negocio.
  • Infraestructura. Qué agentes tenemos y dónde. Cómo están definidas las notificaciones y de qué formas podemos avisar.
  • Dataware House. Información histórica de cambios de estado y disponibilidad que junto con todo lo anterior nos permiten crear procesos de Ayuda a la Decisión.

Consola de Gestió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.

 
usuario/arquitectura.txt · Última modificación: 2010/12/22 13:22 (editor externo)
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki