Upload
chakray
View
2.035
Download
5
Embed Size (px)
DESCRIPTION
En este documento detallaremos como monitorizar una serie de funcionalidades de OpenBravo ERP expuestos como “Business Services” usando un Service Proxy publicado en WSO2 ESB (WSO2 Enterprise Service Bus) con WSO2 BAM (WSO2 Business Activity Monitor).
Citation preview
w w w . c h a k r a y . c o m
Monitorizar “Business Services”
usando WSO2 ESB y WSO2 BAM Luis Peñarrubia Peñalba En este documento detallaremos como monitorizar una serie de funcionalidades de
OpenBravo ERP expuestos como “Business Services” usando un Service Proxy publicado
en WSO2 ESB (WSO2 Enterprise Service Bus) con WSO2 BAM (WSO2 Business Activity
Monitor).
2
Por Luis Peñarrubia IT Consultant
Monitorizar “Business Services” usando WSO2 ESB y WSO2 BAM
En este documento detallaremos como monitorizar una serie de funcionalidades de
OpenBravo ERP expuestos como “Business Services” usando un Service Proxy
publicado en WSO2 ESB1 (WSO2 Enterprise Service Bus) con WSO2 BAM2 (WSO2
Business Activity Monitor). Hemos divido el artículo en los siguientes puntos:
1. Instalación WSO2 ESB y WSO2 BAM
2. Publicar proxy en WSO2 ESB
3. Integrar WSO2 ESB con WSO2 BAM
4. Invocar proxy publicado en WSO2 ESB
5. Monitorizar en WSO2 BAM
6. Gadgets en WSO2 BAM
1. Instalación WSO2 ESB y WSO2 BAM
Debemos tener instaladas los productos ESB y BAM de WSO2. En este caso hemos
utilizado las versiones ESB 4.8.0 y BAM 2.4.0 sobre un entorno Windows.
1.1. Instalación WSO2 ESB
La instalación WSO2 ESB es muy sencilla, a continuación se detallan los pasos:
1) Descargar WSO2 ESB. Se descargará un zip con todo el contenido.
2) Descomprimir zip descargado, se creará una carpeta wso2esb-4.8.0.
3) Para arrancar el servidor simplemente debemos ejecutar el fichero
wso2server.bat que se encuentra en la carpeta bin.
4) Una vez arrancado el server podemos comprobar que la instalación ha sido
correcta accediendo a la consola de WSO2 ESB desde nuestro navegador:
http://localhost:9443
1 http://wso2.com/products/enterprise-service-bus/ 2 http://wso2.com/products/business-activity-monitor/
3
Por Luis Peñarrubia IT Consultant
El puerto por defecto es el 9443 (en el log que aparece al arrancar el server se
puede comprobar) y el usuario administrador por defecto es admin/admin.
1.2. Instalación WSO2 BAM
La instalación de WSO2 BAM es muy similar a la de WSO2 ESB, con la salvedad que
en un entorno Windows necesitamos tener instalado cygwin3:
1) Descargar Cygwin4 e instalarlo siguiendo el wizard. Debemos realizar la
instalación básica (marcada por defecto) y asegurarnos que se instalan los
paquetes:
net (OpenSSH, tcp_wrapper packages)
Cygwin contiene muchos paquetes, si seleccionamos todos, la
instalación puede llevar bastante tiempo.
2) Una vez instalado cygwin, debemos añadir a la variable de entorno PATH su
directorio bin: C:\cygwin\bin
3) Descargar WSO2 BAM. Se descargará un zip con todo el contenido.
3 https://docs.wso2.org/display/BAM240/FAQ 4 http://cygwin.com/install.html
4
Por Luis Peñarrubia IT Consultant
4) Descomprimir zip descargado, se creará una carpeta wso2 bam.
5) A continuación debemos modificar los puertos de arranque del servidor BAM
para que no se solapen con los del ESB. Para ello debemos modificar la
propiedad offset definida en el fichero wso2bam-
2.4.0/repository/conf/carbon.xml
<!-- Ports offset. This entry will set the value of the ports defined below to the define value + Offset. e.g. Offset=2 and HTTPS port=9443 will set the effective HTTPS port to 9445 --> <Offset>2</Offset>
6) También debemos actualizar los puertos en el fichero wso2bam-
2.4.0/repository/conf/datasources/master-datasources.xml. Hay que sumarles a
los puertos por defecto el offset indicado en el punto anterior.
<datasource> <name>WSO2BAM_CASSANDRA_DATASOURCE</name> <description>The datasource used for Cassandra data</description> <definition type="RDBMS"> <configuration> <url>jdbc:cassandra://localhost:9162/EVENT_KS</url> <username>admin</username> <password>admin</password> </configuration> </definition> </datasource> <datasource> <name>WSO2BAM_UTIL_DATASOURCE</name> <description>The datasource used for BAM utilities, such as message store etc..</description> <definition type="RDBMS"> <configuration> <url>jdbc:cassandra://localhost:9162/BAM_UTIL_KS</url> <username>admin</username> <password>admin</password> </configuration> </definition> </datasource>
7) Para arrancar el servidor simplemente debemos ejecutar el fichero
wso2server.bat que se encuentra en la carpeta bin.
5
Por Luis Peñarrubia IT Consultant
8) Una vez arrancado el server podemos comprobar que la instalación ha sido
correcta accediendo a la consola de WSO2 BAM desde nuestro navegador
http://localhost:9445
El puerto 9445 viene de sumar al puerto por defecto (9443) el offset (en el log
que aparece al arrancar el server se puede comprobar) y el usuario
administrador por defecto es admin/admin.
2. Publicar proxy en WSO2 ESB
2.1. Introducción
En este artículo no entraremos en los detalles de la creación de proxy services en
WSO2 ESB. Crearemos un proxy service que llamaremos proxy_openbravo1_bam a
partir de uno existente proxy_openbravo1 y veremos cómo modificarlo para poder ser
monitorizado posteriormente mediante WSO2 BAM.
El proxy service del que partimos, proxy_openbravo1, hace una petición contra el
DAL (Data Acces Layer) que publica OpenBravo ERP5 y transforma la respuesta
REST6 con mensaje POX de OpenBravo ERP en SOAP7 1.2. No vamos a entrar en la
5 http://www.openbravo.com/ 6 http://es.wikipedia.org/wiki/Representational_State_Transfer 7 http://es.wikipedia.org/wiki/Simple_Object_Access_Protocol
6
Por Luis Peñarrubia IT Consultant
implementación de este proxy service, simplemente nos interesa remarcar dos de las
variables definidas en él que serán las que monitoricemos posteriormente con WSO2
BAM:
-‐ uri.var.OB_DAL: Entidad del DAL que consultamos (ej. Order)
-‐ uri.var.ID: ID del registro de la entidad que consultamos (ej. Order con id 1)
2.2. Crear proxy service
Lo primero que debemos hacer es crear el nuevo proxy service
proxy_openbravo1_bam en WSO2 ESB. Para ello dentro de la pestaña Main
debemos hacer click en Services ! Add ! Proxy Service
En este caso optamos por crear un Custom Proxy. Aparece un wizard de 3 pasos, en
el primer paso simplemente introducimos el nombre que tendrá el proxy service y no
especificamos nada en el resto de pasos. Al finalizar el wizard habremos creado un
nuevo proxy service vacío.
7
Por Luis Peñarrubia IT Consultant
Podemos ver el nuevo proxy service dentro de la pestaña Main haciendo click en
Services ! List
Como hemos mencionado, proxy_openbravo1_bam será una copia de
proxy_openbravo1, para ello copiaremos el Source View de proxy_openbravo1
sobre el Source View de proxy_openbravo1_bam.
Debemos cambiar el name en el Source View que copiamos para que coincida
con el del nuevo proxy service.
8
Por Luis Peñarrubia IT Consultant
3. Integrar WSO2 ESB con WSO2 BAM
Para integrar WSO2 ESB con WSO2 BAM debemos crear un BAM Server Profile. En
este BAM Server Profile es donde definiremos el Stream (información que vamos a
monitorizar) que enlazaremos posteriormente con nuestro proxy service publicado en
WSO2 ESB.
3.1. Crear BAM Server Profile
Dentro de WSO2 ESB, en la pestaña Configure debemos hacer click en BAM Server
Profile. Nos aparecerá la siguiente pantalla donde debemos añadir un profile.
En el profile debemos indicar:
-‐ Nombre del profile.
-‐ El usuario y password de WSO2 BAM (por defecto admin/admin).
-‐ La dirección y puerto donde se levanta Apache Thrift8 (en los logs de arranque
de WSO2 BAM aparece esta información).
8 http://thrift.apache.org/
9
Por Luis Peñarrubia IT Consultant
Además podemos definir Streams asociados al BAM Server Profile. En este caso
vamos a crear el Stream ob1_stream en el que vamos a monitorizar las variables
uri.var.OB_DAL y uri.var.ID definidas en nuestro proxy service y las guardaremos
como S_OB_DAL y S_OB_ID respectivamente.
El campo versión del Stream debe tener el formato X.X.X.
10
Por Luis Peñarrubia IT Consultant
3.2. Enlazar Stream en nuestro proxy service
Una vez definido el Stream en nuestro BAM Server Profile, debemos modificar nuestro
proxy service para añadirle un mediador de tipo BAM. Para ello debemos acceder al
Design View de nuestro proxy service.
Y en el segundo paso del wizard, debemos editar el Define Inline.
Y añadir un mediador de tipo Agent ! BAM
11
Por Luis Peñarrubia IT Consultant
En el mediador BAM debemos especificar el BAM Server Profile y el Stream que
queremos asociar a nuestro proxy service.
Finalmente guardamos los cambios de nuestro proxy service. Si accedemos al Source
Code podemos ver como se ha asociado el Stream.
<bam> <serverProfile name="openbravo1_bam_profile"> <streamConfig name="ob1_stream" version="1.0.1"/> </serverProfile> </bam>
12
Por Luis Peñarrubia IT Consultant
4. Invocar proxy publicado en WSO2 ESB
Una vez hemos asociado el Stream a nuestro proxy service, vamos a realizar diversas
invocaciones de nuestro proxy service para posteriormente monitorizarlas con WSO2
BAM. En este caso para invocar nuestro proxy service vamos a utilizar SoapUI.
En SoapUI debemos crear un nuevo proyecto.
El valor de Initial WSDL lo obtenemos del WSDSL 1.1 de nuestro proxy service.
Una vez creado el proyecto, vamos a crear diferentes request SOAP 1.2. Cada request
realizará una petición de consulta contra una entidad distinta de OpenBravo.
13
Por Luis Peñarrubia IT Consultant
Como se puede ver en la imagen, para este ejemplo hemos creado las request:
-‐ opcrm_activity: consulta a un registro de la entidad opcrm_activity.
-‐ opcrm_opportunities: consulta a un registro de la entidad
opcrm_opportunities.
-‐ opcrm_order: consulta a un registro de la entidad opcrm_order.
-‐ opcrm_product: consulta a un registro de la entidad opcrm_product.
5. Monitorizar en WSO2 BAM
Una vez hemos realizado varias invocaciones de nuestro proxy service, vamos a
monitorizarlas desde WSO2 BAM. Lo primero que vamos a hacer es acceder a la
pestaña Tools y hacer click en Cassandra Explorer ! Explore Cluster
14
Por Luis Peñarrubia IT Consultant
Debemos introducir los datos de conexión a la base de datos Cassandra9 del BAM.
Estos se encuentran definidos en el fichero wso2bam-
2.4.0/repository/conf/datasources/master-datasources.xml. Una vez autenticados nos
aparecerá el listado de Keyspaces.
Dentro de EVENT_KS aparecerá una entrada con el nombre del Stream definido, en
este caso ob1_stream. Si accedemos a la entrada ob1_stream, se muestra un listado
de todas las peticiones que se han monitorizado para el stream. 9 http://cassandra.apache.org/
15
Por Luis Peñarrubia IT Consultant
Si accedemos al detalle de una entrada podemos ver toda la información monitorizada.
Entre ella, las dos variables que hemos definido en el Stream.
16
Por Luis Peñarrubia IT Consultant
6. Gadgets en WSO2 BAM
Finalmente vamos a crear un gadget o gráfico en WSO2 BAM que nos muestre el
número de peticiones que se han realizado por entidad. Es decir, vamos a graficar
cuantas peticiones de las que hemos definido el 4. Invocar proxy publicado en
WSO2 ESB se han realizado por tipo:
-‐ opcrm_activity: consulta a un registro de la entidad opcrm_activity.
-‐ opcrm_opportunities: consulta a un registro de la entidad
opcrm_opportunities.
-‐ opcrm_order: consulta a un registro de la entidad opcrm_order.
-‐ opcrm_product: consulta a un registro de la entidad opcrm_product.
17
Por Luis Peñarrubia IT Consultant
6.1. Añadir Script de Analítica
Lo primero que debemos hacer es crear en la base de datos de WSO2 BAM las tablas
que contendrán dicha información. Para ello vamos a utilizar el siguiente script en
Hive10:
CREATE EXTERNAL TABLE IF NOT EXISTS OpenBravo1Bam (messageID STRING, dalName STRING, dalId STRING) STORED BY 'org.apache.hadoop.hive.cassandra.CassandraStorageHandler' WITH SERDEPROPERTIES ("wso2.carbon.datasource.name" = "WSO2BAM_CASSANDRA_DATASOURCE" , "cassandra.cf.name" = "ob1_stream" , "cassandra.columns.mapping" = ":key, payload_S_OB_DAL, payload_S_OB_ID" ); CREATE EXTERNAL TABLE IF NOT EXISTS OpenBravo1BamSummary (dalName STRING, totalQueriesDone INT) STORED BY "org.wso2.carbon.hadoop.hive.jdbc.storage.JDBCStorageHandler" TBLPROPERTIES ("wso2.carbon.datasource.name" = "WSO2BAM_DATASOURCE", "hive.jdbc.update.on.duplicate" = "true" , "hive.jdbc.primary.key.fields" = "dalName" , "hive.jdbc.table.create.query" = "CREATE TABLE OpenBravo1BamSummary (dalName VARCHAR(100) NOT NULL PRIMARY KEY, totalQueriesDone INT)" ); INSERT OVERWRITE TABLE OpenBravo1BamSummary SELECT bam.dalName, COUNT(bam.dalName) AS totalQueriesDone FROM OpenBravo1Bam bam GROUP BY bam.dalName;
En resumen:
-‐ La primera sentencia crea la tabla OpenBravo1Bam y la rellena con la
información captada en nuestro Stream ob1_stream.
-‐ La segunda sentencia crea la tabla OpenBravo1BamSummary. Esta tabla
será la que contendrá la información que posteriormente grafiquemos.
10 http://hive.apache.org/
18
Por Luis Peñarrubia IT Consultant
-‐ La tercera sentencia inserta en OpenBravo1BamSummary la información de
OpenBravo1Bam agrupada de la forma que necesitamos para nuestro gráfico.
Para ejecutar este script, debemos acceder a la pestaña Main y hacer click en
Analytics ! Add
El editor de script en esta versión de WSO2 BAM es bastante simple, se
recomienda eliminar saltos de línea y tabulaciones en el script.
Una vez introducido el script pulsamos en Ejecutar, validamos que la respuesta es
correcta y finalmente lo guardamos. Al guardar el script nos aparecerá un popup
preguntándonos si queremos programar este script. En este caso vamos a
programarlo para que se ejecute cada hora. De esta forma podremos mostrar en
nuestro gráfico información actualizada cada hora.
19
Por Luis Peñarrubia IT Consultant
6.2. Crear Gadget
A continuación debemos crear el gadget o gráfico. Para ello debemos acceder a la
pestaña Tools y hacer click en Gadget Gen Tool. Nos aparecerá un wizard en el que
debemos definir el gráfico a mostrar.
En el primer paso nos pide los datos del datasource WSO2BAM_DATASOURCE. En
este datasource es donde se encuentra la información a mostrar. Esta información la
podemos obtener del fichero wso2bam-2.4.0/repository/conf/datasources/master-
datasources.xml.
20
Por Luis Peñarrubia IT Consultant
En el segundo paso debemos indicar qué query vamos a mostrar en el gráfico.
Además podemos previsualizar la información que se mostrará.
En el tercer paso debemos indicar el tipo de gráfico, así como sus detalles (datos en
cada eje, título, etc.).
21
Por Luis Peñarrubia IT Consultant
En el cuarto paso debemos introducir el nombre del Gadget así como su frecuencia de
refresco. Al pulsar sobre generar nos mostrará la URL donde se ha generado el
Gadget.
6.3. Añadir Gadget al Dashboard de WSO2 BAM
Para finalizar vamos a añadir el gráfico creado al Dashboard de WSO2 BAM. Para ello
debemos hacer click en el link Go To Dashboard.
22
Por Luis Peñarrubia IT Consultant
Nos aparecerá el Dashboard, desde donde podremos añadir nuestro gráfico pulsando
en Add Gadgets.
Copiamos la URL del gadget en el apartado Add gadget from URL y pulsamos en
Add Gadget.
23
Por Luis Peñarrubia IT Consultant
7. Conclusiones
Hemos detallado el proceso de cómo hacer BAM, es decir, monitorizamos la actividad
realizada sobre las funcionalidades de negocio (OpenBravo ERP) expuestas como
servicios usando WSO2 ESB. Mientras que WSO2 BAM nos da soporte en la
recolección de información de actividad de nuestros servicios, almacenamiento de
grandes volúmenes de información y en la creación de Dashboards para mostrar de
manera dinámica la anterior información recolectada.
Hay que tener en cuenta que hacer BAM es parte de lo que se suele llamar
Inteligencia de Negocio (Business Intelligence) y que no es una actividad que se suele
realizar con una única herramienta. Al contrario, la ventaja de usar WSO2 ESB y
WSO2 BAM, nos permite crear una plataforma adaptable a las necesidades de los
proyectos de Inteligencia de Negocio.
Destaco que el uso de WSO2 ESB y WSO2 BAM nos permite dar el salto rápidamente
a escenarios de aplicación relacionados a Big Data. Recordar que WSO2 BAM incluye
Apache Cassandra y Apache Hive, herramientas fundamentales para el tratamiento de
grandes volúmenes de información.
24
Por Luis Peñarrubia IT Consultant
Autor:
Luis Peñarrubia
IT Consultant
Chakray Consulting
www.chakray.com
• LinkedIn: http://www.linkedin.com/in/luispenarrubia
Twitter: @LuisPenarrubia