cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Get Metrics via REST

Rafael.Ielo
Architect

Hi All,

 

we're working to get metrics from appdynamics as json format. 

 

We are in SaaS controller.

 

Our script: 

curl -s --user 'customer@customer:password' 'https://customer.saas.appdynamics.com/controller/rest/applications/Middleware/metric-data?rollup=false&metric-path=Application%20Infrastructure%20Performance%7C*%7CIndividual%20Nodes%7C*%7CJMX%7CWeb%20Container%20Runtime%7CThreads%20Hogging%20CPU&time-range-type=BETWEEN_TIMES&start-time=1526443200000&end-time=1526450400108&duration-in-mins=15&output=json'

 

Where is my challenge here: I got all metrics I want (because my rollup=false) 'cause I need all collections. But, when I got the response I see this situation:

 

{
"metricName": "Server|Component:33111|JMX|Web Container Runtime|Threads Hogging CPU",
"metricId": 41065330,
"metricPath": "Application Infrastructure Performance|Pague_Aqui_OSB_M7|Individual Nodes|op2_sc2_305_01|JMX|Web Container Runtime|Threads Hogging CPU",
"frequency": "ONE_MIN",
"metricValues": [
{
"occurrences": 1,
"current": 1,
"min": 1,
"max": 1,
"startTimeInMillis": 1526443200000,
"useRange": true,
"count": 1,
"sum": 1,
"value": 1,
"standardDeviation": 0
},
{
"occurrences": 1,
"current": 1,
"min": 1,
"max": 1,
"startTimeInMillis": 1526443260000,
"useRange": true,
"count": 1,
"sum": 1,
"value": 1,
"standardDeviation": 0
},

I have two collect inside one metric. I should split this. I need two arrays, something like:

{
"metricName": "Server|Component:33111|JMX|Web Container Runtime|Threads Hogging CPU",
"metricId": 41065330,
"metricPath": "Application Infrastructure Performance|Pague_Aqui_OSB_M7|Individual Nodes|op2_sc2_305_01|JMX|Web Container Runtime|Threads Hogging CPU",
"frequency": "ONE_MIN",
"metricValues": [
{
"occurrences": 1,
"current": 1,
"min": 1,
"max": 1,
"startTimeInMillis": 1526443200000,
"useRange": true,
"count": 1,
"sum": 1,
"value": 1,
"standardDeviation": 0
},
{
"metricName": "Server|Component:33111|JMX|Web Container Runtime|Threads Hogging CPU",
"metricId": 41065330,
"metricPath": "Application Infrastructure Performance|Pague_Aqui_OSB_M7|Individual Nodes|op2_sc2_305_01|JMX|Web Container Runtime|Threads Hogging CPU",
"frequency": "ONE_MIN",
"metricValues": [
"occurrences": 1,
"current": 1,
"min": 1,
"max": 1,
"startTimeInMillis": 1526443260000,
"useRange": true,
"count": 1,
"sum": 1,
"value": 1,
"standardDeviation": 0
},

 

Any idea? It is possible?

 

Tks

4 REPLIES 4

Daniel.Odievich
AppDynamics Team (Retired)

The format of Metric API is what you see. You can always convert JSON into form that you desire programmatically



Found something helpful? Click the Accept as Solution button to help others find answers faster.
Liked something? Click the Thumbs Up button.

Hi Daniel,

tks for your reply.

How can I split this ? I know about json output and it is work for me. But my doubt is about how to split this.

Regards,

Hi Rafael,
Appd output remains in nested json (so that number of lines or size of returned data is minimal)
But as Daniel mentioned, you need to programmatically convert nested json and flatten it.

For example: https://www.kaggle.com/jboysen/quick-tutorial-flatten-nested-json-in-pandas

It depends upon how you are consuming...possible in java as well.

Hope it helps.

Regards,
Vaibhav

Hi Vaibhav, really tks for your reply!

 

I've just made using python and pandas to do it :) It's beautiful!

 

Tks again