public class JMXJsonServlet
extends HttpServlet
This servlet generally will be placed under the /jmx URL for each
HttpServer. It provides read only
access to JMX metrics. The optional qry
parameter
may be used to query only a subset of the JMX Beans. This query
functionality is provided through the
MBeanServer.queryNames(ObjectName, javax.management.QueryExp)
method.
For example http://.../jmx?qry=Hadoop:*
will return
all hadoop metrics exposed through JMX.
The optional get
parameter is used to query an specific
attribute of a JMX bean. The format of the URL is
http://.../jmx?get=MXBeanName::AttributeName
For example
http://../jmx?get=Hadoop:service=NameNode,name=NameNodeInfo::ClusterId
will return the cluster id of the namenode mxbean.
If the qry
or the get
parameter is not formatted
correctly then a 400 BAD REQUEST http response code will be returned.
If a resouce such as a mbean or attribute can not be found, a 404 SC_NOT_FOUND http response code will be returned.
The return format is JSON and in the form
{
"beans" : [
{
"name":"bean-name"
...
}
]
}
The servlet attempts to convert the the JMXBeans into JSON. Each
bean's attributes will be converted to a JSON object member.
If the attribute is a boolean, a number, a string, or an array
it will be converted to the JSON equivalent.
If the value is a CompositeData
then it will be converted
to a JSON object with the keys as the name of the JSON member and
the value is converted following these same rules.
If the value is a TabularData
then it will be converted
to an array of the CompositeData
elements that it contains.
All other objects will be converted to a string and output as such.
The bean's name and modelerType will be returned for all beans.
Optional paramater "callback" should be used to deliver JSONP response.
Modifier and Type | Field and Description |
---|---|
protected JSONBean |
jsonBeanWriter |
protected javax.management.MBeanServer |
mBeanServer
MBean server.
|
Constructor and Description |
---|
JMXJsonServlet() |
Modifier and Type | Method and Description |
---|---|
void |
doGet(HttpServletRequest request,
HttpServletResponse response)
Process a GET request for the specified resource.
|
void |
init()
Initialize this servlet.
|
protected transient javax.management.MBeanServer mBeanServer
protected transient JSONBean jsonBeanWriter
public void init() throws ServletException
ServletException
public void doGet(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException
request
- The servlet request we are processingresponse
- The servlet response we are creatingjava.io.IOException