24
www.chakray.com 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).

Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

  • 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

Page 1: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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).

Page 2: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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/

Page 3: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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

Page 4: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 5: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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

Page 6: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 7: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 8: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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/

Page 9: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 10: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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

Page 11: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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>

Page 12: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 13: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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

Page 14: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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/

Page 15: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 16: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 17: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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/

Page 18: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 19: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 20: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.).

Page 21: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 22: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 23: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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.

Page 24: Chakray monitorizacion-kpi-service-wso2 esb-wso2bam-20140314 (1)

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