[[PageOutline]] == JSON Schemas for Replies to REST API calls == All of these schemas inherit from the [http://unis.incntre.iu.edu/schema/20120709/networkresource UNIS network resource schema] with the exception of the opsconfig schema. * [http://www.gpolab.bbn.com/monitoring/schema/20140828/opsconfig opsconfig]: operational configuration metadata, including locations of and information about other datastores [http://www.gpolab.bbn.com/monitoring/schema/20140828/opsconfig.schema.jwc opsconfig schema with comments] * [http://www.gpolab.bbn.com/monitoring/schema/20140828/aggregate aggregate]: data about an aggregate (including lists of resources and slivers at that aggregate, and where to look for measurements about the aggregate) [http://www.gpolab.bbn.com/monitoring/schema/20140828/aggregate.schema.jwc aggregate schema with comments] * [http://www.gpolab.bbn.com/monitoring/schema/20140828/node node]: data about a node [http://www.gpolab.bbn.com/monitoring/schema/20140828/node.schema.jwc node schema with comments] * [http://www.gpolab.bbn.com/monitoring/schema/20140828/interface interface]: data about a network interface [http://www.gpolab.bbn.com/monitoring/schema/20140828/interface.schema.jwc interface schema with comments] * [http://www.gpolab.bbn.com/monitoring/schema/20140828/interfacevlan interfacevlan]: data about a tagged VLAN subinterface of a network interface [http://www.gpolab.bbn.com/monitoring/schema/20140828/interfacevlan.schema.jwc interfacevlan schema with comments] * [http://www.gpolab.bbn.com/monitoring/schema/20140828/sliver sliver]: data about a sliver at an aggregate [http://www.gpolab.bbn.com/monitoring/schema/20140828/sliver.schema.jwc sliver schema with comments] * [http://www.gpolab.bbn.com/monitoring/schema/20140828/authority authority]: data about a GENI authority [http://www.gpolab.bbn.com/monitoring/schema/20140828/authority.schema.jwc authority schema with comments] * [http://www.gpolab.bbn.com/monitoring/schema/20140828/slice slice]: data about a slice at an authority [http://www.gpolab.bbn.com/monitoring/schema/20140828/slice.schema.jwc slice schema with comments] * [http://www.gpolab.bbn.com/monitoring/schema/20140828/user user]: data about a GENI user at an authority [http://www.gpolab.bbn.com/monitoring/schema/20140828/user.schema.jwc user schema with comments] * [http://www.gpolab.bbn.com/monitoring/schema/20140828/experiment experiment]: data about an operational monitoring experiment for monitoring the dataplane [http://www.gpolab.bbn.com/monitoring/schema/20140828/experiment.schema.jwc experiment schema with comments] * [http://www.gpolab.bbn.com/monitoring/schema/20140828/data data]: data about time-series measurements. Schema based in part on [http://unis.incntre.iu.edu/schema/20120709/metadata] [http://www.gpolab.bbn.com/monitoring/schema/20140828/data.schema.jwc data schema with comments] * For now, we would use the `ops_monitoring` namespace for operations monitoring, meaning: * When we add monitoring-relevant optional properties to objects, we'll put them in an `ops_monitoring` dictionary * When we setup operations monitoring measurements, we'll give them the eventType `ops_monitoring:` === Schema usage example === Some example usages of the above schemas follow. These examples assume the following (fictitious) local datastore URLs. These are arbitrary, and any place they appear, they can be replaced by whatever name the deployers prefer. For simplicitly, we show one local datastore per aggregate here, but the architecture does ''not'' require that --- it would be perfectly fine to have one datastore for relational metadata and one for the data itself, or one for certain types of relational metadata and one for others. * `https://datastore.geni.net/`: datastore containing configuration data for operational monitoring * `https://datastore.instageni.gpolab.bbn.com/`: datastore for gpo-ig aggregate * `https://datastore.ch.geni.net/`: datastore for ch.geni.net authority * `https://datastore.externalchecks.geni.net/`: datastore for external checks in the monitoring framework (e.g. inter-aggregate pings, AM external availability) ==== Data about operational monitoring configuration ==== Operational monitoring configuration data tells collectors where to find local datastores, and includes relevant metadata (like URNs and metadata about datastore or aggregate types) that collectors can use to decide which datastores to query. It is described using [http://www.gpolab.bbn.com/monitoring/schema/20140828/opsconfig# the opsconfig schema]. Examples: * geni-prod: a hypothetical config datastore listing production aggregates and authorities: Example REST call: {{{ https://datastore.geni.net/info/opsconfig/geni-prod }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/opsconfig#", "id": "geni-prod", "selfRef": "https://datastore.geni.net/opsconfigs/geni-prod", "ts": 1391192685740849, "aggregatestores": [ { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm", "amtype": "protogeni", "href": "https://datastore.instageni.gpolab.bbn.com/info/aggregate/gpo-ig" } ], "externalcheckstores": [ { "href": "https://externalcheckstore.gpolab.bbn.com/info/externalcheck/gpo" } ], "authorities": [ { "urn": "urn:publicid:IDN+ch.geni.net+authority+ch", "href": "https://datastore.ch.geni.net/authorities/ch.geni.net" } ], "info": [ { "name": "aggregate", "db_schema": [ ["$schema", "varchar"], ["id", "varchar"], ["selfRef","varchar"], ["urn","varchar"], ["ts","int8"], ["measRef","varchar"] ] }, { "name":"node", "db_schema": [ ["$schema", "varchar"], ["id", "varchar"], ["selfRef","varchar"], ["urn","varchar"], ["ts","int8"], ["properties$mem_total_kb","int8"] ] }, { "name": "link", "db_schema": [ ["$schema", "varchar"], ["id", "varchar"], ["selfRef","varchar"], ["urn","varchar"], ["ts","int8"] ] }, { "name": "sliver", "db_schema": [ ["$schema", "varchar"], ["id", "varchar"], ["selfRef","varchar"], ["urn","varchar"], ["uuid","varchar"], ["ts","int8"], ["aggregate_urn","varchar"], ["aggregate_href","varchar"], ["slice_urn","varchar"], ["slice_uuid","varchar"], ["creator","varchar"], ["created","int8"], ["expires","int8"] ] }, { "name":"interface", "db_schema": [ ["$schema", "varchar"], ["id", "varchar"], ["selfRef","varchar"], ["urn","varchar"], ["ts","int8"], ["address_type","varchar"], ["address_address","varchar"], ["properties$role","varchar"], ["properties$max_bps","int8"], ["properties$max_pps","int8"] ] }, { "name": "interfacevlan", "db_schema": [ ["$schema", "varchar"], ["id", "varchar"], ["selfRef","varchar"], ["urn","varchar"], ["ts","int8"], ["tag","int8"], ["interface_urn","varchar"], ["interface_href","varchar"] ] }, { "name": "slice", "db_schema": [ ["$schema", "varchar"], ["id", "varchar"], ["selfRef","varchar"], ["urn","varchar"], ["uuid","varchar"], ["ts","int8"], ["authority_urn","varchar"], ["authority_href","varchar"], ["created","int8"], ["expires","int8"] ] }, { "name":"user", "db_schema": [ ["$schema", "varchar"], ["id", "varchar"], ["selfRef","varchar"], ["urn","varchar"], ["ts","int8"], ["authority_urn","varchar"], ["authority_href","varchar"], ["fullname","varchar"], ["email","varchar"] ] }, { "name":"authority", "db_schema": [ ["$schema", "varchar"], ["id", "varchar"], ["selfRef","varchar"], ["urn","varchar"], ["ts","int8"] ] }, { "name":"externalcheck", "db_schema": [ ["$schema", "varchar"], ["id", "varchar"], ["selfRef","varchar"], ["ts","int8"], ["measRef","varchar"] ] }, { "name":"experiment", "db_schema": [ ["$schema", "varchar"], ["id", "varchar"], ["selfRef","varchar"], ["ts","int8"], ["slice_urn","varchar"], ["slice_uuid","varchar"], ["source_aggregate_urn","varchar"], ["source_aggregate_href","varchar"], ["destination_aggregate_urn","varchar"], ["destination_aggregate_href","varchar"] ] }, { "name":"opsconfig", "db_schema": [ ["$schema", "varchar"], ["id","varchar"], ["selfRef","varchar"], ["ts","int8"] ] }, { "name":"aggregate_resource", "db_schema" : [ ["id","varchar"], ["aggregate_id","varchar"], ["urn","varchar"], ["selfRef","varchar"] ] }, { "name":"aggregate_sliver", "db_schema" : [ ["id","varchar"], ["aggregate_id","varchar"], ["urn","varchar"], ["selfRef","varchar"] ] }, { "name":"link_interfacevlan", "db_schema" : [ ["id","varchar"], ["link_id","varchar"], ["urn","varchar"], ["selfRef","varchar"] ] }, { "name":"sliver_resource", "db_schema" : [ ["id","varchar"], ["sliver_id","varchar"], ["urn","varchar"], ["selfRef","varchar"] ] }, { "name":"node_interface", "db_schema": [ ["id","varchar"], ["node_id","varchar"], ["urn","varchar"], ["selfRef","varchar"] ] }, { "name":"slice_user", "db_schema": [ ["id","varchar"], ["slice_id","varchar"], ["urn","varchar"], ["role","varchar"], ["selfRef","varchar"] ] }, { "name":"authority_user", "db_schema": [ ["id","varchar"], ["authority_id","varchar"], ["urn","varchar"], ["selfRef","varchar"] ] }, { "name":"authority_slice", "db_schema": [ ["id","varchar"], ["authority_id","varchar"], ["urn","varchar"], ["selfRef","varchar"] ] }, { "name":"opsconfig_aggregate", "db_schema": [ ["id","varchar"], ["opsconfig_id","varchar"], ["amtype","varchar"], ["urn","varchar"], ["selfRef","varchar"] ] }, { "name":"opsconfig_authority", "db_schema": [ ["id","varchar"], ["opsconfig_id","varchar"], ["urn","varchar"], ["selfRef","varchar"] ] }, { "name":"opsconfig_event", "db_schema": [ ["object_type","varchar"], ["name","varchar"], ["id","varchar"], ["ts","varchar"], ["v","varchar"], ["units","varchar"] ] }, { "name":"externalcheck_experiment", "db_schema": [ ["id","varchar"], ["externalcheck_id","varchar"], ["selfRef","varchar"] ] } ], "events": { "node": [ { "name": "cpu_util", "id": "varchar", "ts": "int8", "v": "float4", "units": "percent" }, { "name": "mem_used_kb", "id": "varchar", "ts": "int8", "v": "int8", "units": "kilobytes" }, { "name": "swap_free", "id": "varchar", "ts": "int8", "v": "float4", "units": "percent" }, { "name": "is_available", "id": "varchar", "ts": "int8", "v": "int2", "units": "boolean" }, { "name": "disk_part_max_used", "id": "varchar", "ts": "int8", "v": "float4", "units":"percent" } ], "aggregate": [ { "name": "num_vms_allocated", "id": "varchar", "ts": "int8", "v": "int4", "units": "count" }, { "name": "is_available", "id": "varchar", "ts": "int8", "v": "int2", "units": "boolean" } ], "interface": [ { "name": "rx_bps", "id": "varchar", "ts": "int8", "v":"float4", "units":"bps" }, { "name": "tx_bps", "id": "varchar", "ts": "int8", "v":"float4", "units":"bps" }, { "name":"rx_pps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" }, { "name":"tx_pps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" }, { "name":"rx_eps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" }, { "name":"tx_eps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" }, { "name":"rx_dps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" }, { "name":"tx_dps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" } ], "interfacevlan": [ { "name": "rx_bps", "id": "varchar", "ts": "int8", "v":"float4", "units":"bps" }, { "name": "tx_bps", "id": "varchar", "ts": "int8", "v":"float4", "units":"bps" }, { "name":"rx_pps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" }, { "name":"tx_pps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" }, { "name":"rx_eps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" }, { "name":"tx_eps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" }, { "name":"rx_dps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" }, { "name":"tx_dps", "id": "varchar", "ts": "int8", "v":"float4", "units":"pps" } ], "experiment": [ { "name": "ping_rtt_ms", "id": "varchar", "ts": "int8", "v":"float4", "units":"milliseconds" } ] } } }}} ==== Data about an aggregate ==== Aggregates are indexed by GENI-agreed short name and described using [http://www.gpolab.bbn.com/monitoring/schema/20140828/aggregate# the aggregate schema]. Examples: Example REST call for aggregate gpo-ig: {{{ https://datastore.instageni.gpolab.bbn.com/info/aggregate/gpo-ig }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/aggregate#", "id": "gpo-ig", "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/aggregate/gpo-ig", "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm", "ts": 1391192685740849, "measRef": "https://datastore.instageni.gpolab.bbn.com/data", "monitoring_version": "v2.0", "operational_status": "production", "resources": [ { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc1", "resource_type": "node", "href": "https://datastore.instageni.gpolab.bbn.com/nodes/instageni.gpolab.bbn.com_node_pc1" }, { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc2", "resource_type": "node", "href": "https://datastore.instageni.gpolab.bbn.com/nodes/instageni.gpolab.bbn.com_node_pc2" } ], "slivers": [ { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+sliver+26947", "href": "https://datastore.instageni.gpolab.bbn.com/slivers/instageni.gpolab.bbn.com_sliver_36947" } ] } }}} ==== Data about a node ==== Nodes have an ID which is a URL-sanitized version of their URN and are described using [http://unis.incntre.iu.edu/schema/20140828/node# the node schema]. Examples: Example REST call for GPO-IG node pc1: {{{ https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1 }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/node#", "id": "instageni.gpolab.bbn.com_node_pc1", "ts": 1391192705275101, "selfRef": "https://datastore.instageni.gpolab.bbn.com/nodes/instageni.gpolab.bbn.com_node_pc1", "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc1", "ops_monitoring:mem_total_kb": 50331648, "node_type": "server", "virtualization_type": "xen", "interfaces": [ { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth0", "href": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1%3Aeth0" }, { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth1", "href": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1%3Aeth1" }, { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth2", "href": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1%3Aeth2" }, { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth3", "href": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1%3Aeth3" } ] } }}} ==== Data about a link ==== Links have an ID which is a URL-sanitized version of their URN and are described using [http://www.gpolab.bbn.com/monitoring/schema/20140828/link# the link schema]. Examples: Example REST call for GRNOC link salt_port_1750: {{{ https://datastore.grnoc.iu.edu/info/link/arbitrary_id_001 }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/link#", "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/link/arbitrary_id_001", "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+link+arbitrary_id_001", "ts": 1391194147100678, "id": "arbitrary_id_001", "endpoints": [ { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc2:eth1:1750", "href": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc2:eth1:1750" }, { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth1:1750", "href": "https://datastore.instageni.gpolab.bbn.com/info/interfacevlan/instageni.gpolab.bbn.com_interface_pc1:eth1:1750" } ] } }}} ==== Data about an interface ==== Interfaces have an ID which is a URL-sanitized version of their URN and are described using [http://unis.incntre.iu.edu/schema/20120709/port# the port schema]. Notes: Example REST call for pc1 eth0 (control) at gpo-ig: {{{ https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1:eth0 }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/interface#", "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1:eth0", "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth0", "ts": 1391194147100678, "id": "instageni.gpolab.bbn.com_interface_pc1:eth0", "addresses": [ { "addrtype": "IPv4", "address": "192.1.242.140", "scope": "private" }, { "addrtype": "IPv6", "address": "2001:cdba::3257:9652" } ], "ops_monitoring:role": "control", "ops_monitoring:max_bps": 10000000, "ops_monitoring:max_pps": 1000000 } }}} ==== Data about a slice authority ==== GENI slice authorities are indexed by domain name and described using [http://www.gpolab.bbn.com/monitoring/schema/20140828/authority# the authority schema]. Examples: Example REST call for authority of ch.geni.net: {{{ https://datastore.ch.geni.net/info/authority/ch.geni.net }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/authority#", "id": "ch.geni.net", "selfRef": "https://datastore.ch.geni.net/info/authority/ch.geni.net", "urn": "urn:publicid:IDN+ch.geni.net+authority+ch", "ts": 1391192685740849, "users": [ { "urn": "urn:publicid:IDN+ch.geni.net+user+tupty", "href": "https://datastore.ch.geni.net/info/user/tupty" } ], "slices": [ { "urn": "urn:publicid:IDN+ch.geni.net:gpo-infra+slice+tuptyexclusive", "href": "https://datastore.ch.geni.net/info/slice/ch.geni.net_gpo-infra_slice_tuptyexclusive" } ] } }}} ==== Data about an Interface-VLAN ==== Examples: Example REST call for VLAN 1750 on pc1 eth1: {{{ https://datastore.instageni.gpolab.bbn.com/info/interfacevlan/instageni.gpolab.bbn.com_interface_pc1:eth1:1750 }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/interfacevlan#", "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/interfacevlan/instageni.gpolab.bbn.com_interface_pc1:eth1:1750", "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth1:1750", "ts": 1391194147100678, "id": "instageni.gpolab.bbn.com_interface_pc1:eth1:1750", "tag": 1750, "interface": { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth1", "href": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1:eth1" } } }}} ==== Data about a GENI user ==== GENI users have an ID based on the username and are described using [http://www.gpolab.bbn.com/monitoring/schema/20140828/user# the GENI user schema]. Examples: Example REST call for user tupty at ch.geni.net: {{{ https://datastore.ch.geni.net/info/user/tupty }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/user#", "id": "tupty", "selfRef": "https://datastore.ch.geni.net/info/user/tupty", "urn": "https://datastore.ch.geni.net/info/user/tupty", "ts": 1391192685740849, "authority": { "urn": "urn:publicid:IDN+ch.geni.net+authority+ch", "href": "https://datastore.ch.geni.net/info/authority/ch.geni.net" }, "fullname": "Tim Exampleuser", "email": "tupty@example.com" } }}} ==== Data about a GENI slice ==== GENI slices have an ID based on the URN and are described using [http://www.gpolab.bbn.com/monitoring/schema/20140828/slice# the GENI slice schema]. Examples: Example REST call for tuptyexclusive slice: {{{ https://datastore.ch.geni.net/info/slice/ch.geni.net_gpo-infra_slice_tuptyexclusive }}} {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/slice#", "id": "ch.geni.net_gpo-infra_slice_tuptyexclusive", "selfRef": "https://datastore.ch.geni.net/info/slice/ch.geni.net_gpo-infra_slice_tuptyexclusive", "urn": "urn:publicid:IDN+ch.geni.net:gpo-infra+slice+tuptyexclusive", "uuid": "8c6b97fa-493b-400f-95ee-19accfaf4ae8", "ts": 1391192685740849, "authority": { "urn": "urn:publicid:IDN+ch.geni.net+authority+ch", "href": "https://datastore.ch.geni.net/info/authority/ch.geni.net" }, "created": 1391626683000000, "expires": 1391708989000000, "members": [ { "urn": "urn:publicid:IDN+ch.geni.net+user+tupty", "href": "https://datastore.ch.geni.net/info/users/tupty", "role": "lead" } ] } }}} ==== Data about a GENI sliver ==== GENI sliver have an ID based on the URN and are described using [http://www.gpolab.bbn.com/monitoring/schema/20140828/sliver# the GENI sliver schema]. Examples: Example REST call for tuptyexclusive instageni sliver: {{{ https://datastore.instageni.gpolab.bbn.com/info/sliver/instageni.gpolab.bbn.com_sliver_26947 }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/sliver#", "id": "instageni.gpolab.bbn.com_sliver_26947", "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/sliver/instageni.gpolab.bbn.com_sliver_26947", "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+sliver+26947", "uuid": "30752b06-8ea8-11e3-8d30-000000000000", "ts": 1391192685740849, "aggregate": { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm", "href": "https://datastore.instageni.gpolab.bbn.com/info/aggregate/gpo-ig" }, "slice_urn": "urn:publicid:IDN+ch.geni.net:gpo-infra+slice+tuptyexclusive", "slice_uuid": "8c6b97fa-493b-400f-95ee-19accfaf4ae8", "creator": "urn:publicid:IDN+ch.geni.net+user+tupty", "created": 1391626683000000, "expires": 1391708989000000, "resource": { "resource_type": "node", "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc1", "href": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc1" } } }}} ==== Data about an external check datastore ==== {{{ https://externalcheckstore.gpolab.bbn.com/info/externalcheck/gpo }}} {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/externalcheck#", "id": "gpo", "selfRef": "https://externalcheckstore.gpolab.bbn.com/info/externalcheck/gpo", "ts": 1391192685740849, "measRef": "https://externalcheckstore.gpolab.bbn.com/data", "experiments": [ { "href": "https://externalcheckstore.gpolab.bbn.com/info/experiment/missouri_ig_to_gpo_ig" } ], "monitored_aggregates": [ { "id": "gpo-ig", "href": "https://datastore.instageni.gpolab.bbn.com/info/aggregate/gpo-ig" }, { "id": "rci-eg", "href": "https://rci-hn.exogeni.net/ops-monitoring/info/aggregate/rci-eg" } ] } }}} ==== Data about a monitoring experiment ==== Operational monitoring measures the dataplane with a set of simple tests between aggregates described using [http://www.gpolab.bbn.com/monitoring/schema/20140828/experiment# the operational monitoring experiment schema]. Examples: Example REST call for missouri-ig to gpo-ig experiment: {{{ https://datastore.externalchecks.geni.net/info/experiment/missouri-ig_to_gpo-ig_rtt }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/experiment#", "id": "missouri-ig_to_gpo-ig_rtt", "selfRef": "https://datastore.externalchecks.geni.net/info/experiment/missouri-ig_to_gpo-ig_rtt", "slice_urn": "urn:publicid:IDN+ch.geni.net:gpo-infra+slice+tuptyexclusive", "slice_uuid": "8c6b97fa-493b-400f-95ee-19accfaf4ae8", "ts": 1391192685740849, "source_aggregate": { "urn": "urn:publicid:IDN+instageni.missouri.edu+authority+cm", "href": "https://datastore.instageni.missouri.edu/info/aggregates/missouri-ig" }, "destination_aggregate": { "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm", "href": "https://datastore.instageni.gpolab.bbn.com/info/aggregates/gpo-ig" } } }}} ==== Measurements used for the use cases ==== Measurements have an opaque ID which is generated by the local datastore which serves them, and must be persistent, so that the caller has the option of asking for the measurement by ID. They are described using the data schema outlined above. Examples: Example REST call for CPU utilization metric on pc1: {{{ https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:cpu_util"],"ts":{"gte":0, "lte": 1391199016651285},"obj":{"type":"node","id":["instageni.gpolab.bbn.com_node_pc1"]}}} }}} Response {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#", "id": "cpu_util:instageni.gpolab.bbn.com_node_pc1", "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1", "eventType": "ops_monitoring:cpu_util", "description": "CPU utilization percentage", "units": "percent", "tsdata": [ { "ts": 1391198716651283, "v": 45 }, { "ts": 1391198776651284, "v": 44 }, { "ts": 1391198836651284, "v": 44 }, { "ts": 1391198896651284, "v": 47 }, { "ts": 1391198956651284, "v": 46 }, { "ts": 1391199016651285, "v": 47 } ] } }}} Example REST call for percentage of swap available on pc1: {{{ https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:swap_free"],"ts":{"gt":0,"lt":1391199016651285},"obj":{"type":"node","id":["instageni.gpolab.bbn.com_node_pc1"]}}} }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#", "id": "swap_free:instageni.gpolab.bbn.com_node_pc1", "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1", "eventType": "ops_monitoring:swap_free", "description": "Percentage of swap available", "units": "percent", "tsdata": [ { "ts": 1391198716651283, "v": 95 }, { "ts": 1391198776651284, "v": 95 }, { "ts": 1391198836651284, "v": 95 }, { "ts": 1391198896651284, "v": 95 }, { "ts": 1391198956651284, "v": 95 }, { "ts": 1391199016651285, "v": 95 } ] } }}} Example REST call for memory in active use on pc1: {{{ https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:mem_active_kb"],"ts":{"gte":0, "lt": 1391299016651285},"obj":{"type":"node","id":["instageni.gpolab.bbn.com_node_pc1"]}}} }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#", "id": "mem_active_kb:instageni.gpolab.bbn.com_node_pc1", "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1", "eventType": "ops_monitoring:mem_active_kb", "description": "Memory in active use", "units": "integer", "tsdata": [ { "ts": 1391198716651283, "v": 20030048 }, { "ts": 1391198776651284, "v": 20031148 }, { "ts": 1391198836651284, "v": 20031148 }, { "ts": 1391198896651284, "v": 22222222 }, { "ts": 1391198956651284, "v": 22222222 }, { "ts": 1391199016651285, "v": 22222222 } ] } }}} Example call for bytes per second received by `pc1:eth0`: {{{ https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:rx_bytes"],"ts":{"gte":0, "lte":1391299016651285},"obj":{"type":"interface","id":["instageni.gpolab.bbn.com_node_pc1:eth0"]}}} }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#", "id": "rx_bps:instageni.gpolab.bbn.com_interface_pc1:eth0", "subject": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1:eth0", "eventType": "ops_monitoring:rx_bps", "description": "bytes per second received on this interface", "units": "float", "tsdata": [ { "ts": 1391198716651283, "v": 2453.64 }, { "ts": 1391198776651284, "v": 800.2 }, { "ts": 1391198836651284, "v": 2400.3 }, { "ts": 1391198896651284, "v": 1984.3 }, { "ts": 1391198956651284, "v": 0 }, { "ts": 1391199016651285, "v": 0 } ] } }}} Example REST call for boolean metric indicating whether pc1 is available for use according to the aggregate responsible for it: {{{ https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:is_available"],"ts":{"gte":0, "lte":1391299016651285},"obj":{"type":"node","id":["instageni.gpolab.bbn.com_node_pc1"]}}} }}} Response: {{{ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#", "id": "is_available:instageni.gpolab.bbn.com_node_pc1", "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1", "eventType": "ops_monitoring:is_available", "description": "is the subject node available, according to the aggregate", "units": "boolean", "tsdata": [ { "ts": 1391198716651283, "v": 1 }, { "ts": 1391198776651284, "v": 1 }, { "ts": 1391198836651284, "v": 1 }, { "ts": 1391198896651284, "v": 1 }, { "ts": 1391198956651284, "v": 0 }, { "ts": 1391199016651285, "v": 0 } ] } }}} ==== Bulk Data Queries ==== Queries on multiple eventTypes and object ID's will be presented in a list format. Here is an example query for event types cpu utilization and active memory utilization for nodes pc1 and pc2 of instageni-bbn. Also it is advised to provide timestamp filters with data queries. Here is the format for [wiki:OperationalMonitoring/DatastorePolling#DataQueries timestamp filters] . Example call: {{{ https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:mem_used","ops_monitoring:cpu_util"],"ts":{"gte":1391192225475202,"lt":1391192225480000},"obj":{"type":"node","id":["instageni.gpolab.bbn.com_node_pc1","instageni.gpolab.bbn.com_node_pc2"]}}}} }}} {{{ [ { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#", "id": "cpu_util:instageni.gpolab.bbn.com_node_pc1", "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1", "eventType": "ops_monitoring:cpu_util", "description": "CPU utilization percentage", "units": "percent", "tsdata": [ { "ts": 1391198716651283, "v": 45 }, { "ts": 1391198776651284, "v": 44 }, { "ts": 1391198836651284, "v": 44 }, { "ts": 1391198896651284, "v": 47 }, { "ts": 1391198956651284, "v": 46 }, { "ts": 1391199016651285, "v": 47 } ] } , { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#", "id": "cpu_util:instageni.gpolab.bbn.com_node_pc2", "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc2", "eventType": "ops_monitoring:cpu_util", "description": "CPU utilization percentage", "units": "percent", "tsdata": [ { "ts": 1391198716651283, "v": 45 }, { "ts": 1391198776651284, "v": 48 }, { "ts": 1391198836651284, "v": 45 }, { "ts": 1391198896651284, "v": 49 }, { "ts": 1391198956651284, "v": 50 }, { "ts": 1391199016651285, "v": 51 } ] } , { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#", "id": "mem_active_kb:instageni.gpolab.bbn.com_node_pc1", "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1", "eventType": "ops_monitoring:mem_active_kb", "description": "Memory in active use", "units": "integer", "tsdata": [ { "ts": 1391198716651283, "v": 30030048 }, { "ts": 1391198776651284, "v": 30031148 }, { "ts": 1391198836651284, "v": 30031148 }, { "ts": 1391198896651284, "v": 32222222 }, { "ts": 1391198956651284, "v": 32222222 }, { "ts": 1391199016651285, "v": 32222222 } ] } , { "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#", "id": "mem_active_kb:instageni.gpolab.bbn.com_node_pc2", "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc2", "eventType": "ops_monitoring:mem_active_kb", "description": "Memory in active use", "units": "integer", "tsdata": [ { "ts": 1391198716651283, "v": 20030048 }, { "ts": 1391198776651284, "v": 20031148 }, { "ts": 1391198836651284, "v": 20031148 }, { "ts": 1391198896651284, "v": 22222222 }, { "ts": 1391198956651284, "v": 22222222 }, { "ts": 1391199016651285, "v": 22222222 } ] } ] }}}