You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ambari.apache.org by "Nate Cole (JIRA)" <ji...@apache.org> on 2013/10/04 19:51:43 UTC

[jira] [Created] (AMBARI-3459) Move metrics property definitions to stack

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)