Last Modified by: Last Modified Date:
Intent-related Metrics
1. Install the metrics app by using either
a. Include "metrics" in the ONOS_APP configuration list for your ONOS cell BEFORE installing and starting the ONOS cluster:
export ONOS_APPS=drivers,openflow,metrics
b. Activate the "metrics" app from the ONOS CLI while ONOS is running:
onos> app activate metrics
2. Perform the intent-related operation that should be measured. For example, install a single intent from the CLI to measure the intent installation latency:
onos> add-point-intent --ethSrc 11:11:11:11:11:11 --ethDst 11:11:11:22:22:22 of:0000000000000001/1 of:0000000000000002/1
3. Use the ONOS CLI to obtain the intent event metrics in human-readable format:
onos> intents-events-metrics Intent Submitted Event Timestamp (ms from epoch)=1414607529207 Intent Submitted Events count=1 rate(events/sec) mean=0.000598 m1=0.000000 m5=0.000016 m15=0.000186 Intent Installed Event Timestamp (ms from epoch)=0 Intent Installed Events count=0 rate(events/sec) mean=0.000000 m1=0.000000 m5=0.000000 m15=0.000000 Intent Withdraw Requested Event Timestamp (ms from epoch)=0 Intent Withdraw Requested Events count=0 rate(events/sec) mean=0.000000 m1=0.000000 m5=0.000000 m15=0.000000 Intent Withdrawn Event Timestamp (ms from epoch)=0 Intent Withdrawn Events count=0 rate(events/sec) mean=0.000000 m1=0.000000 m5=0.000000 m15=0.000000 onos>
4. Use the ONOS CLI to obtain the intent event metrics in JSON format (NOTE: the output is formatted for readability):
onos> intents-events-metrics --json
{
"intentInstalledRate": {
"count": 0,
"m15_rate": 0.0,
"m1_rate": 0.0,
"m5_rate": 0.0,
"mean_rate": 0.0,
"units": "events/second"
},
"intentInstalledTimestamp": {
"value": 0
},
"intentSubmittedRate": {
"count": 1,
"m15_rate": 0.00018520260981402803,
"m1_rate": 3.5506691362264177e-14,
"m5_rate": 1.543657444105269e-05,
"mean_rate": 0.0005956066011497849,
"units": "events/second"
},
"intentSubmittedTimestamp": {
"value": 1414607529207
},
"intentWithdrawRequestedRate": {
"count": 0,
"m15_rate": 0.0,
"m1_rate": 0.0,
"m5_rate": 0.0,
"mean_rate": 0.0,
"units": "events/second"
},
"intentWithdrawRequestedTimestamp": {
"value": 0
},
"intentWithdrawnRate": {
"count": 0,
"m15_rate": 0.0,
"m1_rate": 0.0,
"m5_rate": 0.0,
"mean_rate": 0.0,
"units": "events/second"
},
"intentWithdrawnTimestamp": {
"value": 0
}
}
Output description:
a. For every intent-related event type we collect the event rate and the last event timestamp. In the above example, the intent events are:
- SUBMITTED: intent was submitted for installation
- INSTALLED: intent installation was completed
- WITHDRAW_REQUESTED: intent withdraw request was submitted - not supported yet
- WITNDRAWN: intent withdraw was completed
b. The event rate is measured in number of events per second:
- "count": total number of events received so far
- "mean_rate": the mean rate of the events
- "m1_rate": the event rate for the last one minute
- "m5_rate": the event rate for the last five minutes
- "m15_rate": the event rate for the last fifteen minutes
c. The last event timestamp is measured in system milliseconds since the epoch: 00:00:00 Coordinated Universal Time (UTC), Thursday, 1 January 1970. See http://en.wikipedia.org/wiki/Unix_time+ for details.
5. Additional debug information. You can use the following ONOS CLI command to list the last 100 intent-related events:
onos> onos:intents-events
Event=IntentEvent{time=2014-10-29T11:32:09.205, type=SUBMITTED, subject=PointToPointIntent{id=0x1d285cdd, appId=DefaultApplicationId{id=3, name=org.onlab.onos.cli}, selector=DefaultTrafficSelector{criteria=[ETH_SRC{mac=11:11:11:11:11:11}, ETH_TYPE{ethType=800}, ETH_DST{mac=11:11:11:22:22:22}]}, treatment=DefaultTrafficTreatment{instructions=[]}, ingress=ConnectPoint{elementId=of:0000000000000001, portNumber=3}, egress=ConnectPoint{elementId=of:0000000000000002, portNumber=3}}}
Event=IntentEvent{time=2014-10-29T11:32:09.257, type=FAILED, subject=PointToPointIntent{id=0x1d285cdd, appId=DefaultApplicationId{id=3, name=org.onlab.onos.cli}, selector=DefaultTrafficSelector{criteria=[ETH_SRC{mac=11:11:11:11:11:11}, ETH_TYPE{ethType=800}, ETH_DST{mac=11:11:11:22:22:22}]}, treatment=DefaultTrafficTreatment{instructions=[]}, ingress=ConnectPoint{elementId=of:0000000000000001, portNumber=3}, egress=ConnectPoint{elementId=of:0000000000000002, portNumber=3}}}
onos>
Topology-related Metrics
1. Install the metrics app by using either
a. Include "metrics" in the ONOS_APP configuration list for your ONOS cell BEFORE installing and starting the ONOS cluster:
export ONOS_APPS=drivers,openflow,metrics
b. Activate the "metrics" app from the ONOS CLI while ONOS is running:
onos> app activate metrics
2. Perform the topology-related operation that should be measured. For example, disable a switch port with a link connecting that switch to another one.
3. Use the ONOS CLI to obtain the topology event metrics in human-readable format:
onos> topology-events-metrics Topology Device Event Timestamp (ms from epoch)=1414611704399 Topology Device Events count=9 rate(events/sec) mean=0.028414 m1=0.003795 m5=0.012518 m15=0.007424 Topology Host Event Timestamp (ms from epoch)=0 Topology Host Events count=0 rate(events/sec) mean=0.000000 m1=0.000000 m5=0.000000 m15=0.000000 Topology Link Event Timestamp (ms from epoch)=1414611704399 Topology Link Events count=4 rate(events/sec) mean=0.012628 m1=0.003300 m5=0.006538 m15=0.003476 Topology Graph Event Timestamp (ms from epoch)=1414611704452 Topology Graph Events count=5 rate(events/sec) mean=0.015785 m1=0.001947 m5=0.006857 m15=0.004107 onos>
4. Use the ONOS CLI to obtain the topology event metrics in JSON format (NOTE: the output is formatted for readability):
onos> onos:topology-events-metrics --json
{
"topologyDeviceEventRate": {
"count": 9,
"m15_rate": 0.006145833414538993,
"m1_rate": 0.00022322652468927413,
"m5_rate": 0.007102863189830044,
"mean_rate": 0.018424109971361024,
"units": "events/second"
},
"topologyDeviceEventTimestamp": {
"value": 1414611704399
},
"topologyGraphEventRate": {
"count": 5,
"m15_rate": 0.0033997382707502822,
"m1_rate": 0.00011452856842741324,
"m5_rate": 0.003890745553440407,
"mean_rate": 0.01023557364606096,
"units": "events/second"
},
"topologyGraphEventTimestamp": {
"value": 1414611704452
},
"topologyHostEventRate": {
"count": 0,
"m15_rate": 0.0,
"m1_rate": 0.0,
"m5_rate": 0.0,
"mean_rate": 0.0,
"units": "events/second"
},
"topologyHostEventTimestamp": {
"value": 0
},
"topologyLinkEventRate": {
"count": 4,
"m15_rate": 0.0028776177797310907,
"m1_rate": 0.00019407346386151271,
"m5_rate": 0.0037097236045761767,
"mean_rate": 0.008188471872335748,
"units": "events/second"
},
"topologyLinkEventTimestamp": {
"value": 1414611704399
}
}
Output description:
a. For every topology-related event type we collect the event rate and the last event timestamp. In the above example, the topology events are:
- Device Event: A device (e.g., a switch, including its ports) was added, updated or removed
- Host Event: A host was added, updated or removed
- Link Event: A link was added, updated or removed
- Topology Graph Event: The topology graph was updated because of some graph-related events (device or link event)
b. The event rate is measured in number of events per second:
- "count": total number of events received so far
- "mean_rate": the mean rate of the events
- "m1_rate": the event rate for the last one minute
- "m5_rate": the event rate for the last five minutes
- "m15_rate": the event rate for the last fifteen minutes
c. The last event timestamp is measured in system milliseconds since the epoch: 00:00:00 Coordinated Universal Time (UTC), Thursday, 1 January 1970. See http://en.wikipedia.org/wiki/Unix_time+ for details.
5. Additional debug information. You can use the following ONOS CLI command to list the last 100 topology-related events:
onos> topology-events
Event=DeviceEvent{time=2014-10-29T12:41:44.335, type=PORT_UPDATED, subject=DefaultDevice{id=of:0000000000000001, type=SWITCH, manufacturer=Nicira, Inc., hwVersion=Open vSwitch, swVersion=2.0.2, serialNumber=None}, port=DefaultPort{element=of:0000000000000001, number=3, isEnabled=false}}
Event=DeviceEvent{time=2014-10-29T12:41:44.346, type=PORT_UPDATED, subject=DefaultDevice{id=of:0000000000000002, type=SWITCH, manufacturer=Nicira, Inc., hwVersion=Open vSwitch, swVersion=2.0.2, serialNumber=None}, port=DefaultPort{element=of:0000000000000002, number=3, isEnabled=false}}
Event=LinkEvent{time=2014-10-29T12:41:44.360, type=LINK_REMOVED, subject=DefaultLink{src=ConnectPoint{elementId=of:0000000000000001, portNumber=3}, dst=ConnectPoint{elementId=of:0000000000000002, portNumber=3}, type=DIRECT}}
Event=LinkEvent{time=2014-10-29T12:41:44.389, type=LINK_REMOVED, subject=DefaultLink{src=ConnectPoint{elementId=of:0000000000000002, portNumber=3}, dst=ConnectPoint{elementId=of:0000000000000001, portNumber=3}, type=DIRECT}}
Event=TopologyEvent{time=2014-10-29T12:41:44.450, type=TOPOLOGY_CHANGED, subject=DefaultTopology{time=10468535518752, clusters=2, devices=2, links=0, pathCount=0}}
Reason=LinkEvent{time=2014-10-29T12:41:44.360, type=LINK_REMOVED, subject=DefaultLink{src=ConnectPoint{elementId=of:0000000000000001, portNumber=3}, dst=ConnectPoint{elementId=of:0000000000000002, portNumber=3}, type=DIRECT}}
Reason=LinkEvent{time=2014-10-29T12:41:44.389, type=LINK_REMOVED, subject=DefaultLink{src=ConnectPoint{elementId=of:0000000000000002, portNumber=3}, dst=ConnectPoint{elementId=of:0000000000000001, portNumber=3}, type=DIRECT}}
onos>