Nate Cole created AMBARI-3459:
---------------------------------
Summary: Move metrics property definitions to stack
Key: AMBARI-3459
URL: https://issues.apache.org/jira/browse/AMBARI-3459
Project: Ambari
Issue Type: Sub-task
Reporter: Nate Cole
Assignee: Nate Cole
Metrics properties are currently internalized into ganglia_properties(_2).json
and jmx_properties(_2).json. In order to allow authors to define their own,
the following change is proposed:
* Make $SERVICE_HOME/metrics.json (or xml)
* Contents will be similar to existing file
{noformat}
{
"HBASE_MASTER": {
"component" : [
{
"type": "jmx",
“properties”: {
“port”: “60010”
}
"metrics": {
"metrics/rpc/RpcSlowResponse_num_ops": {
"metric":"rpc.rpc.RpcSlowResponse_num_ops",
"pointInTime":true,
"temporal":true
},
"metrics/process/proc_total": {
"metric":"proc_total",
"pointInTime":true,
"temporal":true
}, ...
}
},
{
"type": "ganglia",
“properties”: {
“ganglia_cluster”: “HDPHBaseMaster”
}
"metrics": { ... }
},
{
"type": "org.apache.ambari.server.controller.spi.PropertyProviderImpl",
“properties”: { … }
"metrics": { ... }
}
],
"host": [ ... ]
},
"HBASE_REGIONSERVER": {
}, ...
}
{noformat}
Type is either a known type (jmx, ganglia) or can be a specified class. If
that is the case, then the custom class will be instantiated when it is
required to actually fetch properties. This instantiation can either invoke a
public constructor or check for a static getInstance() method to enable
singleton/factory. The metrics object elements are lifted from the current
files to avoid having to re-design the entire JSON structure.
The properties object elements are name/value pairs that are used by the
provider class. Use case: Each component’s JMX data is fetched from the
server holding the component. Each component uses a different port number. So
the properties for, say, HBASE_REGIONSERVER may be: “port”: “60030”, and for
HBASE_MASTER: “port”: “60010”. Each provider understands what to do with its
own properties.
--
This message was sent by Atlassian JIRA
(v6.1#6144)