Execute Analytic Service for specific experiment(s) Prometheus - sonata-nfv/tng-analytics-engine GitHub Wiki

Scope: This functionality is used for realizing an analysis upon the data generated by one or more sdk benchmark experiment(s). This is used when benchmarking data are exposed to Prometheus

REST - API: http://profiler_server_IP_address/profiling_service

POST body parameters

{
	"start": "The datetime the experiment(s) started to be executed. This timestamp should be synchronized (use the same clock with the Prometheus timestamps)",
        "end": "The datetime the experiment(s) stopped to be executed. This timestamp should be synchronized (use the same clock with the Prometheus timestamps)",
        "name": "String with the name of the analytic service",
        "step": "The frequency of getting data from Prometheus. This is an optional field",
	"metrics": "JSONArray. This is an optional field",
        "dimensions": "JSONArray. This is an optional field",
        "metrics-without-dimensions": "JSONArray. This is an optional field",
        "metrics-keyword": "JSONArray. This is an optional field",
}

Some examples are:

See how two specific metrics are related between them:

{
	"start":"2019-03-04T07:30:30.781Z",
	"end":"2019-03-04T17:30:30.781Z",
	"step":"10s",
        "name": "linearRegression",
	"metrics": [mn_mp_output_vdu01_cpu_stats__online_cpus_int{ns_id:"ns-1vnf-ids-suricata",experiment_id:"suricata_performance"}, mn_mp_output_vdu01_networks__eth0__rx_bytes {ns_id:"ns-1vnf-ids-suricata",experiment_id:"suricata_performance"} ]
}

See via a chord diagram how all metrics coming from the ns-1vnf-ids-suricata network service are related between them:

{
	"start":"2019-03-04T07:30:30.781Z",
	"end":"2019-03-04T17:30:30.781Z",
	"step":"10s",
        "name": "chordDiagram",
	"dimensions": [{ns_id:"ns-1vnf-ids-suricata"}]
}

See via a chord diagram how all metrics coming from the ns-1vnf-calibration-stress network service for two specific experiments (cpu_limitation & memory_limitation) are related between them:

{
	"start":"2019-03-04T07:30:30.781Z",
	"end":"2019-03-04T17:30:30.781Z",
	"step":"10s",
        "name": "chordDiagram",
	"dimensions": [{ns_id:"ns-1vnf-calibration-stress",experiment_id:"cpu_limitation"},{ns_id:"ns-1vnf-calibration-stress",experiment_id:"memory_limitation"}]
}

The result of such a call is a JSONArray that contains a set of urls where the end user can see the profiling analysis results.

A response example should be:

[
"http://opencpu_server/ocpu/tmp/x0d8b61dcbe8022/console",
"http://opencpu_server/ocpu/tmp/x0d8b61dcbe8022/files/finaldata.csv",
"http://opencpu_server/ocpu/tmp/x0d8b61dcbe8022/files/metricsCombination.html"
]