Apigee Edge On-Premises Deployment - Monitoring API proxy latency / errors real-time and generating alerts based on SLAs

2 12 2,995

Apigee Edge collects runtime statistics and exposes the data using JMX interface. Edge uses an open-source tool called "metrics" to gather the data and push it to JMX Mbeans.

Following is the list of runtime statistics available today.

1. API Proxy latency with percentiles (75, 95, 98, 99), max, min, mean, median and standard deviation measurements.

2. API Target latency with percentiles (75, 95, 98, 99), max, min, mean, median and standard deviation measurements.

3. API proxy and target latency statistics are available at environment and individual proxy levels.

4. HTTP response code count in Message Processor and Router.

5. API request, response and error count data in Message Processor and Router.

6. JVM heap, GC and thread statistics available for Router, Message Processor and Management Server.

Runtime statistics is grouped under following domains FLOW, CLUSTER, DATASTORE, HTTP, JVM. API proxy data belongs to FLOW domain.

Runtime data can be pushed to application performance management (APM) tools for further analysis and generating alerts based on SLAs.

Apigee Edge provides out of the box integration to open-source performance monitoring tools such as Graphite. Open source tools such as Monit can be used to generate alerts from Graphite based on SLAs.

Any APM tool that has a JMX interface to pull the runtime data can be easily integrated to Apigee Edge for performance monitoring.

Comments
DChiesa
Staff

Terrific! @akinadiyil - what does this mean? "Apigee Edge provides out of the box integration to open-source performance monitoring tools such as Graphite." What's the best way to get data from Apigee JMX counters into Graphite? Are you suggesting JMXTrans? Something else? Or is it truly accomplished automatically, "out of the box" ?

Not applicable

@Dino - Yes, it works out of the box. Message Processor, Router and Management server has a configuration file under "conf" directory called "metrics.properties". Configure carbon server host / port in the property file and specify the data domains (FLOW, CLUSTER, DATASTORE etc) that you would like to see in Graphite. You can configure how frequently the data needs to be pushed to Carbon server as well. Graphite reads data from the carbon server and displays in the UI

Not applicable

Find sample metrics.properties file content for Message Processor below

# These properties control how the metrics from all the servers are pushed

# to various reporting servers

# Controls how often, in seconds, metrics are pushed out

reporting.interval=5

# If set, then the server will push metrics to a Graphite server at the

# following host and port

graphite.host=<host>

graphite.port=2003

graphite.domains = FLOW,ZOOKEEPER,CLUSTER,HTTP

# If set, then the prefix here will be used for Graphite metrics.

# If unset, then the local host name or IP address will be used.

graphite.prefix=MP

sgilson
Participant V

BTW, the Edge Operations Guide has complete instructions on how to monitor Edge components using JMX, and how to set a password to control JMX access.

Stephen

gnanasekaran
Staff

Hi Stephen, Looks like ops guide does not document the metrics name available thro JMX

sgilson
Participant V

Thanks - I can add them.

API-Evangelist
Participant V

I am looking for more information on monitoring tools for apigee.Please suggest.

Also any one integrated with oracle Enterprise Manager 12c??How does it work?

anilsr
Staff

@vinay poreddy , Did you get a change to play with API HEALTH ?

API-Evangelist
Participant V

we use apigee edge on-prem & not in cloud.

API-Evangelist
Participant V

want to see how to leverage JMX with OEM?Is it possible?

anilsr
Staff

You can use API Health as long as your APIs are exposed to public.

david_ryan
Participant V

Wondering if there are any recommendations as to what graphite domains/groups to use for each Apigee component (MS, MP etc). Out of the box it seems like there are too many groups defined and I would like narrow them down so I'm not sending unnecessary metrics to my graphite server.

For example out of the box domains/groups on all my servers were set to:

# Filters the metrics. # Only the metrics with a group[.scope] on this list will be written in the log message # The group name maybe followed by [.scope] or [.*] for all scopes in the group logging.metrics.filter=NIO,NIO.*,HTTP,ZOOKEEPER,CACHE,THREADPOOL.Main,THREADPOOL.Timer

I believe I don't need all of these for the management server, based on what I read in the ops guide.

So for the following components what is the recommended domain/group to use?

MP MS RTR QPID POSTGRES

As a side the ops guides say to set the graphite.domains = FLOW,ZOOKEEPER,CLUSTER but in the file included with the installation logging.metrics.filter has these values. Are these settings one in the same or do I need to add graphite.domains to my configuration.

Version history
Last update:
‎03-27-2015 08:53 AM
Updated by: