WSO2 Advantage Webinar WSO2 BAM2 Integration with mule esb

Post on 15-May-2015

1.545 views 0 download

Tags:

Transcript of WSO2 Advantage Webinar WSO2 BAM2 Integration with mule esb

WSO2 BAM2 Integration with Mule ESBKasun Weranga Gunathilake

Software Engineer – WSO2 BAM

Why server monitoring?

Analyze all business transactions To find a root cause for a failure Prevent outages with rapid problem identification and resolution Monitor performance and availability of all ESBs Understand resource utilization for tuning and capacity planning

Business Activity Monitoring

“The aggregation, analysis, and presentation of real-time information about activities inside organizations and involving customers and partners.” - Gartner

Aggregation

● Capturing data● Data storage● What data to

capture?

Analysis● Data operations● Building KPIs● Operate on large

amounts of historic data or new data

● Building BI

Presentation

● Visualizing KPIs/BI● Custom Dashboards● Visualization tools● Not just dashboards!

BAM Architecture

Things to Monitor

● Server logs● Server resource consumption● Statistics of services in Mule ESB ● Analyzing business transactions ( by inspecting

payload)

Monitor Server logs

● Mule ESB uses log4j for logging.● A Log4j appender can be used to capture log

events.● Write a custom BAM agent to publish log

events from Mule ESB to BAM.

Monitor Server logs

Custom Agents

● Java SDK provided● Asynchronous & non-blocking● Use Thrift for high performance message

throughput● Due to Thrift, different languages can be

supported● Compatible with CEP/BAM

Log4jAppender

● log4j.appender.LOGEVENT=org.wso2.carbon.mule.log.appender.LogEventAppender

log4j.appender.LOGEVENT.receiverUrl=tcp://localhost:7611

log4j.appender.LOGEVENT.authenticationUrl=ssl://localhost:7711

log4j.appender.LOGEVENT.trustStorePassword=wso2carbon

log4j.appender.LOGEVENT.columnList=%-5p,%d,[%t],%c:,%m%n

log4j.appender.LOGEVENT.userName=admin

log4j.appender.LOGEVENT.password=admin

log4j.appender.LOGEVENT.processingLimit=1000

log4j.appender.LOGEVENT.maxTolerableConsecutiveFailure=20

● log4j.rootCategory=INFO, console, LOGEVENT

The Analyzer Engine

● Analyzers are based on Easy to learn, SQL like Hive query language

● Runs locally or delegates to Hadoop cluster● Scalable analytics● Cluster can range from a couple of nodes to 1000s

● Analyzers can be scheduled● Supports Polyglot data architecture

Advantage of Using BAM

● Provide central place to analyze all the log information (ex:- logs of ESB cluster).

● Ability to analyze large amount of historical log events

● Efficient way to analyze the root cause for a failure.

Analyze Mule logs

● select logTime, logType, threadName, category, logMessage, logTimestamp from LogCollector where logtype='WARN' and logTimestamp > unix_timestamp('2013-01-06 11:00:00') order by logTimestamp;

Demonstration..

● Configure Mule ESB to send log events to BAM● Analyze logs using BAM

Monitor Business Transactions

● Capture useful information by inspecting payloads

● A Mule ESB interceptor can be used to capture data from payloads

● Write a custom BAM agent to publish captured data from Mule ESB to BAM

Monitor Business Transactions

Mule Interceptor

● Use Bookstore example comes with Mule● Capture order details using Interceptor

<flow name="OrderService">

<http:inbound-endpoint address="http://0.0.0.0:8777/services/order" exchange-pattern="request-response" doc:name="Public order interface"/>

<cxf:jaxws-service serviceClass="org.mule.example.bookstore.OrderService" />

<custom-interceptor class="org.wso2.carbon.mule.interceptor.BAMInterceptor"/>

<component doc:name="Order Service">

<singleton-object class="org.mule.example.bookstore.OrderServiceImpl"/>

</component>

<async>

<vm:outbound-endpoint path="emailNotification" exchange-pattern="one-way" doc:name="Email Notification"/>

<vm:outbound-endpoint path="dataWarehouse" exchange-pattern="one-way" doc:name="Data Warehouse"/>

</async>

</flow>

Analyze and present information

● Hive queries use to analyze the captured data.● Schedule Hive scripts to do the periodic

summarizations.● Gadget gen tool can be used to generate

gadgets and deploy on dashboard.● Plug 3rd party reporting engines to present

information

Demonstration...

● Capture order details from Mule bookstore sample

● Summarize sales against book titles and authors

● Visualize in dashboard

Monitor Server via JMX

● Server resource consumption (CPU, heap/non-heap memory, threads, etc..)

● Statistics of services deployed in Mule ESB

Monitor Server via JMX

● Enable JMX in Mule ESB (can use <jmx-default-config> )

● Configure JMX agent to pull statistics and store in BAM

– Provide the JMX server (Mule ESB)– Select JMX attributes need to monitor– Configure publisher

● Install JMX statistics toolbox in BAM

Monitor Server via JMX

Demonstration

● Monitor server resources (CPU, Memory)● Monitor statistics of order service in Mule ESB

Real time Monitoring of Mule ESB

● Improve Risk Management by rapid problem identifications

● Detect specific business conditions or patterns to enable instantaneous response.

● To take timely business decisions

Real time Monitoring

● Real time analytics via CEP● Based on Siddhi - A high performance complex

event processing engine developed at WSO2

● Can be seamless integrated with BAM to form a complete analytics solution

Real time Monitoring

Demonstration...

● Notify sudden increase in sales● Notify users about unusual system errors

Summary

● Importance of Monitoring the server● BAM architecture● Monitor server logs● Monitor business transactions● Monitor server via JMX● Realtime monitoring via CEP

Questions?

Useful Links....● BAM Docs

http://docs.wso2.org/wiki/display/BAM201

● Setting up JMX agenthttp://docs.wso2.org/wiki/display/BAM210/Setting+Up+JMX+Agent+for+BAM

● Write a custom data-agent http://wso2.org/library/articles/2012/07/creating-custom-agents-publish-events-bamcep

● CEP docs http://docs.wso2.org/wiki/display/CEP201

● Hive query language https://cwiki.apache.org/confluence/display/Hive/LanguageManual

● Mule docs http://www.mulesoft.org/documentation/display/MULE3USER/Using+Interceptors

http://www.mulesoft.org/documentation/display/MULE3USER/JMX+Management