Introductions & Goals

 

I am Robert Chang, a Technical Marketing Engineer (TME) on the Isilon product line.  My team helps our customers and our account SEs understand our technology and help fill in any gaps in any public-facing technical collateral such as whitepapers, blogs, forum posts, and video demos.

 

The goal for this blog is for me to demonstrate making some calls to the OneFS API, so that at the end of this blog, we should all be able to:

  1. Authenticate with the cluster using the OneFS API, and
  2. Make API calls as if we were building our very own InsightIQ product.

 

As you know, InsightIQ’s datastore only stores performance metrics obtained from the cluster.  These performance metrics were obtained by InsightIQ by making API calls to the cluster.  There is NOTHING inside the InsightIQ datastore that we couldn’t get from making direct API calls against the Isilon cluster.  What I’m going to show you at the end of the demo, is a list of 108 unique API calls that InsightIQ makes to obtain ALL of the information that’s in its datastore.

Authentication

 

First, we have to authenticate against the cluster.  For these demos, I’m going to use curl.

There are two simple methods:

  1. Basic username and password authentication, and
  2. Cookie-based authentication.

 

Basic Authentication

Example, we will call the OneFS API and have it “dump” ALL of its current statistics into a file.

curl --insecure -H 'Authorization: Basic cm9vdDphYQ==' -G https://10.245.109.86:8080/platform/1/statistics/current?keys=all > isi-api-platform-statistics-current-keys-all.txt

Notice the highlighted string above.  This is the “HTTP basic authentication” as defined in RFC 2617.  A useful wiki describes the encoding: https://en.wikipedia.org/wiki/Basic_access_authentication

A quick quote from this wiki that explains the encoding:

The Authorization field is constructed as follows:[8]

  • Username and password are combined into a string "username:password". Note that username cannot contain the ":" character.[9]
  • The resulting string is then encoded using the RFC2045-MIME variant of Base64, except not limited to 76 char/line[10]
  • The authorization method and a space i.e. "Basic " is then put before the encoded string.

 

Essentially, I’m providing my root credentials to the OneFS API for authentication.  The username I provided is “root”, and password is “aa”. When the string “root:aa” is encoded as specified in RFC 2617, the authentication string becomes  cm9vdDphYQ==.

The necessary string to provide in the HTTP header is then,

Authorization: Basic <your_encoded_username:password>

 

It is possible to use a non-root account to make OneFS API calls.  A role needs to be created to allow “Platform API” and "Statistics" privileges, then a user assigned to that role.  To do this, in WebUI, go to Access -> Membership & Roles.

 

The screenshot below shows the specific privileges that need to be added to the role.

API-and-Statistics-privs.png

 

Session-Cookie Authentication

The OneFS API also provides a session-cookie authentication.  Let me provide an example of such call, and then illustrate the mechanics behind it.

  1. Create a JSON file containing the user credentials that has the Platform API privilege:

[16:41:58]rchang@USENCHANGR4L4C ~/api-work $ cat auth.json

{

"username":"root",

"password":"aa",

"services":["platform","namespace"]

}

 

This “auth.json” file above contains the username and password of the API-privileged user.  Also for services, “platform” for system configuration (which includes performance statistics), and “namespace” grants file system access.  Please refer to the OneFS API documentation for details (v7.2.1 OneFS API Reference, page 13).

 

     2. Make the API call to the Isilon cluster and get a session cookie

curl -k --insecure -H "Content-Type: application/json" -c cookiefile -X POST -d @auth.json https://10.245.109.86:8080/session/1/session

 

Notice the three important areas in the call, highlighted.  We are telling the server that:

  1. We are about to pass in a JSON file, with -H "Content-Type: application/json"
  2. Store the returned session cookie in a file called cookiefile
  3. Send in the contents of the JSON file (which contains the user credentials) with -d @auth.json

The return response from the server (with verbose on) looks like:

* upload completely sent off: 71 out of 71 bytes

