Real-time Application Monitoring

8
Real-time Application monitoring Amit Gupta

Transcript of Real-time Application Monitoring

Page 1: Real-time Application Monitoring

Real-time Application monitoring

Amit Gupta

Page 2: Real-time Application Monitoring

Central App Monitoring Platform

• Graphite– Carbon– Whisper– Webapp

• Simple time series data• Highly scalable, optimized for I/O• Queuing/Caching• Capability to club non-persisted metrics with persisted while

returning data for monitoring (Real-time)• Carbon-relay -> Clustering• Works fine for lacs of metrics coming every second• Can work with any client (statd daemon, jmxtrans, yammer etc.

or we can write our own easily) because of simple spec

Page 3: Real-time Application Monitoring

Central App Monitoring Platform• Metrics names recommended to be given in reverse dns format

– Easy to aggregate metrics for multiple servers of a system (eg. com.snapdeal.cams.*)

• Supports both TCP & UDP• Lots of mathematical functions to derive, aggregate, join multiple

metrics• Grafana used for visualization (though graphite also provides UI)• Grafana

– Cutting edge graphs and very easy configuration through GUI– Easily integrates with Graphite APIs– Integrated with elastic search for faster response on graphs– Many more calculations (average, max, min etc.) possible on UI itself

Page 4: Real-time Application Monitoring

Application Metrics – Yammer• Simple Java library• Different kind of Metrics

– Gauge– Counter– Meter– Histogram– Timer– HealthCheck

• Supports both push (configurable frequency) or pull (jmx or http)• Also sends JVM Info by default• Very less overhead on application

– Just instantiate POJOs in between your existing code– All processing in app’s control– No need to write separate code– Pushing via separate thread pool (no impact on app even if server is down)

• Yammer metrics can be exposed as MBeans (for JMX) as well.

Page 5: Real-time Application Monitoring

Application Metrics – Jmxtrans

• What if you want to monitor your existing Mbeans via central monitoring platform (like graphite) or there are 3rd party frameworks already exposing data using JMX

• Use Jmxtrans to integrate with Graphite server• Frequency of pushing can be configured• A separate centralized Jmxtrans App can suffice

for multiple applications (though running as agent in same process also possible)

Page 6: Real-time Application Monitoring

Alerting - Nagios

• Little crude, but flexible & powerful way to alert.

• Client/Server Architecture

Page 7: Real-time Application Monitoring

Architecture Diagram

Page 8: Real-time Application Monitoring

Thank You