* STATE: DO => DO_DONE handle 0x600057310; line 1322 (connection #0)

* STATE: DO_DONE => WAITPERFORM handle 0x600057310; line 1449 (connection #0)

* STATE: WAITPERFORM => PERFORM handle 0x600057310; line 1459 (connection #0)

* HTTP 1.1 or later with persistent connection, pipelining supported

< HTTP/1.1 201 Created

< Date: Tue, 27 Oct 2015 23:23:42 GMT

* Server Apache/2.2.29 (FreeBSD) mod_ssl/2.2.29 OpenSSL/1.0.1m-fips mod_fastcgi/2.4.6 is not blacklisted

< Server: Apache/2.2.29 (FreeBSD) mod_ssl/2.2.29 OpenSSL/1.0.1m-fips mod_fastcgi/2.4.6

* Added cookie isisessid="fd8217e0-f484-44f6-bc22-9bd3fe1e552e" for domain 10.245.109.86, path /, expire 0

< Set-Cookie: isisessid=fd8217e0-f484-44f6-bc22-9bd3fe1e552e; path=/; HttpOnly; Secure

< Content-Length: 104

< Content-Type: application/json

<

{"services":["platform","namespace"],"timeout_absolute":14400,"timeout_inactive":900,"username":"root"}

* STATE: PERFORM => DONE handle 0x600057310; line 1617 (connection #0)

* Curl_done

* Connection #0 to host 10.245.109.86 left intact

 

Notice the cookie information and its expiration values.  Also the stored session cookie looks like:

[16:24:14]rchang@USENCHANGR4L3C ~ $ cat cookiefile

# Netscape HTTP Cookie File

# http://curl.haxx.se/docs/http-cookies.html

# This file was generated by libcurl! Edit at your own risk.

 

#HttpOnly_10.245.109.86 FALSE   / TRUE    0       isisessid       fd8217e0-f484-44f6-bc22-9bd3fe1e552e

Let’s make a simple API call

 

With the authentication methods out of the way, let us use the session cookie method and make a simple call to the OneFS API.  In this example, we will make an API call to grab some capacity numbers from the “current” stats (as opposed to “history” stats).

 

Request:

curl -k --insecure -b @cookiefile 'https://10.245.109.86:8080/platform/1/statistics/current?key=ifs.bytes.total&key=ifs.ssd.bytes.total&key=ifs.bytes.free&key=ifs.ssd.bytes.free&key=ifs.bytes.avail&key=ifs.ssd.bytes.avail&devid=all'

 

Response (parsed through JSON Lint):

{

    "stats": [

        {

            "devid": 0,

            "error": null,

            "error_code": null,

            "key": "ifs.bytes.avail",

            "time": 1446075693,

            "value": 476550127042560

        },

        {

            "devid": 0,

            "error": null,

            "error_code": null,

            "key": "ifs.bytes.free",

            "time": 1446075693,

            "value": 487515112112128

        },

        {

            "devid": 0,

            "error": null,

            "error_code": null,

            "key": "ifs.bytes.total",

            "time": 1446075693,

            "value": 487817406431232

        },

        {

            "devid": 0,

            "error": null,

            "error_code": null,

            "key": "ifs.ssd.bytes.free",

            "time": 1446075693,

            "value": 4754151620608

        },

        {

            "devid": 0,

            "error": null,

            "error_code": null,

            "key": "ifs.ssd.bytes.total",

            "time": 1446075693,

            "value": 4754421399552

        },

        {

            "devid": 0,

            "error": null,

            "error_code": null,

            "key": "ifs.ssd.bytes.avail",

            "time": 1446075693,

            "value": 4754151620608

        }

    ]

}

 

Notice that in the request, we are querying for the following keys, and for all devid (all nodes):

key=ifs.bytes.total&

key=ifs.ssd.bytes.total&

key=ifs.bytes.free&

key=ifs.ssd.bytes.free&

key=ifs.bytes.avail&

key=ifs.ssd.bytes.avail&

devid=all

 

Also notice that in the return response:

  • devid = 0 (0 means cluster-wide, and not node-specific.  Non-0 denotes a specific node in the cluster, where node 1 is devid 1).
  • key = the performance metric we are querying for
  • time = Unix time / POSIX time / Epoch time of when this particular measurement was taken by the cluster
  • value = value of the metrics we are looking for

In this one simple API call to the cluster, we have just obtained:

  • total cluster capacity in bytes
  • total SSD capacity in bytes (cluster capacity above includes SSD capacity)
  • free cluster capacity in bytes
  • free SSD capacity in bytes
  • available cluster capacity in bytes
  • available SSD capacity in bytes

 

API calls for Capacity, CPU, Network, and Disk

 

Many customers ask us where the metrics they see in InsightIQ come from.  Most are interested in performance metrics relating to cluster capacity, CPU utilization, network latency & throughput, and disk activities. The following are the calls that InsightIQ makes to the OneFS API in these categories.  They can be queried in exactly the same fashion as described in the simple API example above.

Please note that:

  1. Every call to the “/platform/1/statistics/current” APIs do not contain query parameters for &begin and &end time range.
  2. Every call to the “/platform/1/statistics/history” APIs always contain query parameters for &begin and &end POSIX time range.  Example:

curl --insecure -H 'Authorization: Basic cm9vdDphYQ==' -G 'https://10.245.109.86:8080/platform/1/statistics/history?key=node.clientstats.connected.nfs&devid=all&degraded=true&interval=30&memory_only=true&begin=1444172910&end=1444173060'

Capacity

https://10.245.109.85:8080/platform/1/statistics/current?key=ifs.bytes.total&key=ifs.ssd.bytes.total&key=ifs.bytes.free&key=ifs.ssd.bytes.free&key=ifs.bytes.avail&key=ifs.ssd.bytes.avail&devid=all

https://10.245.109.85:8080/platform/1/statistics/current?key=node.ifs.bytes.total&devid=all

https://10.245.109.85:8080/platform/1/statistics/current?key=node.ifs.bytes.total&key=node.ifs.bytes.used&key=node.disk.count&key=node.cpu.count&key=node.uptime&devid=all

 

https://10.245.109.85:8080/platform/1/statistics/history?key=ifs.bytes.avail&key=ifs.bytes.total&key=ifs.bytes.free&key=ifs.ssd.bytes.free&key=ifs.ssd.bytes.avail&key=ifs.ssd.bytes.total&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.ifs.bytes.used.all&key=node.disk.ifs.bytes.total.all&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.bytes.out.rate&key=node.ifs.bytes.in.rate&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.bytes.total&key=node.ifs.ssd.bytes.used&key=node.ifs.ssd.bytes.total&key=node.ifs.bytes.used&devid=all&degraded=true&interval=300&memory_only=true

 

CPU

https://10.245.109.85:8080/platform/1/statistics/history?key=node.cpu.idle.avg&devid=all&degraded=true&interval=30&memory_only=true

 

Network

https://10.245.109.85:8080/platform/1/statistics/current?key=node.net.iface.name.0&key=node.net.iface.name.1&key=node.net.iface.name.2&key=node.net.iface.name.3&key=node net.iface.name.4&key=node.net.iface.name.5&key=node.net.iface.name.6&key=node.net.iface.name.7&key=node.net.iface.name.8&key=node.net.iface.name.9&devid=all

 

https://10.245.109.85:8080/platform/1/statistics/history?key=node.net.ext.packets.in.rate&key=node.net.ext.errors.in.rate&key=node.net.ext.bytes.out.rate&key=node.net.ext.errors.out.rate&key=node.net.ext.bytes.in.rate&key=node.net.ext.packets.out.rate&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.net.iface.bytes.out.rate.0&key=node.net.iface.bytes.out.rate.1&key=node.net.iface.bytes.out.rate.2&key=node.net.iface.bytes.out.rate.3&key=node.net.iface.bytes.out.rate.4&key=node.net.iface.bytes.out.rate.5&key=node.net.iface.bytes.out.rate.6&key=node.net.iface.bytes.out.rate.7&key=node.net.iface.bytes.out.rate.8&key=node.net.iface.bytes.out.rate.9&key=node.net.iface.errors.in.rate.0&key=node.net.iface.errors.in.rate.1&key=node.net.iface.errors.in.rate.2&key=node.net.iface.errors.in.rate.3&key=node.net.iface.errors.in.rate.4&key=node.net.iface.errors.in.rate.5&key=node.net.iface.errors.in.rate.6&key=node.net.iface.errors.in.rate.7&key=node.net.iface.errors.in.rate.8&key=node.net.iface.errors.in.rate.9&key=node.net.iface.errors.out.rate.0&key=node.net.iface.errors.out.rate.1&key=node.net.iface.errors.out.rate.2&key=node.net.iface.errors.out.rate.3&key=node.net.iface.errors.out.rate.4&key=node.net.iface.errors.out.rate.5&key=node.net.iface.errors.out.rate.6&key=node.net.iface.errors.out.rate.7&key=node.net.iface.errors.out.rate.8&key=node.net.iface.errors.out.rate.9&key=node.net.iface.packets.in.rate.0&key=node.ne .iface.packets.in.rate.1&key=node.net.iface.packets.in.rate.2&key=node.net.iface.packets.in.rate.3&key=node.net.iface.packets.in.rate.4&key=node.net.iface.packets.in.rate.5&key=node.net.iface.packets.in.rate.6&key=node.net.iface.packets.in.rate.7&key=node.net.iface.packets.in.rate.8&key=node.net.iface.packets.in.rate.9&key=node.net.iface.bytes.in.rate.0&key=node.net.iface.bytes.in.rate.1&key=node.net.iface.bytes.in.rate.2&key=node.net.iface.bytes.in.rate.3&key=node.net.iface.bytes.in.rate.4&key=node.net.iface.bytes.in.rate.5&key=node.net.iface.bytes.in.rate.6&key=node.net.iface.bytes.in.rate.7&key=node.net.iface.bytes.in.rate.8&key=node.net.iface.bytes.in.rate.9&key=node.net.iface.packets.out.rate.0&key=node.net.iface.packets.out.rate.1&key=node.net.iface.packets.out.rate.2&key=node.net.iface.packets.out.rate.3&key=node.net.iface.packets.out.rate.4&key=node.net.iface.packets.out.rate.5&key=node.net.iface.packets.out.rate.6&key=node.net.iface.packets.out.rate.7&key=node.net.iface.packets.out.rate.8&key=node.net.iface.packets.out.rate.9&devid=all&degraded=true&interval=30&memory_only=true

 

Disk

https://10.245.109.85:8080/platform/1/statistics/current?key=node.disk.count&devid=all

https://10.245.109.85:8080/platform/1/statistics/current?key=node.disk.name.0&key=node.disk.name.1&key=node.disk.name.2&key=node.disk.name.3&key=node.disk.name.4&key=node.disk.name.5&key=node.disk.name.6&key=node.disk.name.7&key=node.disk.name.8&key=node.disk.name.9&key=node.disk.name.10&key=node.disk.name.11&key=node.disk.name.12&key=node.disk.name.13&key=node.disk.name.14&key=node.disk.name.15&key=node.disk.name.16&key=node.disk.name.17&key=node.disk.name.18&key=node.disk.name.19&key=node.disk.name.20&key=node.disk.name.21&key=node.disk.name.22&key=node.disk.name.23&key=node.disk.name.24&key=node.disk.name.25&key=node.disk.name.26&key=node.disk.name.27&key=node.disk.name.28&key=node.disk.name.29&key=node.disk.name.30&key=node.disk.name.31&key=node.disk.name.32&key=node.disk.name.33&key=node.disk.name.34&key=node.disk.name.35&devid=all

https://10.245.109.85:8080/platform/1/statistics/current?key=node.ifs.bytes.total&key=node.ifs.bytes.used&key=node.disk.count&key=node.cpu.count&key=node.uptime&devid=all

 

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.access.latency.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.access.slow.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.busy.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.bytes.in.rate.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.bytes.out.rate.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.ifs.bytes.used.all&key=node.disk.ifs.bytes.total.all&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.iosched.latency.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.iosched.queue.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.xfer.size.in.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.xfer.size.out.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.xfers.in.rate.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.xfers.out.rate.all&devid=all&degraded=true&interval=30&memory_only=true

List of API calls that InsightIQ makes -- all 108 of them

Below is a list of API calls that InsightIQ actually makes to the Isilon cluster using OneFS API. These were obtained by turning on debug logging for the InsightIQ instance, and let it run for a day. Captured logs were filtered for uniqueness with &begin and &end strings removed.

For complete reference of what these APIs do, please refer to OneFS API Info Hub at (https://community.emc.com/docs/DOC-48273), and the OneFS API Reference documentation at (http://www.emc.com/collateral/TechnicalDocument/docu60111.pdf).

 

https://10.245.109.85:8080/platform/1/cluster/config

https://10.245.109.85:8080/platform/1/cluster/identity

https://10.245.109.85:8080/platform/1/cluster/time

https://10.245.109.85:8080/platform/1/dedupe/dedupe-summary

https://10.245.109.85:8080/platform/1/dedupe/reports

https://10.245.109.85:8080/platform/1/fsa/path

https://10.245.109.85:8080/platform/1/fsa/results

https://10.245.109.85:8080/platform/1/job/types

https://10.245.109.85:8080/platform/1/license/licenses

https://10.245.109.85:8080/platform/1/license/licenses/InsightIQ

https://10.245.109.85:8080/platform/1/quota/reports

https://10.245.109.85:8080/platform/1/snapshot/snapshots-summary

https://10.245.109.85:8080/platform/1/statistics/current?key=cluster.health&devid=all

https://10.245.109.85:8080/platform/1/statistics/current?key=ifs.bytes.total&key=ifs.ssd.bytes.total&key=ifs.bytes.free&key=ifs.ssd.bytes.free&key=ifs.bytes.avail&key=ifs.ssd.bytes.avail&devid=all

https://10.245.109.85:8080/platform/1/statistics/current?key=node.disk.count&devid=all

https://10.245.109.85:8080/platform/1/statistics/current?key=node.disk.name.0&key=node.disk.name.1&key=node.disk.name.2&key=node.disk.name.3&key=node.disk.name.4&key=node.disk.name.5&key=node.disk.name.6&key=node.disk.name.7&key=node.disk.name.8&key=node.disk.name.9&key=node.disk.name.10&key=node.disk.name.11&key=node.disk.name.12&key=node.disk.name.13&key=node.disk.name.14&key=node.disk.name.15&key=node.disk.name.16&key=node.disk.name.17&key=node.disk.name.18&key=node.disk.name.19&key=node.disk.name.20&key=node.disk.name.21&key=node.disk.name.22&key=node.disk.name.23&key=node.disk.name.24&key=node.disk.name.25&key=node.disk.name.26&key=node.disk.name.27&key=node.disk.name.28&key=node.disk.name.29&key=node.disk.name.30&key=node.disk.name.31&key=node.disk.name.32&key=node.disk.name.33&key=node.disk.name.34&key=node.disk.name.35&devid=all

https://10.245.109.85:8080/platform/1/statistics/current?key=node.ifs.bytes.total&devid=all

https://10.245.109.85:8080/platform/1/statistics/current?key=node.ifs.bytes.total&key=node.ifs.bytes.used&key=node.disk.count&key=node.cpu.count&key=node.uptime&devid=all

https://10.245.109.85:8080/platform/1/statistics/current?key=node.net.iface.name.0&key=node.net.iface.name.1&key=node.net.iface.name.2&key=node.net.iface.name.3&key=node.net.iface.name.4&key=node.net.iface.name.5&key=node.net.iface.name.6&key=node.net.iface.name.7&key=node.net.iface.name.8&key=node.net.iface.name.9&devid=all

https://10.245.109.85:8080/platform/1/statistics/history?key=cluster.dedupe.estimated.saved.bytes&key=cluster.dedupe.logical.deduplicated.bytes&key=cluster.dedupe.logical.saved.bytes&key=cluster.dedupe.estimated.deduplicated.bytes&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=ifs.bytes.avail&key=ifs.bytes.total&key=ifs.bytes.free&key=ifs.ssd.bytes.free&key=ifs.ssd.bytes.avail&key=ifs.ssd.bytes.total&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.active.ftp&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.active.hdfs&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.active.http&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.active.nfs3&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.active.nfs4&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.active.nlm&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.active.papi&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.active.siq&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.active.smb1&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.active.smb2&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.connected.ftp&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.connected.hdfs&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.connected.http&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.connected.nfs&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.connected.nlm&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.connected.papi&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.connected.siq&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.connected.smb&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.proto.ftp&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.proto.hdfs&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.proto.http&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.proto.nfs3&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.proto.nfs4&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.proto.nlm&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.proto.papi&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.proto.siq&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.proto.smb1&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.clientstats.proto.smb2&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.cpu.idle.avg&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.access.latency.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.access.slow.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.busy.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.bytes.in.rate.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.bytes.out.rate.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.ifs.bytes.used.all&key=node.disk.ifs.bytes.total.all&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.iosched.latency.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.iosched.queue.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.xfer.size.in.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.xfer.size.out.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.xfers.in.rate.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.disk.xfers.out.rate.all&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.bytes.out.rate&key=node.ifs.bytes.in.rate&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.bytes.total&key=node.ifs.ssd.bytes.used&key=node.ifs.ssd.bytes.total&key=node.ifs.bytes.used&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.cache&key=node.ifs.cache.l3.data.read.miss&key=node.ifs.cache.l3.meta.read.hit&key=node.ifs.cache.l3.data.read.hit&key=node.ifs.cache.l3.data.read.start&key=node.ifs.cache.l3.meta.read.start&key=node.ifs.cache.l3.meta.read.miss&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.blocked&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.blocked.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.contended&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.contended.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.deadlocked&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.deadlocked.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.getattr&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.getattr.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.link&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.link.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.lock&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.lock.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.lookup&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.lookup.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.read&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.read.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.rename&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.rename.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.setattr&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.setattr.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.unlink&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.unlink.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.write&devid=all&degraded=true&interval=300&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.ifs.heat.write.total&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.je.num_workers&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.net.ext.packets.in.rate&key=node.net.ext.errors.in.rate&key=node.net.ext.bytes.out.rate&key=node.net.ext.errors.out.rate&key=node.net.ext.bytes.in.rate&key=node.net.ext.packets.out.rate&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.net.iface.bytes.out.rate.0&key=node.net.iface.bytes.out.rate.1&key=node.net.iface.bytes.out.rate.2&key=node.net.iface.bytes.out.rate.3&key=node.net.iface.bytes.out.rate.4&key=node.net.iface.bytes.out.rate.5&key=node.net.iface.bytes.out.rate.6&key=node.net.iface.bytes.out.rate.7&key=node.net.iface.bytes.out.rate.8&key=node.net.iface.bytes.out.rate.9&key=node.net.iface.errors.in.rate.0&key=node.net.iface.errors.in.rate.1&key=node.net.iface.errors.in.rate.2&key=node.net.iface.errors.in.rate.3&key=node.net.iface.errors.in.rate.4&key=node.net.iface.errors.in.rate.5&key=node.net.iface.errors.in.rate.6&key=node.net.iface.errors.in.rate.7&key=node.net.iface.errors.in.rate.8&key=node.net.iface.errors.in.rate.9&key=node.net.iface.errors.out.rate.0&key=node.net.iface.errors.out.rate.1&key=node.net.iface.errors.out.rate.2&key=node.net.iface.errors.out.rate.3&key=node.net.iface.errors.out.rate.4&key=node.net.iface.errors.out.rate.5&key=node.net.iface.errors.out.rate.6&key=node.net.iface.errors.out.rate.7&key=node.net.iface.errors.out.rate.8&key=node.net.iface.errors.out.rate.9&key=node.net.iface.packets.in.rate.0&key=node.net.iface.packets.in.rate.1&key=node.net.iface.packets.in.rate.2&key=node.net.iface.packets.in.rate.3&key=node.net.iface.packets.in.rate.4&key=node.net.iface.packets.in.rate.5&key=node.net.iface.packets.in.rate.6&key=node.net.iface.packets.in.rate.7&key=node.net.iface.packets.in.rate.8&key=node.net.iface.packets.in.rate.9&key=node.net.iface.bytes.in.rate.0&key=node.net.iface.bytes.in.rate.1&key=node.net.iface.bytes.in.rate.2&key=node.net.iface.bytes.in.rate.3&key=node.net.iface.bytes.in.rate.4&key=node.net.iface.bytes.in.rate.5&key=node.net.iface.bytes.in.rate.6&key=node.net.iface.bytes.in.rate.7&key=node.net.iface.bytes.in.rate.8&key=node.net.iface.bytes.in.rate.9&key=node.net.iface.packets.out.rate.0&key=node.net.iface.packets.out.rate.1&key=node.net.iface.packets.out.rate.2&key=node.net.iface.packets.out.rate.3&key=node.net.iface.packets.out.rate.4&key=node.net.iface.packets.out.rate.5&key=node.net.iface.packets.out.rate.6&key=node.net.iface.packets.out.rate.7&key=node.net.iface.packets.out.rate.8&key=node.net.iface.packets.out.rate.9&devid=all&degraded=true&interval=30&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.protostats.ftp&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.protostats.hdfs&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.protostats.http&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.protostats.nfs3&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.protostats.nfs4&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.protostats.nlm&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.protostats.papi&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.protostats.siq&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.protostats.smb1&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/history?key=node.protostats.smb2&devid=all&degraded=true&interval=120&memory_only=true

https://10.245.109.85:8080/platform/1/statistics/keys

https://10.245.109.85:8080/platform/1/statistics/protocols

https://10.245.109.85:8080/platform/1/storagepool/nodepools

https://10.245.109.85:8080/platform/1/storagepool/tiers

https://10.245.109.85:8080/platform/1/storagepool/unprovisioned

  https://10.245.109.85:8080/session/1/session

 

Stay tuned for more API-related information.  We are keen on expanding the adoption of OneFS API and help customers do exciting thing with it.